prterrors.cpp
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:11k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.1 $
  3.  * $Date: 1998/10/14 22:47:51 $
  4.  */
  5. #include <string.h>
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8. #include "api/apierr.h"
  9. #include "api/h225csperr.h"
  10. #include "api/h245sigerr.h"
  11. #include "api/connmgrerr.h"
  12. #include "api/h225raserr.h"
  13. #include "q931/q931err.h"
  14. #include "api/h450err.h"
  15. void doError(ProtReturnCode,int);
  16. char *printError(ProtReturnCode ret, char *msg);
  17. #define PRINTERR printf
  18. void
  19. doError(ProtReturnCode ret, int stop) 
  20. {
  21. char msg[256];
  22. PRINTERR("%sn",printError(ret,msg));
  23. if (stop) {
  24. PRINTERR("exiting due to error...n");
  25. exit(1);
  26. /* NOTREACHED */
  27. }
  28. }
  29. char *
  30. printError(ProtReturnCode ret, char *msg)
  31. {
  32. unsigned int sev, fac, sub, code;
  33. char num[5];
  34. msg[0] = ''; /* so we can use the str functions */
  35. num[0] = ''; /* so we can use the str functions */
  36. PROT_EXTRACT_CODES(ret, sev, fac, sub, code);
  37. sprintf(num,"%d",code); /* we may need this later */
  38. switch (sev)  {
  39.     case PROT_SEVERITY_SUCCESS:
  40. strcpy(msg, "SUCCESS: ");
  41. break;
  42.     case PROT_SEVERITY_INFORMATIONAL:
  43. strcpy(msg, "INFORMATION: ");
  44. break;
  45.     case PROT_SEVERITY_WARNING:
  46. strcpy(msg, "WARNING: ");
  47. break;
  48.     case PROT_SEVERITY_ERROR:
  49. strcpy(msg, "ERROR: ");
  50. break;
  51. default:
  52. strcpy(msg, "SEVERITY-DEFAULT: ");
  53. break;
  54. }
  55. switch (fac)  {
  56.     case PROT_FACILITY_CODE_OS:
  57. strcat(msg, "Operating System: ");
  58. break;
  59. case PROT_FACILITY_CODE_TRANSPORT:
  60. strcat(msg, "Transport Layer: ");
  61. break;
  62. case PROT_FACILITY_CODE_RTP:
  63. strcat(msg, "RTP: ");
  64. break;
  65. case PROT_FACILITY_CODE_Q931:
  66. strcat(msg, "Q.931: ");
  67. break;
  68. case PROT_FACILITY_CODE_H225:
  69. strcat(msg, "H.225: ");
  70. break;
  71. case PROT_FACILITY_CODE_H245:
  72. strcat(msg, "H.245: ");
  73. break;
  74. case PROT_FACILITY_CODE_H450:
  75. // strcat(msg, "H.450: ");
  76. break;
  77. default:
  78. strcat(msg, "FACILITY-DEFAULT: ");
  79. break;
  80. }  
  81.  
  82. switch (sub)  {
  83. case PROT_FACILITY_SUB_CODE_SOCKETS:
  84. strcat(msg, "socket layer: ");
  85. strcat(msg, "error code = ");
  86. strcat(msg, num);
  87. break;
  88. case PROT_FACILITY_SUB_CODE_CONNMGR:
  89. strcat(msg, "Connection Manager: ");
  90. switch (code)  {
  91. case CONNMGR_SUCCESS:
  92. strcat(msg, "error code = success");
  93. break;
  94.    case CONNMGR_UNKNOWN_ERROR:
  95. strcat(msg, "error code = unknown error");
  96. break;
  97.    case CONNMGR_MEM_ALLOC_FAILED:
  98. strcat(msg, "error code = memory allocation failed");
  99. break;
  100.    case CONNMGR_INVALID_PARAM:
  101. strcat(msg, "error code = invalid parameter");
  102. break;
  103.    case CONNMGR_PENDING:
  104. strcat(msg, "error code = pending");
  105. break;
  106.    case CONNMGR_NOT_IMPLEMENTED:
  107. strcat(msg, "error code = not implemented");
  108. break;
  109.    case CONNMGR_TRANS_UNINITIALIZED:
  110. strcat(msg, "error code = transport layer uninitialized");
  111. break;
  112.    case CONNMGR_CONNECTED:
  113. strcat(msg, "error code = connected");
  114. break;
  115. default:
  116. strcat(msg, "error code = default");
  117. break;
  118. }
  119. break;
  120. case PROT_FACILITY_SUB_CODE_H245ENGINE:
  121. strcat(msg, "lower H.245 engine: ");
  122. switch (code)  {
  123. case H245SIG_SUCCESS:
  124. strcat(msg, "error code = success");
  125. break;
  126. case H245SIG_UNKNOWN_ERROR:
  127. strcat(msg, "error code = unknown error");
  128. break;
  129. case H245SIG_MEM_ALLOC_FAILED:
  130. strcat(msg, "error code = memory allocation failed");
  131. break;
  132. case H245SIG_INVALID_PARAM:
  133. strcat(msg, "error code = invalid parameter");
  134. break;
  135. case H245SIG_PENDING:
  136. strcat(msg, "error code = pending");
  137. break;
  138. case H245SIG_NOT_IMPLEMENTED:
  139. strcat(msg, "error code = not implemented");
  140. break;
  141. case H245SIG_ITEM_NOT_PRESENT:
  142. strcat(msg, "error code = item not present");
  143. break;
  144. case H245SIG_BUFFER_TOO_SMALL:
  145. strcat(msg, "error code = buffer too small");
  146. break;
  147. default:
  148. strcat(msg, "error code = default");
  149. break;
  150. }
  151. break;
  152. case PROT_FACILITY_SUB_CODE_H245SIG:
  153. strcat(msg, "H.245 signalling: ");
  154. switch (code)  {
  155. case H245SIG_SUCCESS:
  156. strcat(msg, "error code = success");
  157. break;
  158. case H245SIG_UNKNOWN_ERROR:
  159. strcat(msg, "error code = unknown error");
  160. break;
  161. case H245SIG_MEM_ALLOC_FAILED:
  162. strcat(msg, "error code = memory allocation failed");
  163. break;
  164. case H245SIG_INVALID_PARAM:
  165. strcat(msg, "error code = invalid parameter");
  166. break;
  167. case H245SIG_PENDING:
  168. strcat(msg, "error code = pending");
  169. break;
  170. case H245SIG_NOT_IMPLEMENTED:
  171. strcat(msg, "error code = not implemented");
  172. break;
  173. case H245SIG_ITEM_NOT_PRESENT:
  174. strcat(msg, "error code = item not present");
  175. break;
  176. case H245SIG_BUFFER_TOO_SMALL:
  177. strcat(msg, "error code = buffer too small");
  178. break;
  179. default:
  180. strcat(msg, "error code = default");
  181. break;
  182. }
  183. break;
  184. case PROT_FACILITY_SUB_CODE_H225RAS:
  185. strcat(msg, "RAS: ");
  186. switch (code)  {
  187. case H225RAS_SUCCESS:
  188. strcat(msg, "error code = success");
  189. break;
  190. case H225RAS_UNKNOWN_ERROR:
  191. strcat(msg, "error code = unknown error");
  192. break;
  193. case H225RAS_MEM_ALLOC_FAILED:
  194. strcat(msg, "error code = memory allocation failed");
  195. break;
  196. case H225RAS_INVALID_PARAM:
  197. strcat(msg, "error code = invalid parameter");
  198. break;
  199. case H225RAS_PENDING:
  200. strcat(msg, "error code = pending");
  201. break;
  202. case H225RAS_NOT_SUPPORTED:
  203. strcat(msg, "error code = not supported");
  204. break;
  205. case H225RAS_ITEM_NOT_PRESENT:
  206. strcat(msg, "error code = item not present");
  207. break;
  208. case H225RAS_BUFFER_TOO_SMALL:
  209. strcat(msg, "error code = buffer too small");
  210. break;
  211. case H225RAS_ASN1_ENCODE_FAILED:
  212. strcat(msg, "error code = ASN.1 encode failed");
  213. break;
  214. case H225RAS_BAD_MESSAGE:
  215. strcat(msg, "error code = bad message");
  216. break;
  217. default:
  218. strcat(msg, "error code = default");
  219. break;
  220. }
  221. break;
  222. case PROT_FACILITY_SUB_CODE_H225CS:
  223. strcat(msg, "H.225.0 call signalling: ");
  224. if (fac == PROT_FACILITY_CODE_Q931)  {
  225. switch (code)  {
  226. case Q931_SUCCESS:
  227. strcat(msg, "error code = success");
  228. break;
  229. case Q931_UNKNOWN_ERROR:
  230. strcat(msg, "error code = unknown error");
  231. break;
  232. case Q931_MEM_ALLOC_FAILED:
  233. strcat(msg, "error code = memory allocation failed");
  234. break;
  235. case Q931_INVALID_PARAM:
  236. strcat(msg, "error code = invalid parameter");
  237. break;
  238. case Q931_PENDING:
  239. strcat(msg, "error code = pending");
  240. break;
  241. case Q931_NOT_IMPLEMENTED:
  242. strcat(msg, "error code = not implemented");
  243. break;
  244. case Q931_BUFFER_TOO_SMALL:
  245. strcat(msg, "error code = buffer too small");
  246. break;
  247. case Q931_ENGINE_LISTENING:
  248. strcat(msg, "error code = engine listening");
  249. break;
  250. case Q931_INVALID_MESSAGE:
  251. strcat(msg, "error code = invalid message");
  252. break;
  253. case Q931_INVALID_IE:
  254. strcat(msg, "error code = invalid information element");
  255. break;
  256. case Q931_GOT_RELEASE_COMPLETE:
  257. strcat(msg, "error code = received RELEASE COMPLETE");
  258. break;
  259. case Q931_REMOTE_END_TIMEDOUT:
  260. strcat(msg, "error code = remote endpoint timed out");
  261. break;
  262. default:
  263. strcat(msg, "error code = default");
  264. break;
  265. }
  266. }
  267. if (fac == PROT_FACILITY_CODE_H225)  {
  268. switch (code)  {
  269. case H225CS_SUCCESS:
  270. strcat(msg, "error code = success");
  271. break;
  272. case H225CS_UNKNOWN_ERROR:
  273. strcat(msg, "error code = unknown error");
  274. break;
  275. case H225CS_MEM_ALLOC_FAILED:
  276. strcat(msg, "error code = memory allocation failed");
  277. break;
  278. case H225CS_INVALID_PARAM:
  279. strcat(msg, "error code = invalid parameter");
  280. break;
  281. case H225CS_PENDING:
  282. strcat(msg, "error code = pending");
  283. break;
  284. case H225CS_NOT_IMPLEMENTED:
  285. strcat(msg, "error code = not implemented");
  286. break;
  287. case H225CS_ITEM_NOT_PRESENT:
  288. strcat(msg, "error code = item not present");
  289. break;
  290. case H225CS_BUFFER_TOO_SMALL:
  291. strcat(msg, "error code = buffer too small");
  292. break;
  293. default:
  294. strcat(msg, "error code = default");
  295. break;
  296. }
  297. }
  298. break;
  299. case PROT_FACILITY_SUB_CODE_H4501:
  300. strcat(msg, "H.450.1: ");
  301. switch (code)  {
  302. case H450_SUCCESS:
  303. strcat(msg, "error code = success");
  304. break;
  305. case H450_UNKNOWN_ERROR:
  306. strcat(msg, "error code = unknown error");
  307. break;
  308. case H450_MEM_ALLOC_FAILED:
  309. strcat(msg, "error code = memory allocation failed");
  310. break;
  311. case H450_INVALID_PARAM:
  312. strcat(msg, "error code = invalid parameter");
  313. break;
  314. case H450_PENDING:
  315. strcat(msg, "error code = pending");
  316. break;
  317. case H450_NOT_IMPLEMENTED:
  318. strcat(msg, "error code = item not implemented");
  319. break;
  320. case H450_ITEM_NOT_PRESENT:
  321. strcat(msg, "error code = item not present");
  322. break;
  323. case H450_BUFFER_TOO_SMALL:
  324. strcat(msg, "error code = buffer too small");
  325. break;
  326. case H450_INCONSISTENT_TYPES:
  327. strcat(msg, "error code = inconsistent types");
  328. break;
  329. default:
  330. strcat(msg, "error code = default");
  331. break;
  332. }
  333. break;
  334. case PROT_FACILITY_SUB_CODE_H4502:
  335. strcat(msg, "H.450.2: ");
  336. switch (code)  {
  337. case H450_SUCCESS:
  338. strcat(msg, "error code = success");
  339. break;
  340. case H450_UNKNOWN_ERROR:
  341. strcat(msg, "error code = unknown error");
  342. break;
  343. case H450_MEM_ALLOC_FAILED:
  344. strcat(msg, "error code = memory allocation failed");
  345. break;
  346. case H450_INVALID_PARAM:
  347. strcat(msg, "error code = invalid parameter");
  348. break;
  349. case H450_PENDING:
  350. strcat(msg, "error code = pending");
  351. break;
  352. case H450_NOT_IMPLEMENTED:
  353. strcat(msg, "error code = item not implemented");
  354. break;
  355. case H450_ITEM_NOT_PRESENT:
  356. strcat(msg, "error code = item not present");
  357. break;
  358. case H450_BUFFER_TOO_SMALL:
  359. strcat(msg, "error code = buffer too small");
  360. break;
  361. case H450_INCONSISTENT_TYPES:
  362. strcat(msg, "error code = inconsistent types");
  363. break;
  364. default:
  365. strcat(msg, "error code = default");
  366. break;
  367. }
  368. break;
  369. case PROT_FACILITY_SUB_CODE_H4503:
  370. strcat(msg, "H.450.3: ");
  371. switch (code)  {
  372. case H450_SUCCESS:
  373. strcat(msg, "error code = success");
  374. break;
  375. case H450_UNKNOWN_ERROR:
  376. strcat(msg, "error code = unknown error");
  377. break;
  378. case H450_MEM_ALLOC_FAILED:
  379. strcat(msg, "error code = memory allocation failed");
  380. break;
  381. case H450_INVALID_PARAM:
  382. strcat(msg, "error code = invalid parameter");
  383. break;
  384. case H450_PENDING:
  385. strcat(msg, "error code = pending");
  386. break;
  387. case H450_NOT_IMPLEMENTED:
  388. strcat(msg, "error code = item not implemented");
  389. break;
  390. case H450_ITEM_NOT_PRESENT:
  391. strcat(msg, "error code = item not present");
  392. break;
  393. case H450_BUFFER_TOO_SMALL:
  394. strcat(msg, "error code = buffer too small");
  395. break;
  396. case H450_INCONSISTENT_TYPES:
  397. strcat(msg, "error code = inconsistent types");
  398. break;
  399. default:
  400. strcat(msg, "error code = default");
  401. break;
  402. }
  403. break;
  404. case PROT_FACILITY_SUB_CODE_ASN1:
  405. strcat(msg, "H.450 ASN.1: ");
  406. switch (code)  {
  407. case H450_ASN1_ENCODE_FAIL:
  408. strcat(msg, "error code = ASN.1 encoding failure");
  409. break;
  410. case H450_ASN1_DECODE_FAIL:
  411. strcat(msg, "error code = ASN.1 decoding failure");
  412. break;
  413. default:
  414. strcat(msg, "error code = default");
  415. break;
  416. }
  417. break;
  418. default:
  419. strcat(msg, "SUBCODE-DEFAULT: ");
  420. break;
  421. }  
  422. return(msg);
  423. }