BinaryProtocol.h

См. документацию.
00001 #ifndef BINARYPROTOCOL_H_
00002 #define BINARYPROTOCOL_H_
00003 
00004 #include <stdlib.h>
00005 #include <sys/types.h>
00006 #include <sys/socket.h>
00007 #include <netinet/in.h>
00008 #include <arpa/inet.h>
00009 #include <string.h>
00010 #include <pthread.h>
00011 #include <string>
00012 #include <iostream>
00013 #include <list>
00014 #include <map>
00015 #include "BPHandler.h"
00016 #include "BinaryPacket.h"
00017 #include "BufferFiller.h"
00018 #include "../BaseConfigFile.h"
00019 using namespace std;
00020 //void* client_threadFunc(void* clnt);
00021 //typedef void (BibaryPacket::*packetRecerver);
00022 //static pthread_mutex_t cs_mutex3 = PTHREAD_MUTEX_INITIALIZER;
00023 //static pthread_mutex_t cs_mutex4 = PTHREAD_MUTEX_INITIALIZER;
00024 //template <class Listener_T>
00025 class BinaryProtocol{
00026 protected:
00027         pthread_mutex_t exit_mutex;
00028         pthread_mutex_t cs_mutex4;
00029         pthread_mutex_t cs_mutex3;
00030         pthread_attr_t attr;
00031         size_t max_pktsize;
00032         BaseConfigFile* cf;
00033         int skt_id;
00034         pthread_t clientThread;//TODO разобраться почему ЭТО не в клиенте
00035         pthread_t binThread;
00036         void parse();
00037         list<BPHandler*> handlers;
00038         map<unsigned long int,BufferFiller*> bufferFillers;
00039 public:
00040     //typedef void (Listener_T::*packetRecerver)(BibaryPacket);
00041         BibaryPacket readPacket();
00042         ssize_t readToBuffer(void* buffer, size_t length);
00043         BinaryProtocol(BaseConfigFile* cf);
00044         void disconnect(){};
00045         static unsigned long int getNextId();//{return ++pktID;}
00046         //void setRecervedPacketFunc(packetRecerver func,unsigned short pktID){};
00047         void sendBuffer(const void* buffer, int length);
00048         void sendPacket(BibaryPacket packet);
00049         void addHandler(BPHandler* h){handlers.push_back(h);}
00050         void setFillBuffer(void* buffer,size_t size,unsigned long int pktID);
00051         void waiteFillBuffer(unsigned int pktID);
00052         void setSendBufferData(const void* buffer,size_t size,unsigned long int pktID);
00053         void startTread(int skt_id);
00054         //void sendPacket(int size, void *data){};
00055         virtual ~BinaryProtocol();
00056         friend void* bin_client_threadFunc(void* clnt);
00057         friend void* binary_threadFunc(void* clnt);
00058 };
00059 
00060 #endif /*BINARYPROTOCOL_H_*/