123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956 |
- #include "StdAfx.h"
- #include <assert.h>
- #include "CRC.h"
- #include "Logger.h"
- #include "DiosLock.h"
- #include "PacketAnalizer.h"
- #include "Logger.temp.h"
- #define CRTDBG_MAP_ALLOC
- #include <stdlib.h>
- #include <crtdbg.h>
- PacketAnalizer::PacketAnalizer(void)
- {
- }
- PacketAnalizer::~PacketAnalizer(void)
- {
- }
- DWORD PacketAnalizer::MakePacketIdx()
- {
- //static volatile UINT64 g_IdxLock = 0;
- //static volatile DWORD oldTick = 1;
- //DWORD tick = 0;
- //if (Dios_ThreadLock(&g_IdxLock))
- //{
- // tick = (DWORD)GetTickCount();
- // while (tick == 0)
- // {
- // tick = (DWORD)GetTickCount();
- // }
- // if (tick == oldTick)
- // {
- // tick += 1;
- // }
- // oldTick = tick;
- // Dios_ThreadUnLock(&g_IdxLock);
- //}
- //return tick;
- return Thread_GetUniqTick();
- }
- DWORD PacketAnalizer::GetPacketIdx(ResDataObject *pObj)
- {
- DWORD ret = 0;
- try {
- int Idx = (*pObj).GetFirstOf(DIOS_PACK_IDX);
- if (Idx >= 0)
- {
- ret = (*pObj)[DIOS_PACK_IDX];
- }
- }
- catch (ResDataObjectExption &exp)
- {
- //exp.what()
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, exp.what
- ////PRINTA_DEBUG((char*)exp.what());
- }
- catch (...)
- {
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, "Unknown Exp Happened\n");
- //PRINTA_DEBUG("Unknown Exp Happened\n");
- }
- return ret;
- }
- bool PacketAnalizer::GetDestinationMachineId(ResDataObject &packet, string &machineId)
- {
- bool ret = false;
- try {
- //check destination & dispatch
- PACKET_TYPE type = PacketAnalizer::GetPacketType(&packet);
- switch (type)
- {
- //req:dev bus+proc
- case PACKET_TYPE_REQ:
- if (PacketAnalizer::GetPacketHandleMachineId(&packet, machineId, true))
- {
- return true;
- }
- break;
- //res¬ify:owner bus+proc
- case PACKET_TYPE_RES:
- case PACKET_TYPE_NOTIFY:
- if (PacketAnalizer::GetPacketHandleMachineId(&packet, machineId, false))
- {
- return true;
- }
- break;
- default:
- break;
- }
- }
- catch (...)
- {
- }
- return ret;
- }
- bool PacketAnalizer::GetDestinationBusId(ResDataObject &packet, string &busId)
- {
- bool ret = false;
- try {
- //check destination & dispatch
- PACKET_TYPE type = PacketAnalizer::GetPacketType(&packet);
- switch (type)
- {
- //req:dev bus+proc
- case PACKET_TYPE_REQ:
- if (PacketAnalizer::GetPacketHandleBusId(&packet, busId, true))
- {
- return true;
- }
- break;
- //res¬ify:owner bus+proc
- case PACKET_TYPE_RES:
- case PACKET_TYPE_NOTIFY:
- if (PacketAnalizer::GetPacketHandleBusId(&packet, busId, false))
- {
- return true;
- }
- break;
- default:
- break;
- }
- }
- catch (...)
- {
- }
- return ret;
- }
- bool PacketAnalizer::GetDestinationProcId(ResDataObject &packet, UINT64 &procId)
- {
- bool ret = false;
- try {
- //check destination & dispatch
- PACKET_TYPE type = PacketAnalizer::GetPacketType(&packet);
- switch (type)
- {
- //req:dev bus+proc
- case PACKET_TYPE_REQ:
- if (PacketAnalizer::GetPacketHandleProcId(&packet, procId, true))
- {
- return true;
- }
- break;
- //res¬ify:owner bus+proc
- case PACKET_TYPE_RES:
- case PACKET_TYPE_NOTIFY:
- if (PacketAnalizer::GetPacketHandleProcId(&packet, procId, false))
- {
- return true;
- }
- break;
- default:
- break;
- }
- }
- catch (...)
- {
- }
- return ret;
- }
- PACKET_TYPE PacketAnalizer::GetPacketType(ResDataObject *pObj)
- {
- int cmd;
- PACKET_TYPE ret = PACKET_TYPE_NONE;
- try {
- cmd = (int)(*pObj)[DIOS_PACK_TYPE];
- ret = (PACKET_TYPE)cmd;
- if(ret >= 0 && ret < PACKET_TYPE_MAX)
- {
- return ret;
- }
- }
- catch(ResDataObjectExption &exp)
- {
- //exp.what()
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, exp.what());
- //PRINTA_DEBUG((char*)exp.what());
- }
- catch(...)
- {
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, "Unknown Exp Happened\n");
- //PRINTA_DEBUG("Unknown Exp Happened\n");
- }
- return PACKET_TYPE_NONE;
- }
- PACKET_CMD PacketAnalizer::GetPacketCmd(ResDataObject *pObj)
- {
- int cmd;
- PACKET_CMD ret = PACKET_CMD_NONE;
- try {
- cmd = (int)((*pObj)[DIOS_PACK_CMD]);
- ret = (PACKET_CMD)cmd;
- if(ret >= 0 && ret < PACKET_CMD_MAX)
- {
- return ret;
- }
- }
- catch (ResDataObjectExption &exp)
- {
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, exp.what());
- //PRINTA_DEBUG((char*)exp.what());
- }
- catch (...)
- {
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, "Unknown Exp Happened\n");
- //PRINTA_DEBUG("Unknown Exp Happened\n");
- }
- return PACKET_CMD_NONE;
- }
- ACTION_SYNC_MODE PacketAnalizer::GetPacketSyncMode(ResDataObject *pObj)
- {
- ACTION_SYNC_MODE ret = ACTION_SYNC;
- try {
- ret = (ACTION_SYNC_MODE)(int)(*pObj)[DIOS_PACKET_SYNC];
- }
- catch (...)
- {
- ret = ACTION_SYNC;
- }
- return ret;
- }
- ResDataObject* PacketAnalizer::GetPacketKeysRes(ResDataObject *pObj)
- {
- try {
- int Idx = (*pObj).GetFirstOf(DIOS_PACK_KEY);
- if (Idx >= 0)
- {
- ResDataObject &Res = (*pObj)[DIOS_PACK_KEY];
- return &Res;
- }
- }
- catch (ResDataObjectExption &exp)
- {
- //exp.what()
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, exp.what());
- //PRINTA_DEBUG((char*)exp.what());
- }
- catch (...)
- {
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, "Unknown Exp Happened\n");
- //PRINTA_DEBUG("Unknown Exp Happened\n");
- }
- return NULL;
- }
- std::string PacketAnalizer::GetPacketKey(ResDataObject *pObj)
- {
- std::string key = "";
- try {
- int Idx = (*pObj).GetFirstOf(DIOS_PACK_KEY);
- if (Idx >= 0)
- {
- key = (const char*)(*pObj)[DIOS_PACK_KEY];
- }
- }
- catch (ResDataObjectExption &exp)
- {
- //exp.what()
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, exp.what());
- //PRINTA_DEBUG((char*)exp.what());
- key = "";
- }
- catch (...)
- {
- //Logger *p = Logger::GetGlobalLogger();
- ////PRINTA_DEBUG(p, "Unknown Exp Happened\n");
- //PRINTA_DEBUG("Unknown Exp Happened\n");
- key = "";
- }
- return key;
- }
- bool PacketAnalizer::GetPacketHandleExistance(ResDataObject *pPacket)
- {
- bool ret = false;
- try {
- if ((*pPacket).GetFirstOf(DIOS_PACK_HANDLE) >= 0)
- {
- ret = true;
- }
- }
- catch (...)
- {
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketHandle(ResDataObject *pPacket,ResDataObject &Handle)
- {
- bool ret = true;
- try {
- (Handle) = (*pPacket)[DIOS_PACK_HANDLE];
- }
- catch(...)
- {
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketHandleBusId(ResDataObject *pPacket, string &BusId, bool dev)
- {
- bool ret = true;
- try {
- if (dev)
- {
- BusId = (const char *)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_BUSID];
- }
- else
- {
- BusId = (const char *)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_OWNERID][DIOS_PACK_TARGET_BUSID];
- }
- }
- catch (...)
- {
- BusId = "";
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketHandleMachineId(ResDataObject *pPacket, string &MachineId, bool dev)
- {
- bool ret = true;
- try {
- if (dev)
- {
- MachineId = (const char *)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_MACHINEID];
- }
- else
- {
- MachineId = (const char *)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_OWNERID][DIOS_PACK_TARGET_MACHINEID];
- }
- }
- catch (...)
- {
- MachineId = "";
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketHandleProcId(ResDataObject *pPacket, UINT64 &ProcId, bool dev)
- {
- bool ret = true;
- try {
- if (dev)
- {
- ProcId = (UINT64)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_PROCID];
- }
- else
- {
- ProcId = (UINT64)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_OWNERID][DIOS_PACK_TARGET_PROCID];
- }
- }
- catch (...)
- {
- ProcId = 0;
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketHandleCrc(ResDataObject *pPacket, UINT64 &Crc)
- {
- bool ret = true;
- try {
- Crc = (UINT64)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACKET_HANDLE_KEY];
- }
- catch (...)
- {
- Crc = 0;
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketHandleAddr(ResDataObject *pPacket, UINT64 &Addr, bool dev)
- {
- bool ret = true;
- try {
- if (dev)
- {
- Addr = (UINT64)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_ADDR];
- }
- else
- {
- Addr = (UINT64)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_OWNERID][DIOS_PACK_TARGET_ADDR];
- }
- }
- catch (...)
- {
- Addr = 0;
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::MakePacketContextExistance(ResDataObject *pPacket)
- {
- bool ret = false;
- try {
- if ((*pPacket).GetFirstOf(DIOS_PACK_CONTEXT) >= 0)
- {
- ret = true;
- }
- else
- {
- (*pPacket).add(DIOS_PACK_CONTEXT, "");
- ret = true;
- }
- }
- catch (...)
- {
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketRoute(ResDataObject *pPacket, DIOS_PACKET_ROUTE &Route)
- {
- bool ret = true;
- Route = DIOS_PACKET_ROUTE_ANY;//缺省设置一个先
- try {
- (Route) = (DIOS_PACKET_ROUTE)((int)(*pPacket)[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_ROUTE]);
- }
- catch (...)
- {
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketContext(ResDataObject *pPacket,ResDataObject &Context)
- {
- bool ret = true;
- try {
- int Idx = (*pPacket).GetFirstOf(DIOS_PACK_CONTEXT);
- if (Idx >= 0)
- {
- (Context) = (*pPacket)[Idx];
- }
- }
- catch(...)
- {
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketRetCode(ResDataObject *pPacket,RET_STATUS &retcode)
- {
- bool ret = true;
- try {
- (retcode) = (RET_STATUS)((int)((*pPacket)[DIOS_PACK_RETURN][DIOS_PACK_CODE]));
- }
- catch(...)
- {
- retcode = RET_STATUS::RET_FAILED;
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::GetPacketMsgInfo(ResDataObject *pPacket,string &Info)
- {
- bool ret = true;
- try {
- int Idx = (*pPacket)[DIOS_PACK_RETURN].GetFirstOf(DIOS_PACK_MSG);
- if (Idx >= 0)
- {
- (Info) = ((const char*)((*pPacket)[DIOS_PACK_RETURN][Idx]));
- }
- }
- catch(...)
- {
- ret = false;
- }
- return ret;
- }
- void PacketAnalizer::MakeRetCode(RET_STATUS retcode,ResDataObject *pObj,const char *pMsg)
- {
- ResDataObject RetObj,SubObj;
- SubObj.add(DIOS_PACK_CODE,(int)retcode);
- if(pMsg)
- {
- SubObj.add(DIOS_PACK_MSG,pMsg);
- }
- pObj->update(DIOS_PACK_RETURN,SubObj);
- }
- bool PacketAnalizer::CloneResponse(ResDataObject &Obj,ResDataObject *pReq)
- {
- Obj.clear();
- //Idx
- DWORD Idx = PacketAnalizer::GetPacketIdx(pReq);
- if (Idx)
- {
- Obj.add(DIOS_PACK_IDX, Idx);
- Obj.add(DIOS_PACK_TYPE, (int)PACKET_TYPE_RES);
- PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(pReq);
- if (cmd != PACKET_CMD_NONE)
- {
- Obj.add(DIOS_PACK_CMD, (int)cmd);
- Obj.add(DIOS_PACK_HANDLE, (*pReq)[DIOS_PACK_HANDLE]);
- string keystr = PacketAnalizer::GetPacketKey(pReq);
- Obj.add(DIOS_PACK_KEY, keystr.c_str());
- Obj.add(DIOS_PACK_CONTEXT, "");
- return true;
- }
- }
- return false;
- }
- bool PacketAnalizer::UpdateOpenRequest(ResDataObject &Req, ResDataObject &MachineId, ResDataObject &busId, UINT64 ProcId, UINT64 Addr)
- {
- try {
- Req[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_ADDR] = Addr;
- Req[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_PROCID] = ProcId;
- Req[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_BUSID] = busId;
- Req[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID][DIOS_PACK_TARGET_MACHINEID] = MachineId;
- string the_crc = "";
- the_crc += Req[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_OWNERID].encode();
- the_crc += (const char *)Req[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_DEVID].encode();
- std::stringstream strm;
- std::string tickstr;
- unsigned int Tick = PacketAnalizer::MakePacketIdx();
- strm << Tick;
- strm >> tickstr;
- the_crc += tickstr;
- UINT64 crc = CRC64::GetCrc64(the_crc.c_str(), (DWORD)the_crc.size());
- Req[DIOS_PACK_HANDLE][DIOS_PACKET_HANDLE_KEY] = crc;
- return true;
- }
- catch (...)
- {
- }
- return false;
- }
- //bool PacketAnalizer::UpdateDeviceNotifyResponse(ResDataObject &Notify, ResDataObject &MachineId, ResDataObject &busId, UINT64 ProcId, UINT64 Addr)
- //{
- // try {
- // DiosDevFileHandle handle;
- // handle.GetTarget(false)[DIOS_PACK_TARGET_MACHINEID] = (const char*)MachineId;
- // handle.GetTarget(false)[DIOS_PACK_TARGET_BUSID] = (const char*)busId;
- // handle.GetTarget(false)[DIOS_PACK_TARGET_PROCID] = ProcId;
- // handle.GetTarget(false)[DIOS_PACK_TARGET_ADDR] = Addr;
- //
- // ResDataObject handleObj;
- // handle.GetResDataObject(handleObj);
- // Notify.update(DIOS_PACK_HANDLE, handleObj);
- //
- // return true;
- //
- // }
- // catch (...)
- // {
- //
- // }
- //
- // return false;
- //
- //}
- bool PacketAnalizer::UpdatePacketContext(ResDataObject &packet, ResDataObject &Context)
- {
- try {
- packet[DIOS_PACK_CONTEXT] = Context;
- return true;
- }
- catch (...)
- {
- }
- return false;
- }
- bool PacketAnalizer::MakeOpenResponse(ResDataObject &Req,ResDataObject &Res,ResDataObject &DevResource)
- {
- PacketAnalizer::CloneResponse(Res, &Req);
- try {
- Res.update(DIOS_PACK_CONTEXT,DevResource);
- PacketAnalizer::MakeRetCode(RET_STATUS::RET_SUCCEED, &Res);
- return true;
- }
- catch (...)
- {
- }
- return false;
- }
- void PacketAnalizer::MakeNotifyP2P(ResDataObject &Obj, PACKET_CMD cmd,ResDataObject *pReq, const char *pKey, const char *pContext)
- {
- Obj.clear();
- Obj.update(DIOS_PACK_IDX, PacketAnalizer::MakePacketIdx());
- Obj.update(DIOS_PACK_TYPE, (int)PACKET_TYPE_NOTIFY);
- Obj.update(DIOS_PACK_CMD, (int)cmd);
- Obj.update(DIOS_PACK_HANDLE, (*pReq)[DIOS_PACK_HANDLE]);
- Obj.update(DIOS_PACK_KEY, pKey);
- Obj.update(DIOS_PACK_CONTEXT, pContext);
- }
- bool PacketAnalizer::UpdatePacketRoute(ResDataObject &Obj, DIOS_PACKET_ROUTE Route)
- {
- Obj[DIOS_PACK_HANDLE][DIOS_PACK_HANDLE_ROUTE] = (int)Route;
- return true;
- }
- //bool PacketAnalizer::UpdateNotifyHandle(ResDataObject &Obj, DiosDevFileHandle &handle)
- //{
- // ResDataObject handleObj;
- // handle.GetResDataObject(handleObj);
- // Obj.update(DIOS_PACK_HANDLE, handleObj);
- // //Obj.update(DIOS_PACK_HANDLE, handle.GetVal());
- //
- // return true;
- //}
- void PacketAnalizer::MakeNotify(ResDataObject &Obj,PACKET_CMD cmd,const char *pKey,const char *pContext)
- {
- Obj.clear();
- Obj.update(DIOS_PACK_IDX, PacketAnalizer::MakePacketIdx());
- Obj.update(DIOS_PACK_TYPE, (int)PACKET_TYPE_NOTIFY);
- Obj.update(DIOS_PACK_CMD, (int)cmd);
- Obj.update(DIOS_PACK_KEY, pKey);
- Obj.update(DIOS_PACK_CONTEXT, pContext);
- }
- void PacketAnalizer::MakeNotify(ResDataObject &Obj, PACKET_CMD cmd, ResDataObject &Key, const ResDataObject &Context)
- {
- Obj.clear();
- Obj.add(DIOS_PACK_IDX, PacketAnalizer::MakePacketIdx());
- Obj.add(DIOS_PACK_TYPE, (int)PACKET_TYPE_NOTIFY);
- Obj.add(DIOS_PACK_CMD, (int)cmd);
- Obj.add(DIOS_PACK_KEY, Key);
- Obj.add(DIOS_PACK_CONTEXT, (ResDataObject&)Context);
- }
- void PacketAnalizer::MakeNotify(ResDataObject &Obj, PACKET_CMD cmd, const char *pKey, const ResDataObject &Context)
- {
- Obj.clear();
- Obj.add(DIOS_PACK_IDX, PacketAnalizer::MakePacketIdx());
- Obj.add(DIOS_PACK_TYPE, (int)PACKET_TYPE_NOTIFY);
- Obj.add(DIOS_PACK_CMD, (int)cmd);
- Obj.add(DIOS_PACK_KEY, pKey);
- Obj.add(DIOS_PACK_CONTEXT, (ResDataObject&)Context);
- }
- //
- //DWORD PacketAnalizer::MakeActionRequest(ResDataObject &Obj, DiosDevFileHandle &handle, const char *pActionName, ResDataObject &ReqParams, ACTION_SYNC_MODE mode)
- //{
- // DWORD tick = PacketAnalizer::MakePacketIdx();
- // Obj.clear();
- // Obj.add(DIOS_PACK_IDX, tick);
- // Obj.add(DIOS_PACK_TYPE,(int)PACKET_TYPE_REQ);
- // Obj.add(DIOS_PACK_CMD,(int)PACKET_CMD_EXE);
- // Obj.add(DIOS_PACKET_SYNC, (int)mode);
- //
- // ResDataObject handleObj;
- // handle.GetResDataObject(handleObj);
- // Obj.add(DIOS_PACK_HANDLE, handleObj);
- //
- // Obj.add(DIOS_PACK_KEY,pActionName);
- // Obj.add(DIOS_PACK_CONTEXT,ReqParams);
- //
- // return tick;
- //}
- //
- //DWORD PacketAnalizer::MakeOpenRequest(ResDataObject &Obj, DiosDevFileHandle &handle, const char *pFilePath)
- //{
- // //ResDataObject TargetObj;
- // DWORD tick = PacketAnalizer::MakePacketIdx();
- // Obj.clear();
- // Obj.add(DIOS_PACK_IDX, tick);
- // Obj.add(DIOS_PACK_TYPE,(int)PACKET_TYPE_REQ);
- // Obj.add(DIOS_PACK_CMD,(int)PACKET_CMD_OPEN);
- //
- // //printf("handle:%s\n", handle.GetVal());
- // //TargetObj.add(handle.m_Dev.m_MachineID.GetKey(), handle.m_Dev.m_MachineID.GetVal());
- //
- // ResDataObject handleObj;
- // handle.GetResDataObject(handleObj);
- // Obj.add(DIOS_PACK_HANDLE, handleObj);
- //
- // Obj.add(DIOS_PACK_KEY,pFilePath);
- //
- //
- // return tick;
- //
- //}
- bool PacketAnalizer::MakeResponseByReq(ResDataObject &Response, ResDataObject &Req,RET_STATUS ret,const char* pInfo)
- {
- PacketAnalizer::CloneResponse(Response, &Req);
- PacketAnalizer::MakeRetCode(ret, &Response, pInfo);
- return true;
- }
- bool PacketAnalizer::MakeCloseNotifyByRes(ResDataObject &Response, ResDataObject &Req)
- {
- DWORD tick = PacketAnalizer::MakePacketIdx();
- Req.clear();
- Req.add(DIOS_PACK_IDX, tick);
- Req.add(DIOS_PACK_TYPE, (int)PACKET_TYPE_NOTIFY);
- Req.add(DIOS_PACK_CMD, (int)PACKET_CMD_CLOSE);
- Req.add(DIOS_PACK_HANDLE, Response[DIOS_PACK_HANDLE]);
- return true;
- }
- bool PacketAnalizer::MakeCloseRequestByRes(ResDataObject &Response, ResDataObject &Req)
- {
- DWORD tick = PacketAnalizer::MakePacketIdx();
- Req.clear();
- Req.add(DIOS_PACK_IDX, tick);
- Req.add(DIOS_PACK_TYPE, (int)PACKET_TYPE_REQ);
- Req.add(DIOS_PACK_CMD, (int)PACKET_CMD_CLOSE);
- Req.add(DIOS_PACK_HANDLE, Response[DIOS_PACK_HANDLE]);
- return true;
- }
- //bool PacketAnalizer::MakeCloseRequest(ResDataObject &Obj, DiosDevFileHandle &handle, PACKET_TYPE Type)
- //{
- // DWORD tick = PacketAnalizer::MakePacketIdx();
- // Obj.clear();
- // Obj.add(DIOS_PACK_IDX, tick);
- // Obj.add(DIOS_PACK_TYPE, (int)Type);
- // Obj.add(DIOS_PACK_CMD,(int)PACKET_CMD_CLOSE);
- // ResDataObject handleObj;
- // handle.GetResDataObject(handleObj);
- // Obj.add(DIOS_PACK_HANDLE, handleObj);
- //
- // return true;
- //}
- bool PacketAnalizer::MakeCloseResponse(ResDataObject &Req, ResDataObject &Res)
- {
- PacketAnalizer::CloneResponse(Res, &Req);
- PacketAnalizer::MakeRetCode(RET_STATUS::RET_SUCCEED, &Res);
- return true;
- }
- bool PacketAnalizer::GetParam(ResDataObject *pReq, unsigned int ParamIdx, ResDataObject &value)
- {
- bool ret = true;
- string parami;
- std::stringstream strm;
- try {
- //make p0
- strm << "P";
- strm << ParamIdx;
- strm >> parami;
- value = (*pReq)[DIOS_PACK_CONTEXT][parami.c_str()];
- }
- catch (...)
- {
- ret = false;
- }
- return ret;
- };
- bool PacketAnalizer::AddParam(ResDataObject *pRes, unsigned int ParamIdx, ResDataObject &value)
- {
- bool ret = true;
- string parami;
- std::stringstream strm;
- try {
- //make p0
- strm << "P";
- strm << ParamIdx;
- strm >> parami;
- ret = (*pRes)[DIOS_PACK_CONTEXT].add(parami.c_str(), value);
- }
- catch (...)
- {
- ret = false;
- }
- return ret;
- }
- bool PacketAnalizer::UpdateParam(ResDataObject *pRes, unsigned int ParamIdx, ResDataObject &value)
- {
- bool ret = true;
- string parami;
- std::stringstream strm;
- try {
- //make p0
- strm << "P";
- strm << ParamIdx;
- strm >> parami;
- ret = (*pRes)[DIOS_PACK_CONTEXT].update(parami.c_str(), value);
- }
- catch (...)
- {
- ret = false;
- }
- return ret;
- }
|