00001
00006 #include "netManager.h"
00007 #include "Packet.h"
00008 #include "LoginPacket.h"
00009 #include "JoystPacket.h"
00010 #include "HBeatPacket.h"
00011
00012 #define OUTDATASIZE 99
00013
00014 #ifndef OUTNETSOCK_H
00015 #define OUTNETSOCK_H
00016
00017 #include <pthread.h>
00018 #include "screenManager.h"
00019 #include "sysLog.h"
00020
00021 class OutNetSock {
00022 public:
00026 enum Status {
00028 OPEN = 1,
00030 CLOSED = 0,
00032 ERROR = -1
00033 };
00037 static void sendPacket();
00038
00043 int getWritePtr();
00044
00049 int incWritePtr();
00050
00055 int getReadPtr();
00056
00061 int incReadPtr();
00062
00068 int openOutNet(struct sockaddr_in address);
00069
00074 int closeOutNet();
00075
00080 void setStatus(Status newStatus);
00081
00086 Status getStatus();
00087
00092 static OutNetSock * theInstance();
00093
00098 void writeOutData(LoginPacket *packet);
00099
00104 inline int getOutSock(){return outSock;}
00105
00110 inline Packet * getOutFile(){return outData[readPtr];}
00115 inline Packet * getWOutFile(){return outData[writePtr];}
00116
00121 void writeLoginOutData(LoginPacket *packet);
00122
00127 void writeJoystOutData(JoystPacket *packet);
00128
00133 void writeHBeatOutData(HBeatPacket *packet);
00134 int sem_V();
00135 int sem_P();
00136
00137 protected:
00141 OutNetSock();
00142
00146 ~OutNetSock();
00147
00148
00149 private:
00151 ScreenManager * screenManager;
00153 SysLog * systemLogger;
00155 int outSock;
00157 Packet *outData[OUTDATASIZE];
00159 int readPtr;
00161 int writePtr;
00163 static Status status;
00165 pthread_t outThread;
00167 int outsv;
00168 };
00169
00170 #endif //OUTNETSOCK_H