00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef SOCKMASTERC_H
00027 #define SOCKMASTERC_H
00028
00029 #include "oaw/pdtk/masterc.h"
00030 #include "oaw/misc/stringc.h"
00031 #include "oaw/misc/arrayc.h"
00032 #include "oaw/pdtk/datdef.h"
00033 #include "oaw/misc/socketc.h"
00034 #include "oaw/misc/timec.h"
00035 #include "../oawconfig.h"
00036
00037 OAW_BEGIN_NAMESPACE
00038
00039 typedef ArrayC<long> LongArrayC;
00040
00042
00043 #define ESOCKMASTERC_LOST_CONNECTION 0
00044 #define ESOCKMASTERC_SYSTEM_ERROR 1
00045
00046 class OAW_DLLMAPPING ESockMasterC{
00047 public:
00048 ESockMasterC(const long& l){m_errorCode=l;}
00049 ESockMasterC(const StringC& s,const long& l){m_errorString=s;}
00050 public:
00051 StringC m_errorString;
00052 long m_errorCode;
00053 };
00054
00056
00057 class OAW_DLLMAPPING SockMasterC: public MasterC
00058 {
00059
00060 public:
00061
00062 SockMasterC();
00063 virtual ~SockMasterC();
00064
00065 void InitByFile(const StringC& fileName);
00066 void BroadcastInitData();
00067 short ProcessEvents(const long&);
00068
00069 protected:
00070 short GetInterface(const char * interfaceName, const char* trobjName, long& id, long & stype);
00071 void AnswerTrObjRequests();
00072 short UpdateSwapLoop();
00073 short LocalUpdateSwapLoop();
00074 void InitReady (long id);
00075 void BroadcastSwap();
00076 void BroadcastStart();
00077 void ReadyToSwap (long id );
00078 void ReadyToStart(long id);
00079
00080 void DeleteNonConnectedTrObj();
00081 void ReadInterfaceToTrObj(char*& iter, const char* iterEnd, long& znr);
00082 void ConnectToTrObj(char*& iter, const char* iterEnd, long& znr);
00083 void ReadBasics(char*& iter, const char* iterEnd, long& znr);
00084 void InitBroadcastSock();
00085 void InitTrObj();
00086 void WriteFrameRate();
00087 void PrintSysInfo();
00088 void DealDataLengths();
00089 void UpdateLocalLoopData();
00090
00091 protected:
00092
00093 ArrayC<SocketC*> m_pSocketToTrObj;
00094 ArrayC<SocketC*> m_pUdpSocketFromTrObj;
00095 ArrayC<long> m_trObjDataMinLength;
00096 ArrayC<long> m_trObjDataMaxLength;
00097 ArrayC<long> m_trObjDataAssignedLength;
00098 ArrayC<long> m_trObjDataPresentLength;
00099 StringC m_initFileName;
00100 SocketSetC m_socketSet;
00101
00102 StringC m_broadcastBase;
00103 StringC m_broadcastNetAddr;
00104 StringC m_endpoint;
00105 char* m_szLocalIP;
00106
00107 long* m_swapMsgData;
00108 long m_swapMsgDataSize;
00109
00110 SockAddressC m_broadcastAddress;
00111 SocketC* m_pBroadcastSocket;
00112
00113 ArrayC<ByteArrayC> m_tmpdata;
00114 ArrayC<LongArrayC> m_trobjRequestedInterfaces;
00115
00116 long m_datagrammLength;
00117 ArrayC<long> m_datagrammLengthList;
00118
00119 ArrayC<StringC> m_trObjHost;
00120 ArrayC<StringC> m_trObjPort;
00121 ArrayC<StringC> m_hostName;
00122 ArrayC<StringC> m_hostIP;
00123
00124 StringC m_initData;
00125
00126 TimeC m_time;
00127 TimeC m_timeLast;
00128 double m_dtMin;
00129 double m_dtMax;
00130 double m_dSleepTime;
00131
00132 long m_counter;
00133
00134 int m_isLocal;
00135 short m_bUseTCP;
00136 };
00137
00138 OAW_END_NAMESPACE
00139
00140 #endif
00141
00142
00143
00144
00145
00146