00001
00006 #include "viaNetManager.h"
00007 #include "JoystPacket.h"
00008 #include "LoginPacket.h"
00009 #include "HBeatPacket.h"
00010
00011 #define OUTDATASIZE 99
00012
00013 #ifndef VIAOUTNETSOCK_H
00014 #define VIAOUTNETSOCK_H
00015
00016 #include "sysLog.h"
00017 #include <pthread.h>
00018 #include <netinet/in.h>
00019
00020 class ViaOutNetSock {
00021 public:
00025 enum Status {
00027 OPEN = 1,
00029 CLOSED = 0,
00031 LISTENING = 2,
00033 ERROR = -1
00034 };
00038 static void sendPacket();
00039
00044 int getWritePtr();
00045
00050 int incWritePtr();
00051
00056 int getReadPtr();
00057
00062 int incReadPtr();
00063
00069 int openOutNet(struct sockaddr_in address);
00070
00075 int closeOutNet();
00076
00081 void setStatus(Status newStatus);
00082
00087 Status getStatus();
00088
00093 static ViaOutNetSock * theInstance();
00094
00099 void writeOutData(Packet *packet);
00100
00105 inline Packet * getOutFile(){return outData[readPtr];}
00106 inline Packet * getWOutFile(){return outData[writePtr];}
00107
00112 void setCliSock(int newSock);
00113
00118 inline int getOutSock(){return outSock;}
00119
00124 inline int getCliSock(){return cliSock;}
00125
00130 inline struct sockaddr_in* getCliAddr(){return &cliAddr;}
00131 void writeLoginOutData(LoginPacket *packet);
00132 void writeJoystOutData(JoystPacket *packet);
00133 void writeHBeatOutData(HBeatPacket *packet);
00134
00135
00136 protected:
00140 ViaOutNetSock();
00141
00145 ~ViaOutNetSock();
00146 private:
00148 SysLog * systemLogger;
00150 int outSock;
00152 int cliSock;
00154 Packet *outData[OUTDATASIZE];
00156 int readPtr;
00158 int writePtr;
00160 static Status status;
00162 pthread_t outThread;
00164 struct sockaddr_in cliAddr;
00165 struct sockaddr_in serAddr;
00166 };
00167
00168 #endif //VIAOUTNETSOCK_H