См. документацию.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
00021
00022
00023
00024
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;
00035 pthread_t binThread;
00036 void parse();
00037 list<BPHandler*> handlers;
00038 map<unsigned long int,BufferFiller*> bufferFillers;
00039 public:
00040
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();
00046
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
00055 virtual ~BinaryProtocol();
00056 friend void* bin_client_threadFunc(void* clnt);
00057 friend void* binary_threadFunc(void* clnt);
00058 };
00059
00060 #endif