PacketCommon.cpp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826
  1. #include "LocalConfig.h"
  2. #include "PacketCommon.h"
  3. #include "PacketAnalizer.h"
  4. #include "DrvTree.h"
  5. //#include "DevBusManager.h"
  6. #include "DeviceBus.h"
  7. #include "HandleManager.h"
  8. //#include "ClientManager.h"
  9. #include "DriverManager.h"
  10. //#include "shareMemWR.h"
  11. //#include "CCOSLogicDeviceStructure.h"
  12. //#include "sysif.h"
  13. //ShareMemWR g_SM;
  14. PacketCommon::PacketCommon()
  15. {
  16. }
  17. PacketCommon::~PacketCommon()
  18. {
  19. }
  20. /// <summary>
  21. /// 通过Bus发送Ccos包,包携带数据通过共享内存
  22. /// </summary>
  23. /// <param name="packet">要发送的包</param>
  24. /// <param name="Local">是否本地</param>
  25. /// <param name="TargetbusId">目标BusId</param>
  26. /// <param name="nShareMemID">共享内存ID</param>
  27. /// <returns></returns>
  28. bool SendSMpacket(ResDataObject &packet, bool Local, string &TargetbusId, unsigned long long nShareMemID)
  29. {
  30. if (BusSendSMPacket(packet, Local, TargetbusId, nShareMemID) == false)
  31. {
  32. //log here
  33. //NOT FINISHED YET
  34. //11.21版本为止,不添加功能
  35. //应该反馈错误,并进行对应的后续处理
  36. return false;
  37. }
  38. return true;
  39. }
  40. /// <summary>
  41. /// 通过Bus发走Ccos包
  42. /// </summary>
  43. /// <param name="packet">要处理的包</param>
  44. /// <param name="Local">是否本地</param>
  45. /// <param name="TargetbusId">目标BusId</param>
  46. /// <param name="pBlockData">消息块数据,默认NULL</param>
  47. /// <param name="Size">块数据长度,默认0</param>
  48. /// <returns></returns>
  49. bool Sendpacket(ResDataObject &packet, bool Local, string &TargetbusId, char* pBlockData, DWORD Size)
  50. {
  51. if (BusSendPacket(packet, Local, TargetbusId, pBlockData,Size) == false)
  52. {
  53. //log here
  54. //NOT FINISHED YET
  55. //11.21版本为止,不添加功能
  56. //应该反馈错误,并进行对应的后续处理
  57. return false;
  58. }
  59. return true;
  60. }
  61. CMD_ECHO DoSendPacket(ResDataObject &packet, bool Local,bool Block, string &TargetbusId)
  62. {
  63. //do send
  64. //block or packet
  65. //if (Block)
  66. //{
  67. // //get context
  68. // ResDataObject resImg;
  69. // ImgDataInfo ImgData;
  70. // string MachineId;
  71. // if (PacketAnalizer::GetDestinationMachineId(packet, MachineId) == false)
  72. // {
  73. // return CMD_ECHO_IGNORE;
  74. // }
  75. // //printf("Got Req of PACKET_CMD_DATA!!!---------------------\n");
  76. // if (MachineId != (const char*)getLocalMachineId())
  77. // {
  78. // PacketAnalizer::GetPacketContext(&packet, resImg);
  79. // ImgData.SetResDataObject(resImg);
  80. // //printf("Going to send SMPacket!!!---------------------\n");
  81. // //target is not in this machine
  82. // if (SendSMpacket(packet, Local, TargetbusId, ImgData.nShareMemID) == false)
  83. // {
  84. // //failed to send
  85. // return CMD_ECHO_NOTARGET;
  86. // }
  87. // return CMD_ECHO_OK;
  88. // }
  89. // //same machineId,just send it as normal packet
  90. //}
  91. //if (Sendpacket(packet, Local, TargetbusId) == false)
  92. //{
  93. // //failed to send
  94. // return CMD_ECHO_NOTARGET;
  95. //}
  96. return CMD_ECHO_OK;
  97. }
  98. ///当前eBusId的CcosProc的包
  99. CMD_ECHO DoThisProcDispatchPacket(ResDataObject &packet)
  100. {
  101. //packet cmd
  102. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  103. PACKET_TYPE type = PacketAnalizer::GetPacketType(&packet);
  104. if (cmd == PACKET_CMD_OPEN && type == PACKET_TYPE_REQ)
  105. {
  106. //open packet
  107. //find driver tree
  108. string path = PacketAnalizer::GetPacketKey(&packet);
  109. if (path.size() > 0)
  110. {
  111. DrvTreeNode Node;
  112. if (g_DrvTree.GetTreeNode(path.c_str(), Node))
  113. {
  114. //fill up
  115. if (Node.m_ProcId != (UINT64)getpid())
  116. {
  117. //going to sub proc
  118. BaseJsonDataObject<UINT64> translator;
  119. translator = (UINT64)Node.m_ProcId;//bug fix
  120. string TargetbusId = translator.GetVal();
  121. //this machine
  122. if (Sendpacket(packet, true, TargetbusId) == false)
  123. {
  124. //failed to send
  125. //mLog::FERROR("Failed send ebus.req dev:{$}", path.c_str());
  126. g_DrvTree.PrintExistTree();
  127. return CMD_ECHO_NOTARGET;
  128. }
  129. return CMD_ECHO_OK;//dispatch it
  130. }
  131. else
  132. {
  133. return CMD_ECHO_NG;//to this proc
  134. }
  135. }
  136. else
  137. {
  138. //mLog::FERROR("req dev:{$}", path.c_str());
  139. g_DrvTree.PrintExistTree();
  140. return CMD_ECHO_NOTARGET;
  141. }
  142. }
  143. else
  144. {
  145. return CMD_ECHO_IGNORE;
  146. }
  147. }
  148. else
  149. {
  150. //normal packet
  151. UINT64 ProcId = 0;
  152. if (PacketAnalizer::GetDestinationProcId(packet, ProcId) == false)
  153. {
  154. return CMD_ECHO_IGNORE;
  155. }
  156. UINT64 CurProcId = (UINT64)getpid();
  157. //sub proc
  158. if (ProcId != CurProcId)
  159. {
  160. BaseJsonDataObject<UINT64> translator;
  161. translator = ProcId;
  162. string TargetbusId = translator.GetVal();
  163. //dispatch it
  164. if (Sendpacket(packet, true, TargetbusId) == false)
  165. {
  166. //failed to send
  167. return CMD_ECHO_NOTARGET;
  168. }
  169. return CMD_ECHO_OK;
  170. }
  171. return CMD_ECHO_NG;//to this proc
  172. }
  173. return CMD_ECHO_NOTARGET;
  174. }
  175. //-1:ignore,0:Fail,1:local,2:Dispatch
  176. CMD_ECHO DispatchPacket(ResDataObject &packet)
  177. {
  178. CCOS_PACKET_ROUTE Route;
  179. CMD_ECHO ret = CMD_ECHO_IGNORE;
  180. try {
  181. //get destination Busid
  182. string DesBusId;
  183. if (PacketAnalizer::GetDestinationBusId(packet, DesBusId) == false)
  184. {
  185. return ret;
  186. }
  187. if (DesBusId == (const char*)getLocalEbusId())
  188. {
  189. //target is this proc
  190. return DoThisProcDispatchPacket(packet);
  191. }
  192. //below is not this proc
  193. //get target route
  194. if (PacketAnalizer::GetPacketRoute(&packet, Route) == false)
  195. {
  196. return ret;
  197. }
  198. bool sendtoLocalMachine = false;
  199. bool sendBlockData = false;
  200. //packet cmd
  201. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  202. if (cmd == PACKET_CMD_DATA)
  203. {
  204. sendBlockData = true;
  205. }
  206. //Precaculate direction
  207. if (Route == CCOS_PACKET_ROUTE_ANY)
  208. {
  209. //choose one
  210. Route = GetBusIdDirection(DesBusId);
  211. //if still any direction,then try local and try eth
  212. }
  213. //caculate again
  214. if (Route == CCOS_PACKET_ROUTE_LOCAL)
  215. {
  216. //target in this machine
  217. sendtoLocalMachine = true;
  218. }
  219. else if (Route == CCOS_PACKET_ROUTE_ETH)
  220. {
  221. //target is not in this machine
  222. }
  223. else if (Route == CCOS_PACKET_ROUTE_ANY)
  224. {
  225. //if still any direction,then try local and try eth
  226. //local first
  227. if (DoSendPacket(packet, true, sendBlockData, DesBusId) == CMD_ECHO_OK)
  228. {
  229. return CMD_ECHO_OK;
  230. }
  231. //try eth
  232. return DoSendPacket(packet, false, sendBlockData, DesBusId);
  233. }
  234. else
  235. {
  236. //ignore
  237. return CMD_ECHO_IGNORE;
  238. }
  239. //do send
  240. return DoSendPacket(packet, sendtoLocalMachine, sendBlockData, DesBusId);
  241. }
  242. catch (...)
  243. {
  244. }
  245. return ret;
  246. }
  247. /*
  248. //request target is device
  249. //Dispatch those packets of none match busId&procId
  250. CMD_ECHO From_RequestProcedure(ResDataObject &packet)
  251. {
  252. UINT64 ProcId;
  253. string TargetbusId;
  254. string DevMachineId;
  255. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  256. if (PacketAnalizer::GetPacketHandleBusId(&packet, TargetbusId, true) == false)
  257. {
  258. return CMD_ECHO_IGNORE;
  259. }
  260. //target is not this proc
  261. if ((TargetbusId != (const char*)getLocalEbusId()))
  262. {
  263. CCOS_PACKET_ROUTE route = Get_TargetDirection(packet);
  264. switch (route) {
  265. case CCOS_PACKET_ROUTE_NOTARGET:
  266. {
  267. return CMD_ECHO_NOTARGET;
  268. }
  269. break;
  270. case CCOS_PACKET_ROUTE_ANY:
  271. {
  272. //1.try local
  273. if (Sendpacket(packet, true, TargetbusId) == false)
  274. {
  275. //failed to send
  276. //2.try eth
  277. if (Sendpacket(packet, false, TargetbusId) == true)
  278. {
  279. return CMD_ECHO_OK;
  280. }
  281. return CMD_ECHO_NOTARGET;
  282. }
  283. return CMD_ECHO_OK;
  284. }
  285. break;
  286. case CCOS_PACKET_ROUTE_LOCAL:
  287. {
  288. //just try local
  289. if (Sendpacket(packet, true, TargetbusId) == true)
  290. {
  291. //failed to send
  292. return CMD_ECHO_OK;
  293. }
  294. return CMD_ECHO_NOTARGET;
  295. }
  296. break;
  297. case CCOS_PACKET_ROUTE_ETH:
  298. {
  299. //just try eth
  300. if (Sendpacket(packet, false, TargetbusId) == true)
  301. {
  302. return CMD_ECHO_OK;
  303. }
  304. return CMD_ECHO_NOTARGET;
  305. }
  306. break;
  307. default:
  308. return CMD_ECHO_NOTARGET;
  309. break;
  310. }
  311. }
  312. else
  313. {
  314. //find driver tree
  315. string path = PacketAnalizer::GetPacketKey(&packet);
  316. if (path.size() > 0)
  317. {
  318. DrvTreeNode Node;
  319. if (g_DrvTree.GetTreeNode(path.c_str(), Node))
  320. {
  321. //fill up
  322. if (Node.m_ProcId != (UINT64)GetCurrentProcessId())
  323. {
  324. //going to sub proc
  325. BaseJsonDataObject<UINT64> translator;
  326. translator = (UINT64)GetCurrentProcessId();
  327. string TargetbusId = translator.GetVal();
  328. //this machine
  329. if (Sendpacket(packet, true, TargetbusId) == false)
  330. {
  331. //failed to send
  332. return CMD_ECHO_NOTARGET;
  333. }
  334. return CMD_ECHO_OK;//dispatch it
  335. }
  336. else
  337. {
  338. return CMD_ECHO_NG;//to this proc
  339. }
  340. }
  341. }
  342. return CMD_ECHO_IGNORE;//ignore
  343. }
  344. //new change end---------------
  345. //below it's not open packet..so mid must exist!!!
  346. if (PacketAnalizer::GetPacketHandleMachineId(&packet, DevMachineId, true) == false)
  347. {
  348. return CMD_ECHO_IGNORE;
  349. }
  350. //target is not this proc
  351. if ((TargetbusId != (const char*)getLocalEbusId()))
  352. {
  353. //dispatch it
  354. if (cmd == PACKET_CMD_DATA)
  355. {
  356. //get context
  357. ResDataObject resImg;
  358. ImgDataInfo ImgData;
  359. printf("Got Req of PACKET_CMD_DATA!!!---------------------\n");
  360. if (DevMachineId != (const char*)getLocalMachineId())
  361. {
  362. PacketAnalizer::GetPacketContext(&packet, resImg);
  363. ImgData.SetResDataObject(resImg);
  364. printf("Going to send SMPacket!!!---------------------\n");
  365. //target is not in this machine
  366. if (SendSMpacket(packet, false, TargetbusId, ImgData.nShareMemID) == false)
  367. {
  368. //failed to send
  369. return CMD_ECHO_NOTARGET;
  370. }
  371. return CMD_ECHO_OK;
  372. }
  373. //target in this machine
  374. if (Sendpacket(packet, true, TargetbusId) == false)
  375. {
  376. //failed to send
  377. return CMD_ECHO_NOTARGET;
  378. }
  379. return CMD_ECHO_OK;
  380. }
  381. else
  382. {
  383. //normal packet to diffrent ebusid
  384. //remote machine
  385. if (DevMachineId != (const char*)getLocalMachineId())
  386. {
  387. if (Sendpacket(packet, false, TargetbusId) == false)
  388. {
  389. //failed to send
  390. return CMD_ECHO_NOTARGET;
  391. }
  392. return CMD_ECHO_OK;
  393. }
  394. //target in this machine
  395. if (Sendpacket(packet, true, TargetbusId) == false)
  396. {
  397. //failed to send
  398. return CMD_ECHO_NOTARGET;
  399. }
  400. return CMD_ECHO_OK;
  401. }
  402. }
  403. //This Proc
  404. if (PacketAnalizer::GetPacketHandleProcId(&packet, ProcId, true) == false)
  405. {
  406. return CMD_ECHO_IGNORE;
  407. }
  408. //sub proc
  409. if (ProcId != (UINT64)GetCurrentProcessId())
  410. {
  411. BaseJsonDataObject<UINT64> translator;
  412. translator = ProcId;
  413. TargetbusId = translator.GetVal();
  414. //dispatch it
  415. if (Sendpacket(packet, true, TargetbusId) == false)
  416. {
  417. //failed to send
  418. return CMD_ECHO_NOTARGET;
  419. }
  420. return CMD_ECHO_OK;
  421. }
  422. return CMD_ECHO_NG;//to this proc
  423. }
  424. //response target is client(owner)
  425. //Dispatch those packets of none match busId&procId
  426. CMD_ECHO From_ResponseProcedure(ResDataObject &packet)
  427. {
  428. string Temp;
  429. string OwnerbusId;
  430. UINT64 ProcId;
  431. if (PacketAnalizer::GetPacketHandleBusId(&packet, OwnerbusId, false) == false)
  432. {
  433. return CMD_ECHO_IGNORE;
  434. }
  435. //for test
  436. //if (Temp == "ccosChannel")
  437. //{
  438. // ret = ret;
  439. //}
  440. string OwnerMachineId;
  441. if (PacketAnalizer::GetPacketHandleMachineId(&packet, OwnerMachineId, false) == false)
  442. {
  443. printf("CMD_DATA:Ignore RES of PACKET_CMD_DATA!!!---------------------\n");
  444. return CMD_ECHO_IGNORE;
  445. }
  446. if ((OwnerbusId != (const char*)getLocalEbusId()))
  447. {
  448. //Dispatch here
  449. //dispatch it
  450. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  451. if (cmd == PACKET_CMD_DATA)
  452. {
  453. //for test
  454. //mLog::FDEBUG("SendEthBlock");
  455. //get context
  456. ResDataObject resImg;
  457. ImgDataInfo ImgData;
  458. printf("CMD_DATA:Got RES of PACKET_CMD_DATA!!!\n");
  459. if (OwnerMachineId == (const char*)getLocalMachineId())
  460. {
  461. printf("CMD_DATA:Normal send!!!\n");
  462. //same machine,diffrent busid,send to local
  463. if (Sendpacket(packet, true, OwnerbusId) == false)
  464. {
  465. //failed to send
  466. return CMD_ECHO_NOTARGET;
  467. }
  468. return CMD_ECHO_OK;
  469. }
  470. printf("CMD_DATA:OwnerMID:%s,LocalMID:%s\n", OwnerMachineId.c_str(), (const char*)getLocalMachineId());
  471. PacketAnalizer::GetPacketContext(&packet, resImg);
  472. ImgData.SetResDataObject(resImg);
  473. printf("CMD_DATA:Send SMPacket!!!---------------------\n");
  474. if (SendSMpacket(packet, false, OwnerbusId, ImgData.nShareMemID) == false)
  475. {
  476. //failed to send
  477. return CMD_ECHO_NOTARGET;
  478. }
  479. return CMD_ECHO_OK;
  480. }
  481. else
  482. {
  483. //normal packet
  484. //same machine,diffrent busid,send local
  485. if (OwnerMachineId == (const char*)getLocalMachineId())
  486. {
  487. if (Sendpacket(packet, true, OwnerbusId) == false)
  488. {
  489. //failed to send
  490. return CMD_ECHO_NOTARGET;
  491. }
  492. return CMD_ECHO_OK;
  493. }
  494. //diffrent machine,send eth
  495. if (Sendpacket(packet, false, OwnerbusId) == false)
  496. {
  497. //failed to send
  498. return CMD_ECHO_NOTARGET;
  499. }
  500. return CMD_ECHO_OK;
  501. }
  502. }
  503. //This Proc
  504. //for test
  505. //mLog::FDEBUG("LocalMsg");
  506. if (PacketAnalizer::GetPacketHandleProcId(&packet, ProcId, false) == false)
  507. {
  508. return CMD_ECHO_IGNORE;
  509. }
  510. //sub proc
  511. if (ProcId != (UINT64)GetCurrentProcessId())
  512. {
  513. //for test
  514. //mLog::FDEBUG("Send Local");
  515. BaseJsonDataObject<UINT64> translator;
  516. translator = ProcId;
  517. OwnerbusId = translator.GetVal();
  518. //dispatch it
  519. if (Sendpacket(packet, true, OwnerbusId) == false)
  520. {
  521. return CMD_ECHO_NOTARGET;
  522. }
  523. return CMD_ECHO_OK;
  524. }
  525. //for test
  526. //mLog::FDEBUG("Send ThisProc");
  527. return CMD_ECHO_NG;//this proc
  528. }
  529. //response target is client(owner)
  530. //Dispatch those packets of none match busId&procId
  531. CMD_ECHO From_NotifyProcedure(ResDataObject &packet)
  532. {
  533. return From_ResponseProcedure(packet);
  534. }
  535. */
  536. //suppose the packet is targeting this process
  537. /// <summary>
  538. /// 本驱动的命令请求处理
  539. /// </summary>
  540. /// <param name="packet"></param>
  541. /// <returns></returns>
  542. /*
  543. CMD_ECHO Do_LocalReqProcedure(ResDataObject &packet)
  544. {
  545. UINT64 Addr = 0;
  546. CMD_ECHO ret = g_HandleManager.CheckReqPacketValidity(packet, Addr);
  547. if (ret == CMD_ECHO_OK)
  548. {
  549. if (Addr && g_DrvManager.RequestToDevice(packet, Addr) >= RET_SUCCEED)
  550. {
  551. ret = CMD_ECHO_OK;
  552. }
  553. else
  554. {
  555. ret = CMD_ECHO_NOTARGET;
  556. }
  557. }
  558. return ret;
  559. }
  560. */
  561. /*
  562. CMD_ECHO Do_LocalResProcedure(ResDataObject &packet)
  563. {
  564. UINT64 Addr;
  565. CMD_ECHO ret = CMD_ECHO_IGNORE;
  566. //find driver tree
  567. //printf("Driver Thread:%d,Do_LocalResProcedure Entry\n", GetCurrentThreadId());
  568. if (PacketAnalizer::GetPacketHandleAddr(&packet, Addr, false))
  569. {
  570. if (g_ClientManager.ResToClient(packet, Addr) >= RET_SUCCEED)
  571. {
  572. ret = CMD_ECHO_OK;
  573. }
  574. else
  575. {
  576. ret = CMD_ECHO_NOTARGET;
  577. }
  578. }
  579. return ret;
  580. }
  581. CMD_ECHO Do_LocalNotifyProcedure(ResDataObject &packet)
  582. {
  583. return Do_LocalResProcedure(packet);
  584. }*/
  585. /// <summary>
  586. /// 本驱动的Open命令处理
  587. /// </summary>
  588. /// <param name="packet"></param>
  589. /// <returns></returns>
  590. /*
  591. CMD_ECHO Do_LocalOpenReqProcedure(ResDataObject &packet)
  592. {
  593. CMD_ECHO ret = CMD_ECHO_IGNORE;//ignore
  594. bool Exist = false;
  595. //find driver tree
  596. string path = PacketAnalizer::GetPacketKey(&packet);
  597. if (path.size() > 0)
  598. {
  599. DrvTreeNode Node;
  600. //need lock strategy
  601. g_DrvTree.Thread_Lock();
  602. Exist = g_DrvTree.GetTreeNode(path.c_str(), Node);
  603. g_DrvTree.Thread_UnLock();
  604. if (Exist)
  605. {
  606. //update request
  607. if (PacketAnalizer::UpdateOpenRequest(packet, getLocalMachineId(), getLocalEbusId(), Node.m_ProcId, Node.m_Address))
  608. {
  609. if (Node.m_Address && g_DrvManager.RequestToDevice(packet, Node.m_Address) >= RET_SUCCEED)
  610. {
  611. ret = CMD_ECHO_OK;
  612. }
  613. else
  614. {
  615. //mLog::FERROR("Dev exist.RequestToDevice Failed.:{$}", path.c_str());
  616. ret = CMD_ECHO_NOTARGET;//no exist
  617. }
  618. }
  619. }
  620. else
  621. {
  622. //mLog::FERROR("Dev not exist:{$}", path.c_str());
  623. g_DrvTree.PrintExistTree();
  624. ret = CMD_ECHO_NOTARGET;//no exist
  625. }
  626. }
  627. //failed status is returned by driverthread.so ignore 1 failed
  628. return ret;
  629. }*/
  630. /// <summary>
  631. /// 本驱动的请求处理过程
  632. /// </summary>
  633. /// <param name="packet"></param>
  634. /// <returns></returns>
  635. ///
  636. /*
  637. CMD_ECHO To_Local_RequestProcedure(ResDataObject &packet)
  638. {
  639. CMD_ECHO ret = CMD_ECHO_IGNORE;//ignore
  640. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  641. switch (cmd)
  642. {
  643. case PACKET_CMD_OPEN:
  644. return Do_LocalOpenReqProcedure(packet);
  645. break;
  646. case PACKET_CMD_CLOSE:
  647. case PACKET_CMD_GET:
  648. case PACKET_CMD_EXE:
  649. return Do_LocalReqProcedure(packet);
  650. break;
  651. default:
  652. break;
  653. }
  654. return ret;
  655. }*/
  656. /*
  657. CMD_ECHO To_Local_ResponseProcedure(ResDataObject &packet)
  658. {
  659. CMD_ECHO ret = CMD_ECHO_IGNORE;//ignore
  660. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  661. switch (cmd)
  662. {
  663. case PACKET_CMD_OPEN:
  664. case PACKET_CMD_CLOSE:
  665. case PACKET_CMD_GET:
  666. case PACKET_CMD_EXE:
  667. return Do_LocalResProcedure(packet);
  668. break;
  669. default:
  670. break;
  671. }
  672. return ret;
  673. }
  674. CMD_ECHO To_Local_NotifyProcedure(ResDataObject &packet)
  675. {
  676. CMD_ECHO ret = CMD_ECHO_IGNORE;//ignore
  677. PACKET_CMD cmd = PacketAnalizer::GetPacketCmd(&packet);
  678. switch (cmd)
  679. {
  680. case PACKET_CMD_CLOSE:
  681. case PACKET_CMD_PART_UPDATE:
  682. case PACKET_CMD_UPDATE:
  683. case PACKET_CMD_ADD:
  684. case PACKET_CMD_DEL:
  685. case PACKET_CMD_EXE:
  686. case PACKET_CMD_DATA:
  687. case PACKET_CMD_MSG:
  688. return Do_LocalNotifyProcedure(packet);
  689. break;
  690. default:
  691. break;
  692. }
  693. return ret;
  694. }
  695. */