KDataManage.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #include "KDataManage.h"
  2. #include "iostream.h"
  3. KDataManage::KDataManage()
  4. {
  5. }
  6. KDataManage::~KDataManage()
  7. {
  8. }
  9. long KDataManage::Lock(CORBA::Long MapId, CORBA::Long StyleId, long id)
  10. {
  11. try{
  12. long lockid = 0;
  13. if ((lockid = m_pCorbaDataSets->Lock(MapId,StyleId,id,m_ServerObjName)) > 0 )
  14. {
  15. return lockid;
  16. }
  17. else 
  18. {
  19. char e_name[100];
  20. sprintf(e_name,"%d_%d",id,lockid);
  21. HANDLE hevent;
  22. hevent = CreateEvent(NULL,TRUE,FALSE,e_name);
  23. WaitForSingleObject(hevent,INFINITE);
  24. CloseHandle(hevent);
  25. return lockid;
  26. }
  27. }
  28. catch(CORBA::COMM_FAILURE& ex) {
  29. cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
  30. << "object." <<id<< endl;
  31. }
  32. catch(CORBA::SystemException&) {
  33. cerr << "Caught CORBA::SystemException1." << endl;
  34. }
  35. catch(CORBA::Exception&) {
  36. cerr << "Caught CORBA::Exception." << endl;
  37. }
  38. catch(omniORB::fatalException& fe) {
  39. cerr << "Caught omniORB::fatalException:" << endl;
  40. cerr << "  file: " << fe.file() << endl;
  41. cerr << "  line: " << fe.line() << endl;
  42. cerr << "  mesg: " << fe.errmsg() << endl;
  43. }
  44. catch(...) {
  45. cerr << "Caught unknown exception." << endl;
  46. }
  47. return -9999;
  48. }
  49. long KDataManage::UnLock(CORBA::Long MapId, CORBA::Long StyleId, long id, long index)
  50. {
  51. return m_pCorbaDataSets->UnLock(MapId,StyleId,id,index);
  52. }
  53. CORBA::Any* KDataManage::GetData(CORBA::Long MapId, CORBA::Long StyleId, long id)
  54. {
  55. return m_pCorbaDataSets->GetData(MapId,StyleId,id);
  56. }
  57. long KDataManage::SetData(CORBA::Long MapId, CORBA::Long StyleId, long id, const CORBA::Any& data) 
  58. {
  59. return m_pCorbaDataSets->SetData(MapId,StyleId,id,data);
  60. }
  61. //获得数据,并锁住数据
  62. CORBA::Any* KDataManage::GetDataWithLock(CORBA::Long MapId, CORBA::Long StyleId, long id) 
  63. {
  64. long lockid = 0;
  65. CORBA::Long Result;
  66. CORBA::Any * pAnyResult;
  67. try
  68. {
  69. pAnyResult  = m_pCorbaDataSets->GetDataWithLock(MapId,StyleId,id,Result,m_ServerObjName);
  70. if ( Result == 1)
  71. {
  72. return pAnyResult;
  73. }
  74. else
  75. {
  76. char e_name[100];
  77. sprintf(e_name,"%d_%d",id,-1*Result);
  78. HANDLE hevent;
  79. hevent = CreateEvent(NULL,TRUE,FALSE,e_name);
  80. WaitForSingleObject(hevent,INFINITE);
  81. CloseHandle(hevent);
  82. return m_pCorbaDataSets->GetData(MapId,StyleId,id);
  83. }   
  84. }
  85. catch(CORBA::COMM_FAILURE& ex) {
  86. cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
  87. << "object." << endl;
  88. }
  89. catch(CORBA::SystemException&) {
  90. cerr << "Caught CORBA::SystemException2." << endl;
  91. }
  92. catch(CORBA::Exception&) {
  93. cerr << "Caught CORBA::Exception." << endl;
  94. }
  95. catch(omniORB::fatalException& fe) {
  96. cerr << "Caught omniORB::fatalException:" << endl;
  97. cerr << "  file: " << fe.file() << endl;
  98. cerr << "  line: " << fe.line() << endl;
  99. cerr << "  mesg: " << fe.errmsg() << endl;
  100. }
  101. catch(...) {
  102. cerr << "Caught unknown exception." << endl;
  103. }
  104. return NULL;
  105. }
  106. CORBA::Long KDataManage::SetDataWithLock(CORBA::Long MapId, CORBA::Long StyleId,CORBA::Long id, const CORBA::Any& data) 
  107. {
  108. long lockid = 0;
  109. CORBA::Long Result;
  110. try
  111. {
  112. m_pCorbaDataSets->SetDataWithLock(MapId,StyleId,id,data ,Result,m_ServerObjName);
  113. if ( Result == 1)
  114. {
  115. return 1;
  116. }
  117. else
  118. {
  119. char e_name[100];
  120. sprintf(e_name,"%d_%d",id,-1 * Result);
  121. printf("Add Lock %sn",e_name);
  122. HANDLE hevent;
  123. hevent = CreateEvent(NULL,TRUE,FALSE,e_name);
  124. WaitForSingleObject(hevent,INFINITE);
  125. CloseHandle(hevent);
  126. m_pCorbaDataSets->SetData(MapId,StyleId,id,data);
  127. return Result;
  128. }   
  129. }
  130. catch(CORBA::COMM_FAILURE& ex) {
  131. cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
  132. << "object." << endl;
  133. }
  134. catch(CORBA::SystemException&) {
  135. cerr << "Caught CORBA::SystemException3." << endl;
  136. }
  137. catch(CORBA::Exception&) {
  138. cerr << "Caught CORBA::Exception." << endl;
  139. }
  140. catch(omniORB::fatalException& fe) {
  141. cerr << "Caught omniORB::fatalException:" << endl;
  142. cerr << "  file: " << fe.file() << endl;
  143. cerr << "  line: " << fe.line() << endl;
  144. cerr << "  mesg: " << fe.errmsg() << endl;
  145. }
  146. catch(...) {
  147. cerr << "Caught unknown exception." << endl;
  148. }
  149. }
  150. CORBA::Any* KDataManage::GetDataWithOnce(CORBA::Long MapId, CORBA::Long StyleId,CORBA::Long id)
  151. {
  152. long lockid = 0;
  153. CORBA::Long Result;
  154. CORBA::Any * pAnyResult;
  155. try
  156. {
  157. pAnyResult  = m_pCorbaDataSets->GetDataWithOnce(MapId,StyleId,id,Result,m_ServerObjName);
  158. if ( Result == 1)
  159. {
  160. return pAnyResult;
  161. }
  162. else
  163. {
  164. char e_name[100];
  165. sprintf(e_name,"%d_%d",id,-1*Result);
  166. HANDLE hevent;
  167. hevent = CreateEvent(NULL,TRUE,FALSE,e_name);
  168. WaitForSingleObject(hevent,INFINITE);
  169. CloseHandle(hevent);
  170. return m_pCorbaDataSets->GetData(MapId,StyleId,id);
  171. }   
  172. }
  173. catch(CORBA::COMM_FAILURE& ex) {
  174. cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
  175. << "object." << endl;
  176. }
  177. catch(CORBA::SystemException&) {
  178. cerr << "Caught CORBA::SystemException4." << endl;
  179. }
  180. catch(CORBA::Exception&) {
  181. cerr << "Caught CORBA::Exception." << endl;
  182. }
  183. catch(omniORB::fatalException& fe) {
  184. cerr << "Caught omniORB::fatalException:" << endl;
  185. cerr << "  file: " << fe.file() << endl;
  186. cerr << "  line: " << fe.line() << endl;
  187. cerr << "  mesg: " << fe.errmsg() << endl;
  188. }
  189. catch(...) {
  190. cerr << "Caught unknown exception." << endl;
  191. }
  192. return NULL;
  193. }
  194. CORBA::Long KDataManage::SetDataWithOnce(CORBA::Long MapId, CORBA::Long StyleId,CORBA::Long id, const CORBA::Any& data) 
  195. {
  196. long lockid = 0;
  197. CORBA::Long Result = 999 ;
  198. try
  199. {
  200. long tt = m_pCorbaDataSets->SetDataWithOnce(MapId,StyleId,id,data ,Result,m_ServerObjName);
  201. if ( Result == 1)
  202. {
  203. return 1;
  204. }
  205. else
  206. {
  207. char e_name[100];
  208. sprintf(e_name,"%d_%d",id,-1*Result);
  209. printf("tt is %dn",tt);
  210. printf("Add Lock %sn",e_name);
  211. HANDLE hevent;
  212. hevent = CreateEvent(NULL,TRUE,FALSE,e_name);
  213. WaitForSingleObject(hevent,INFINITE);
  214. CloseHandle(hevent);
  215. m_pCorbaDataSets->SetData(MapId,StyleId,id,data);
  216. printf("UnLock %dn",-1*Result);
  217. UnLock(MapId, StyleId, id,-1*Result);
  218. return 1;
  219. }   
  220. }
  221. catch(CORBA::COMM_FAILURE& ex) {
  222. cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
  223. << "object." << endl;
  224. }
  225. catch(CORBA::SystemException&) {
  226. cerr << "Caught CORBA::SystemException5." <<id<<Result<< endl;
  227. }
  228. catch(CORBA::Exception&) {
  229. cerr << "Caught CORBA::Exception." << endl;
  230. }
  231. catch(omniORB::fatalException& fe) {
  232. cerr << "Caught omniORB::fatalException:" << endl;
  233. cerr << "  file: " << fe.file() << endl;
  234. cerr << "  line: " << fe.line() << endl;
  235. cerr << "  mesg: " << fe.errmsg() << endl;
  236. }
  237. catch(...) {
  238. cerr << "Caught unknown exception." << endl;
  239. }
  240. }