PacketCommon.cpp 16 KB

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