Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Session.cpp
Go to the documentation of this file.
1
2
3#include "Headers/Session.h"
4#include "Headers/Server.h"
6#include "Headers/Patch.h"
7
9
13
14namespace Divide
15{
16
17 Session::Session( boost::asio::io_context& io_context, channel& ch )
18 : tcp_session_tpl( io_context, ch )
19 {
20 }
21
23 {
24 switch ( p.opcode() )
25 {
28 break;
31 break;
32 default:
34 break;
35 };
36 }
37
39 {
40 PatchData dataIn;
41 p >> dataIn.sceneName;
42 p >> dataIn.size;
43 ASIO::LOG_PRINT( Util::StringFormat(LOCALE_STR("ASIO_RECEIVE_GEOMETRY_LIST"), dataIn.size ).c_str() );
44 for ( U32 i = 0; i < dataIn.size; i++ )
45 {
46 string name, modelname;
47 p >> name;
48 p >> modelname;
49 dataIn.name.push_back( name );
50 dataIn.modelName.push_back( modelname );
51 }
52
53 if ( !Patch::compareData( dataIn ) )
54 {
56
57 const auto& patchData = Patch::modelData();
58 r << patchData.size();
59 for ( const FileData& dataOut : patchData )
60 {
61 r << dataOut.ItemName;
62 r << dataOut.ModelName;
63 r << dataOut.Orientation.x;
64 r << dataOut.Orientation.y;
65 r << dataOut.Orientation.z;
66 r << dataOut.Position.x;
67 r << dataOut.Position.y;
68 r << dataOut.Position.z;
69 r << dataOut.Scale.x;
70 r << dataOut.Scale.y;
71 r << dataOut.Scale.z;
72 }
73 ASIO::LOG_PRINT( Util::StringFormat(LOCALE_STR("ASIO_SEND_GEOMETRY_APPEND"), patchData.size() ).c_str() );
74
75 sendPacket( r );
77 }
78 }
79
81 {
82 string file;
83 p >> file;
84
85 ASIO::LOG_PRINT( Util::StringFormat(LOCALE_STR("ASIO_SEND_FILE"), file).c_str() );
87 r << (U8)0;
88 sendPacket( r );
89 sendFile( file );
90 }
91
92}; // namespace Divide
#define LOCALE_STR(X)
Definition: Localization.h:91
static void LOG_PRINT(const char *msg, bool error=false)
Definition: ASIO.cpp:123
static constexpr ValueType SMSG_GEOMETRY_APPEND
Definition: OPCodesImpl.h:43
static constexpr ValueType CMSG_GEOMETRY_LIST
Definition: OPCodesImpl.h:42
static constexpr ValueType CMSG_REQUEST_GEOMETRY
Definition: OPCodesImpl.h:44
static const ValueType SMSG_SEND_FILE
Definition: OPCodesTpl.h:19
void HandleGeometryListOpCode(WorldPacket &p)
Definition: Session.cpp:38
void HandleRequestGeometry(WorldPacket &p)
Definition: Session.cpp:80
Session(boost::asio::io_context &io_context, channel &ch)
Definition: Session.cpp:17
void handlePacket(WorldPacket &p) override
Definition: Session.cpp:22
virtual void sendFile(const string &fileName)
virtual void handlePacket(WorldPacket &p)
void sendPacket(const WorldPacket &p) override
bool compareData(const PatchData &data)
Definition: Patch.cpp:17
const vector< FileData > & modelData() noexcept
Definition: Patch.cpp:45
void clearModelData() noexcept
Definition: Patch.cpp:49
Str StringFormat(const char *fmt, Args &&...args)
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
uint8_t U8
uint32_t U32
vector< string > modelName
Definition: Patch.h:48
string sceneName
Definition: Patch.h:49
vector< string > name
Definition: Patch.h:47