eis/inc/glob/BinaryTele.h

118 lines
2.4 KiB
C
Raw Permalink Normal View History

/*********************************************
*
* Binary message organization and parsing
*
* copyright Shanghai Baosight Software Co., Ltd.
*
* create zoufuzhou 20201001
*
************************************************/
#pragma once
#ifdef _WIN32
//#include <Winsock2.h>
#else
#include <netinet/in.h>
#endif
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <dao/TeleDAO.h>
#include <base/ByteTool.h>
#include <base/TypeCheck.h>
#include <common/BasicStruct.h>
#include <dao/LimitsMag.h>
#include <glob/GlobDefine.h>
using namespace std;
using namespace baosight;
typedef vector<TeleItem* > TVectItem;
class BinaryTele
{
public:
BinaryTele(int eventNo=9999,const string& table = "T_LOV_TELEITEM");
virtual ~BinaryTele();
int ReBuild(int eventNo,const char* buff);
int ReBuild(int eventNo);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int Read(int eventNo);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֵ*/
TeleItem& operator[]( int elem );
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֵ*/
TeleItem& operator[]( const string& itemName);
// get index NO. of tele columns ,start No. is :0
int GetItemIndex(const string &itemName);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֯<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD><C7B7>ߵ<EFBFBD><DFB5>ֽ<EFBFBD>ת<EFBFBD><D7AA>*/
char* GetTeleData(bool htol_byte = true);
/*ȡ<><C8A1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>*/
vector<string>& GetTables();
/*ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>const string& dbtable <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MUCODE
const string dbwhere <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>֯where<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
int Fill(const string& dbtable, const string& dbwhere);
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ*/
void Print(void);
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
const int size(void) const;
//<2F><>֯<EFBFBD><D6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
const int TeleLen() const;
public:
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static int GetTeleConf(int eventNo,TeleConf& conf);
protected:
/*<2A><><EFBFBD>ֵ<EFBFBD><D6B5>Ĵ<EFBFBD>*/
int SplitTele(const char* buffer);
//<2F><>֯<EFBFBD><D6AF><EFBFBD><EFBFBD> ,<2C><><EFBFBD>ߵ<EFBFBD><DFB5>ֽ<EFBFBD>ת<EFBFBD><D7AA>
int OrganizeTele(bool htol_byte = true);
//zero item value
void InitValue(void);
private:
void reverse_string(char *left, char *right);
TeleItem& IsNuLL();
private:
vector<string> mv_table;
TVectItem *mp_itemvect; //<2F><><EFBFBD>ŵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
int m_teleLen; //store current bufferlen;
static map<int, TVectItem* > *mp_telemap; //<2F><><EFBFBD>Ľṹ<C4BD>أ<EFBFBD><D8A3><EFBFBD><E6B4A2><EFBFBD><EFBFBD>չ<EFBFBD>ĵ<EFBFBD><C4B5>Ķ<EFBFBD><C4B6><EFBFBD>
static map<int,TeleConf> mm_teleconf; //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TeleItem itemnull; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
static TeleDAO* mp_teledao;
std::string m_table;
char m_buff[102400];
};