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

IP电话/视频会议

开发平台:

WINDOWS

  1. //@DELB
  2. /*
  3.  * $Revision: 1.5 $
  4.  * $Date: 1998/12/21 16:51:47 $
  5.  */
  6. ////////////////////////////////////////////////////////////////
  7. //           Copyright (c) 1996 Lucent Technologies           //
  8. //                   All Rights Reserved                      //
  9. //                                                            //
  10. //                   THIS IS UNPUBLISHED                      //
  11. //                   PROPRIETARY SOURCE                       //
  12. //               CODE OF Lucent Technologies                  //
  13. //                       AND elemedia                         //
  14. //                                                            //
  15. //      The copyright notice above does not evidence any      //
  16. //     actual or intended publication of such source code     //
  17. ////////////////////////////////////////////////////////////////
  18. ////////////////////////////////////////////////////////////////
  19. // File : h450types.h                                         //
  20. //                                                            //
  21. // This file defines the basic types specified in H.450.1     //
  22. // and used in H.450.1, H.450.2 and H.450.3. It also defines  //
  23. // 2 classes, H450NonStdParam and H450AliasAddress, that are  //
  24. // temporary and will be replace by H225CSNonStdParameter     //
  25. // and H225CSAliasAddress in a future release of the stack.   //
  26. //                                                            //
  27. //                                                            //
  28. // History:                                                   //
  29. //  01_Jul_1998 Created                                       //
  30. //  22_Oct_1998 Added H4501Problem::SetProb() & GetProb()     //
  31. //  8 Dec  1998 added the compare operator to H450AliasAddr   //
  32. //                                                            //
  33. //                                                            //
  34. //////////////////////////////////////////////////////////////// 
  35. #if (!defined(__H450TYPES_H__))
  36. #define __H450TYPES_H__
  37. // Forward declarations
  38. class H4501Extension;
  39. class H4501Code;
  40. class H450Error;
  41. class H4501Problem;
  42. class H4501H225IE;
  43. class H4501UserSubaddress;
  44. class H4501PartySubaddress;
  45. class H4501EndpointAddr;
  46. class H450NonStdParam;
  47. class H450AliasAddress;
  48. struct Em_ObjectID;
  49. struct EmCallTransferUnspecifiedParameter;
  50. struct EmCallDiversionUnspecifiedParameter;
  51. struct EmCode;
  52. struct EmProblem;
  53. struct EmH225InformationElement;
  54. struct EmUserSpecifiedSubaddress;
  55. struct EmPartySubaddress;
  56. struct EmEndpointAddress;
  57. struct EmNonStandardParameter;
  58. struct EmAliasAddress;
  59. struct EmExtensionSet;
  60. //@DELE
  61. // -  enum Entity type
  62. // @see:
  63. // - H4501FacilityExt
  64. enum H4501EntityType
  65. {
  66.     ENTT_INVALID = 0,
  67.     ENTT_ENDPOINT,
  68.     ENTT_ANY_ENTITY,
  69.     ENTT_MAXIMUM
  70. };
  71. // -  enum ROS choice type
  72. // @see:
  73. // - H4501ROS
  74. enum H4501ROSType
  75. {
  76.     ROS_INVALID = 0,
  77.     ROS_INVOKE,
  78.     ROS_RETURN_RESULT,
  79.     ROS_RETURN_ERROR,
  80.     ROS_REJECT,
  81.     ROS_MAXIMUM
  82. };
  83. // -  enum Interpretation APDU
  84. // @see:
  85. // - H4501SuppService
  86. enum H4501InterpretationAPDU
  87. {
  88.     IAPDU_INVALID = 0, // invalid selection
  89.     IAPDU_DISCARD_PDU, // discard any unrecognized Invoke PDU
  90.     IAPDU_CLEAR_CALL, // clear call if any Invoke PDU is not recognized
  91.     IAPDU_REJECT_PDU, // reject any unrecognized Invoke PDU
  92.     IAPDU_MAXIMUM // used for range checking
  93. };
  94. // -  enum Problem type
  95. // @see:
  96. // - H4501Problem
  97. enum H4501ProblemType
  98. {
  99.     PROB_INVALID = 0,
  100. PROB_GENERAL_PROBLEM,
  101. PROB_INVOKE_PROBLEM,
  102. PROB_RETURN_RESULT_PROBLEM,
  103. PROB_RETURN_ERROR_PROBLEM,
  104. PROB_REJECT_PROBLEM
  105. };
  106. // -  enum General Problem
  107. // @see:
  108. // - H4501Problem
  109. enum H4501GeneralProblem
  110. {
  111.     GPROB_INVALID = -1,
  112. GPROB_UNRECOGNIZED_COMP = 0, // unrecognized component
  113. GPROB_MISTYPED_COMP, // mistyped component
  114. GPROB_BADLY_STRUCT_COMP // badly structured component
  115. };
  116. // -  enum Invoke Problem
  117. // @see:
  118. // - H4501Problem
  119. enum H4501InvokeProblem
  120. {
  121.     IPROB_INVALID = -1,
  122. IPROB_DUPLICATE_INVOC = 0, // duplicate invocation
  123. IPROB_UNRECOGNIZED_OP, // unrecognized operation
  124. IPROB_MISTYPED_ARG, // mistyped argument
  125. IPROB_RESOURCE_LIMIT, // resource limitation
  126. IPROB_RELEASE_IN_PROG, // release in progress
  127. IPROB_UNRECOGNIZED_ID, // unrecognized linked ID
  128. IPROB_UNEXPECTED_RESP, // linked response unexpected
  129. IPROB_UNEXPECTED_OP // unexpected linked operation
  130. };
  131. // -  enum Return Result Problem
  132. // @see:
  133. // - H4501Problem
  134. enum H4501ReturnResultProblem
  135. {
  136.     RRPROB_INVALID = -1,
  137. RRPROB_UNRECOGNIZED_INVOC = 0, // unrecognized invocation
  138. RRPROB_UNEXPECTED_RESULT, // result response unexpected
  139. RRPROB_MISTYPED_RESULT // mistyped result
  140. };
  141. // -  enum Return Error Problem
  142. // @see:
  143. // - H4501Problem
  144. enum H4501ReturnErrorProblem
  145. {
  146.     REPROB_INVALID = -1,
  147. REPROB_UNRECOGNIZED_INVOC = 0, // unrecognized invocation
  148. REPROB_UNEXPECTED_RESPONSE, // error response unexpected
  149. REPROB_UNRECOGNIZED_ERROR, // unrecognized error
  150. REPROB_UNEXPECTED_ERROR, // unexpected error
  151. REPROB_MISTYPED_PARAM // mistyped parameter
  152. };
  153. //@DELB
  154. // -  enum Reject Problem - Not used
  155. enum H4501RejectProblem
  156. {
  157.     RJPROB_INVALID = -1,
  158. RJPROB_GEN_UNRECOGNIZED_PDU = 0, // general-unrecognizedPDU
  159. RJPROB_GEN_MISTYPED_PDU = 1, // general-mistypedPDU
  160. RJPROB_GEN_BADLY_STRUCTURED_PDU = 2, // general-badlyStructuredPDU
  161. RJPROB_INV_DUPLICATE_INVOKE = 10, // invoke-duplicateInvocation
  162. RJPROB_INV_UNRECOGNIZED_OP = 11, // invoke-unrecognizedOperation
  163. RJPROB_INV_MISTYPED_ARGUMENT = 12, // invoke-mistypedArgument
  164. RJPROB_INV_RESOURCE_LIMITATION = 13, // invoke-resourceLimitation
  165. RJPROB_INV_RELEASE_IN_PROGRESS = 14, // invoke-releaseInProgress
  166. RJPROB_INV_UNRECOGNIZED_ID = 15, // invoke-unrecognizedLinkedId
  167. RJPROB_INV_LINKED_RESPONSE = 16, // invoke-linkedResponseUnexpected
  168. RJPROB_INV_UNEXPECTED_LINKED_OP = 17, // invoke-unexpectedLinkedOperation
  169. RJPROB_RES_UNRECOGNIZED_INVOKE = 20, // returnResult-unrecognizedInvocation
  170. RJPROB_RES_RESPONSE_UNEXPECTED = 21, // returnResult-resultResponseUnexpected
  171. RJPROB_RES_MISTYPED_RESULT = 22, // returnResult-mistypedResult
  172. RJPROB_ERR_UNRECOGNIZED_INVOKE = 30, // returnError-unrecognizedInvocation
  173. RJPROB_ERR_RESPONSE_UNEXPECTED = 31, // returnError-errorResponseUnexpected
  174. RJPROB_ERR_UNRECOGNIZED_ERROR = 32, // returnError-unrecognizedError
  175. RJPROB_ERR_UNEXPECTED_ERROR = 33, // returnError-unexpectedError
  176. RJPROB_ERR_MISTYPED_PARAMETER = 34 // returnError-mistypedParameter
  177. };
  178. //@DELE
  179. // -  enum Code type 
  180. // @see:
  181. // - H4501Code
  182. enum H4501CodeType
  183. {
  184.     CDT_INVALID = 0,
  185. CDT_LOCAL_CODE,
  186. CDT_GLOBAL_CODE,
  187.     CDT_MAXIMUM
  188. };
  189. //@DELB
  190. // -  enum
  191. enum H4501ScreeningIndicator
  192. {
  193.     SI_INVALID = -1,
  194. SI_USER_NOT_SCREENED = 0, // user provided not screened
  195. SI_USER_VERIFIED_PASSED, // user provided verified and passed
  196. SI_USER_VERIFIED_FAILED, // user provided verified and failed
  197. SI_NETWORK // networked provided
  198. };
  199. //@DELE
  200. // -  enum Error Parameter type
  201. // @see:
  202. // - H450Error
  203. enum H450ErrorParamType
  204. {
  205. ERRPT_INVALID = 0,
  206. ERRPT_CT_UNSPECIFIED, // the call transfer unspecified error parameter
  207. ERRPT_CD_UNSPECIFIED, // the call diversion unspecified error parameter
  208.     ERRPT_MAXIMUM
  209. };
  210. // -  enum Error type
  211. // @see:
  212. // - H450Error
  213. enum H450ErrorType
  214. {
  215. ERRT_INVALID = 0,
  216. ERRT_UNPARAMETERIZED, // all H450-x errors except unspecified error
  217. ERRT_PARAMETERIZED, // H450-2/H450-3 unspecified error 
  218.     ERRT_MAXIMUM
  219. };
  220. // -  enum Unspecified Parameter choice
  221. // @see:
  222. // - H4502UnspecifiedParam H4503UnspecifiedParam
  223. enum H450UnspecParamType
  224. {
  225. UNPT_INVALID = 0,
  226. UNPT_EXTENSION = 1, // the choice is extension
  227. UNPT_NON_STANDARD_DATA = 2, // the choice is nonStandard
  228.     UNPT_MAXIMUM
  229. };
  230. // -  enum Error code list 
  231. // @see:
  232. // - H450Error H4501ReturnError
  233. enum H450ErrorList
  234. {
  235. // These are from table 8/H.450.1
  236. //@GRPB
  237.     ERR_USER_NOT_SUBSCRIBED = 0, // userNotSubscribed
  238. ERR_REJECTED_BY_NETWORK = 1, // rejectedByNetwork
  239. ERR_REJECTED_BY_USER = 2, // rejectedByUser
  240. ERR_NOT_AVAILABLE = 3, // notAvailable
  241. ERR_INSUFFICIENT_INFO = 5, // insufficientInformation
  242. ERR_INVALID_USER_NUMBER = 6, // invalidServedUserNumber
  243. ERR_INVALID_CALL_STATE = 7, // invalidCallState
  244. ERR_SERVICE_NOT_PROVIDED = 8, // basicServiceNotProvided
  245. ERR_NOT_INCOMING_CALL = 9, // notIncomingCall
  246. ERR_SUPP_SERV_NOT_ALLOWED = 10, // supplementaryServiceInteractionNotAllowed
  247. ERR_RESOURCE_UNAVAILABLE = 11, // resourceUnavailable
  248. ERR_CALL_FAILURE = 25, // callFailure
  249. ERR_PROCEDURAL_ERROR = 43, // proceduralError
  250. //@GRPE
  251. // These are from H.450.2
  252. //@GRPB
  253. ERR_INVALID_REROUTING_NUMBER = 1004, // invalidReroutingNumber
  254. ERR_UNRECOGNIZED_CALL_ID = 1005, // unrecognizedCallIdentity
  255. ERR_ESTABLISHMENT_FAILURE = 1006, // establishmentFailure
  256. //@GRPE
  257. // These are from H.450.3
  258. //@GRPB
  259. ERR_INVALID_DIVERTED_NUMBER = 12, // invalidDivertedNumber
  260. ERR_SPECIAL_SERVICE_NUMBER = 14, // specialServiceNumber
  261. ERR_DIVERSION_TO_SERVED_USER = 15, // diversionToServedUserNumber
  262. ERR_NUMBER_OF_DIVERSIONS_EX = 24, // numberOfDiversionsExceeded
  263. ERR_TEMPORARILY_UNAVAILABLE = 1000, // temporarilyUnavailable
  264. ERR_NOT_AUTHORIZED = 1007, // notAuthorized
  265. //@GRPE
  266. // Both H.450.2 and H.450.3
  267. //@GRPB
  268. ERR_CT_UNSPECIFIED = 1008, // unspecified
  269. ERR_CD_UNSPECIFIED = 1008 // unspecified
  270. //@GRPE
  271. };
  272. // -  enum Party Sub Address type 
  273. // @see:
  274. // - H4501PartySubaddress
  275. enum H4501PartySubAddrType
  276. {
  277.     PSAT_INVALID = 0,
  278.     PSAT_USER_SPECIFIED, // user specified subaddress
  279.     PSAT_NSAP_ADDRESS // NSAP subaddress
  280. };
  281. /* 
  282.  *  This class is for the Manfacturer specific extensions.
  283.  *  This is used in the ItemExt class as well as the H450Error class.
  284.  *
  285.  * @See:
  286.  * - used in ItemExt H4502DummyRes H4502CTIdentifyRes H4502DummyArg
  287.  * H4502CTInitiateArg H4502CTSetupArg H4502CTUpdateArg
  288.  * H4502CTSubaddressArg H4502CTCompleteArg H4502CTActiveArg
  289.  */
  290. class DLLEXPORT H4501Extension
  291. {
  292.     public:
  293. // Constructor
  294.         H4501Extension();
  295. H4501Extension(H4501Extension &);
  296. // Destructor
  297.         ~H4501Extension();
  298. // This sets the extensionId
  299. ProtReturnCode SetObjectID(unsigned long *, int);
  300. // This gets the extensionId
  301. ProtReturnCode GetObjectID(unsigned long *&, int &);
  302. // This sets the extensionArgument
  303. ProtReturnCode SetArgument(unsigned char *, int);
  304. // This gets the extensionArgument
  305. ProtReturnCode GetArgument(unsigned char *&, int &);
  306.         H4501Extension & operator=(H4501Extension &);
  307. // Determines if the class has been sufficiently created
  308.         boolean Valid();
  309. //@DELB
  310.         // For protocol internal use.
  311.         EmExtensionSet *GetPriv();
  312.         ProtReturnCode SetPriv(EmExtensionSet *);
  313.     private:
  314. void Init();
  315. EmExtensionSet *mExtPtr;
  316. Em_ObjectID *mObjIdPtr;
  317.         int mIdSet;
  318.         int mArgSet;
  319.         int mIsValid;
  320. //@DELE
  321. };
  322. /*
  323.  *  This is the class for the CODE field. 
  324.  *  All of the currently defined CODE objects in H.450
  325.  *  are set to the local code type. However, methods
  326.  *  are provided in this class to deal with global
  327.  *  code types as well.
  328.  *
  329.  * The GetLocalCode(), and GetGlobalCode() 
  330.  * methods will return a H450_INCONSISTENT_TYPES 
  331.  * error if used on the wrong code type.
  332.  * @Caveats:
  333.  * For incoming code objects, use the GetType() 
  334.  * method first, then the approprite Get method.
  335.  *
  336.  * @See:
  337.  * - used in H4501Invoke H4501ReturnResult
  338.  * H4501ReturnError H450Error
  339.  */
  340. class DLLEXPORT H4501Code
  341. {
  342.     public:
  343. // Constructor
  344. H4501Code();
  345. H4501Code(H4501Code &);
  346. // Destructor
  347. ~H4501Code();
  348. // This gets the code type.
  349. //
  350. // A SetType method is not provided because 
  351. // both the SetLocalCode() and SetGlobalCode() 
  352. // methods below set the code type prior to 
  353. // setting the specific code.
  354. // @See:
  355. // - enum H4501CodeType
  356. int GetType();
  357. // This sets the local code field.
  358. //
  359. //<PRE>
  360. // For Operation type code used in H4501Invoke and
  361. // H4501ReturnResult see
  362. // - enum H4502CTOperationType
  363. // - enum H4503CDOperationType
  364. //
  365. // For ReturnError errorcode used in H4501ReturnError see
  366. // - class H450Error
  367. // - enum H450ErrorList
  368. //</PRE>
  369. ProtReturnCode SetLocalCode(int);
  370. // This gets the local code field.
  371. //
  372. //<PRE>
  373. // For Operation type code used in H4501Invoke and
  374. // H4501ReturnResult see
  375. // - enum H4502CTOperationType
  376. // - enum H4503CDOperationType
  377. //
  378. // For ReturnError errorcode used in H4501ReturnError see
  379. // - class H450Error
  380. // - enum H450ErrorList
  381. //</PRE>
  382. ProtReturnCode GetLocalCode(int &);
  383. // This sets the global code field.
  384. ProtReturnCode GetGlobalCode(unsigned long *&, int &);
  385. // This gets the global code field.
  386. ProtReturnCode SetGlobalCode(unsigned long *, int);
  387.         H4501Code & operator=(H4501Code &);
  388. // Determines if the class has been sufficiently created
  389.         boolean Valid();
  390. //@DELB
  391.         // For protocol internal use.
  392.         EmCode *GetPriv();
  393.         ProtReturnCode SetPriv(EmCode *);
  394. void SetValid();
  395. private:
  396. void Init();
  397. EmCode *mCodePtr;
  398. int mIsValid;
  399. //@DELE
  400. };
  401. /*
  402.  *  This is the abstract base class for all ERROR PARAMETER  fields.
  403.  *  The unspecified error is currently defined defined in H.450.2.
  404.  *
  405.  * @See:
  406.  * - used in H4502UnspecifiedParam H4503UnspecifiedParam H450Error
  407.  */
  408. class DLLEXPORT H450ErrorParameter
  409. {
  410.     public:
  411. // Constructor
  412. H450ErrorParameter(int);
  413. // Constructor
  414. virtual ~H450ErrorParameter();
  415. // This gets the error parameter type.
  416. // Currently only one error parameter type is 
  417. // defined: the unspecified error
  418. // @See:
  419. // - enum H450ErrorParamType 
  420. int GetParamType();
  421. // This factory method creates the appropriate error
  422. // parameter of the specified type.
  423. static ProtReturnCode Factory(H450ErrorParameter *&, int type);
  424. // Determines if the class has been sufficiently created
  425. virtual boolean Valid() = 0;
  426. //@DELB
  427.         // For protocol internal use.
  428.         virtual void *GetPriv() = 0;
  429.         virtual ProtReturnCode SetPriv(void *) = 0;
  430. private:
  431. int mType;
  432. //@DELE
  433. };
  434. /*
  435.  *  This is for the PARAMETER field of the H.450.2
  436.  *  call transfer unspecified error.
  437.  *
  438.  * The GetExtension() and GetNonStdData() methods will
  439.  * return a H450_INCONSISTENT_TYPES error if used on the 
  440.  * wrong parameter type
  441.  * @Caveats:
  442.  * For incoming parameter objects, use the GetParamType()
  443.  * method first, then the approprite Get method.
  444.  *
  445.  * @See:
  446.  * - used in H450ErrorParameter
  447.  */
  448. class DLLEXPORT H4502UnspecifiedParam : public H450ErrorParameter
  449. {
  450.     public:
  451. // Constructor
  452. H4502UnspecifiedParam();
  453. H4502UnspecifiedParam(H4502UnspecifiedParam &);
  454. // Destructor
  455. ~H4502UnspecifiedParam();
  456. // This gets the choice type.
  457. //
  458. // A SetParamType method is not provided because 
  459. // the SetExtension() and the SetNonStdData() methods 
  460. // below set the parameter choice prior to setting 
  461. // the specific parameter.
  462. // @See:
  463. // - enum H450UnspecParamType
  464. int GetType();
  465. // This sets the extension field.
  466. ProtReturnCode SetExtension(H4501Extension &);
  467. // This gets the extension field.
  468. ProtReturnCode GetExtension(H4501Extension &);
  469. // This sets the nonStandard field.
  470. ProtReturnCode SetNonStdData(H450NonStdParam &);
  471. // This gets the nonStandard field.
  472. ProtReturnCode GetNonStdData(H450NonStdParam &);
  473.         H4502UnspecifiedParam & operator=(H4502UnspecifiedParam &);
  474. // Determines if the class has been sufficiently created
  475.         boolean Valid();
  476. //@DELB
  477.         // For protocol internal use.
  478.         void *GetPriv();
  479.         ProtReturnCode SetPriv(void *);
  480. private:
  481. void Init();
  482. EmCallTransferUnspecifiedParameter *mUnPtr;
  483. int mIsValid;
  484. //@DELE
  485. };
  486. /*
  487.  *  This is for the PARAMETER field of the H.450.3
  488.  *  call diversion unspecified error.
  489.  *
  490.  * The GetExtension() and GetNonStdData() methods will
  491.  * return a H450_INCONSISTENT_TYPES error if used on the 
  492.  * wrong parameter type
  493.  * @Caveats:
  494.  * For incoming parameter objects, use the GetParamType()
  495.  * method first, then the approprite Get method.
  496.  *
  497.  * @See:
  498.  * - used in H450ErrorParameter
  499.  */
  500. class DLLEXPORT H4503UnspecifiedParam : public H450ErrorParameter
  501. {
  502.     public:
  503. // Constructor
  504. H4503UnspecifiedParam();
  505. H4503UnspecifiedParam(H4503UnspecifiedParam &);
  506. // Destructor
  507. ~H4503UnspecifiedParam();
  508. // This gets the choice type.
  509. //
  510. // A SetParamType method is not provided because 
  511. // the SetExtension() and the SetNonStdData() methods 
  512. // below set the parameter choice prior to setting 
  513. // the specific parameter.
  514. // @See:
  515. // - enum H450UnspecParamType
  516. int GetType();
  517. // This sets the extension field.
  518. ProtReturnCode SetExtension(H4501Extension &);
  519. // This gets the extension field.
  520. ProtReturnCode GetExtension(H4501Extension &);
  521. // This sets the nonStandard field.
  522. ProtReturnCode SetNonStdData(H450NonStdParam &);
  523. // This gets the nonStandard field.
  524. ProtReturnCode GetNonStdData(H450NonStdParam &);
  525.         H4503UnspecifiedParam & operator=(H4503UnspecifiedParam &);
  526. // Determines if the class has been sufficiently created
  527.         boolean Valid();
  528. //@DELB
  529.         // For protocol internal use.
  530.         void *GetPriv();
  531.         ProtReturnCode SetPriv(void *);
  532. private:
  533. void Init();
  534. EmCallDiversionUnspecifiedParameter *mUnPtr;
  535. int mIsValid;
  536. //@DELE
  537. };
  538. /*
  539.  *  This is for all of the errors defined in H.450.1, H.450.2
  540.  *  and H.450.3
  541.  *
  542.  * For incoming error objects, use the GetType()
  543.  * method first. If it is not an unspecified
  544.  * error, then use the GetH450Error() method to
  545.  * retrieve the actual error number. If it is
  546.  * an unspecified error, then use the GetParameter()
  547.  * method to retrieve the PARAMETER field.
  548.  *
  549.  * For outgoing error object, use the SetH450Error()
  550.  * alone to set all errors except the unspecified 
  551.  * error. For the unspecified error, use the 
  552.  * SetH450Error(ERR_CT_UNSPECIFIED) or SetH450Error(ERR_CD_UNSPECIFIED)
  553.  * method followed by the SetParameter() method.
  554.  *
  555.  * For all values except ERR_CT_UNSPECIFIED, and ERR_CD_UNSPECIFIED
  556.  * SetH450Error() sets the error type to 
  557.  * ERRT_UNPARAMETERIZED, and for ERR_*_UNSPECIFIED values, 
  558.  * SetH450Error() sets the type to ERRT_PARAMETERIZED. 
  559.  * In all cases, SetH450Error() sets the CODE 
  560.  * choice to local. 
  561.  *
  562.  * @See:
  563.  * - used in H4501ReturnError
  564.  */
  565. class DLLEXPORT H450Error
  566. {
  567.     public:
  568. // Constructor
  569. H450Error();
  570. H450Error(H450Error &);
  571. // Constructor
  572. ~H450Error();
  573. // This gets the error type.
  574. // @See:
  575. // - enum H450ErrorType
  576. int GetType();
  577. // This sets all but one H.450 error contain only CODE values.
  578. // This method sets the code, and sets the choice to local
  579. // @See:
  580. // - enum H450ErrorList
  581. ProtReturnCode SetH450Error(int);
  582. // This gets the error CODE value.
  583. ProtReturnCode GetH450Error(int &);
  584. // This sets errors that contain PARAMETER fields.
  585. // (Currently, only one is define: unspecified error)
  586. ProtReturnCode SetParameter(H450ErrorParameter &);
  587. // This gets error PARAMETER type.
  588. // (Currently, only one is define: unspecified error)
  589. // @See:
  590. // - enum H450ErrorParamType
  591. ProtReturnCode GetParameterType(int &);
  592. // This gets the error PARAMETER field.
  593. // @Caveats:
  594. //   Use GetParameterType first to determine the parameter type
  595. ProtReturnCode GetParameter(H450ErrorParameter &);
  596. // This sets the CODE field.
  597. // This method is general purpose by nature and is not
  598. // necessary since all H.450 errors use the local choice of
  599. // CODE. This is provided only for the sake of completeness.
  600. ProtReturnCode SetCode(H4501Code &);
  601. // This gets the CODE field.
  602. // This method is general purpose by nature and is not
  603. // necessary since all H.450 errors use the local choice of
  604. // CODE. This is provided only for the sake of completeness.
  605. ProtReturnCode GetCode(H4501Code &);
  606.         H450Error & operator=(H450Error &);
  607. // Determines if the class has been sufficiently created
  608.         boolean Valid();
  609. //@DELB
  610.         // For protocol internal use.
  611.         EmCode *GetCodePriv();
  612.         ProtReturnCode SetCodePriv(EmCode *);
  613.         EmCallTransferUnspecifiedParameter *GetCTUnspecifiedPriv();
  614.         ProtReturnCode SetCTUnspecifiedPriv(EmCallTransferUnspecifiedParameter *);
  615.         EmCallDiversionUnspecifiedParameter *GetCDUnspecifiedPriv();
  616.         ProtReturnCode SetCDUnspecifiedPriv(EmCallDiversionUnspecifiedParameter *);
  617. private:
  618. void Init();
  619. EmCode *mCodePtr;
  620. void *mUnPtr;
  621. int mIsValid;
  622. int mCodeSet;
  623. int mParamSet;
  624. int mParamType;
  625. int mType;
  626. //@DELE
  627. };
  628. /*  
  629.  *  This defines the problem choice used in the Reject ROS.
  630.  *
  631.  * All of the respective Get methods will return a 
  632.  * H450_INCONSISTENT_TYPES error if used on the wrong 
  633.  * problem type.
  634.  * @Caveats:
  635.  * For incoming problem objects, use the GetType() method
  636.  * first, then the approprite Get method.
  637.  *
  638.  * @See:
  639.  * - used in H4501Reject
  640.  */
  641. class DLLEXPORT H4501Problem
  642. {
  643.     public:
  644. // Constructor
  645. H4501Problem();
  646. H4501Problem(H4501Problem &);
  647. // Constructor
  648. ~H4501Problem();
  649. // This sets any of the 4 problem types.
  650. // @See:
  651. // - enum H4501GeneralProblem
  652. // - enum H4501InvokeProblem
  653. // - enum H4501ReturnResultProblem
  654. // - enum H4501ReturnErrorProblem
  655. ProtReturnCode SetProb(int type, int prob);
  656. // This gets any of the 4 problem types.
  657. // Use GetType() to get the problem type
  658. ProtReturnCode GetProb(int &type, int &prob);
  659. // This gets the problem type.
  660. //
  661. // A SetType() method is not provided because the 
  662. // SetProb() sets the type.  Also SetGeneralProb(),
  663. // SetInvokeProb(), SetResultProb() and the
  664. // SetErrorProb() methods all set the problem
  665. // type prior to setting the specific problem. 
  666. // @See:
  667. // - enum H4501ProblemType
  668. int GetType();
  669. // This is a convenience method to set general problems.
  670. // @See:
  671. // - enum H4501GeneralProblem
  672. ProtReturnCode SetGeneralProb(int);
  673. // This is a convenience method to get general problems.
  674. ProtReturnCode GetGeneralProb(int &);
  675. // This is a convenience method to set invoke problems.
  676. // @See:
  677. // - enum H4501InvokeProblem
  678. ProtReturnCode SetInvokeProb(int);
  679. // This is a convenience method to get invoke problems.
  680. ProtReturnCode GetInvokeProb(int &);
  681. // This is a convenience method to set return result problems.
  682. // @See:
  683. // - enum H4501ReturnResultProblem
  684. ProtReturnCode SetResultProb(int);
  685. // This is a convenience method to get return result problems.
  686. ProtReturnCode GetResultProb(int &);
  687. // This is a convenience method to set return error problems.
  688. // @See:
  689. // - enum H4501ReturnErrorProblem
  690. ProtReturnCode SetErrorProb(int);
  691. // This is a convenience method to get return error problems.
  692. ProtReturnCode GetErrorProb(int &);
  693.         H4501Problem & operator=(H4501Problem &);
  694. // Determines if the class has been sufficiently created
  695.         boolean Valid();
  696. //@DELB
  697.         // For protocol internal use.
  698.         EmProblem *GetPriv();
  699.         ProtReturnCode SetPriv(EmProblem *);
  700. void SetValid();
  701. private:
  702. void Init();
  703. EmProblem *mProbPtr;
  704. int mIsValid;
  705. //@DELE
  706. };
  707. /*  
  708.  *  This defines the H225InformationElement 
  709.  *
  710.  * @See:
  711.  * - used in ItemElements H4502CTUpdateArg 
  712.  * H4502CTCompleteArg H4502CTActiveArg
  713.  */
  714. class DLLEXPORT H4501H225IE
  715. {
  716.     public:
  717. // Constructor
  718.         H4501H225IE();
  719. H4501H225IE(H4501H225IE &);
  720. // Constructor
  721.         ~H4501H225IE();
  722. // This sets raw information elements.
  723. // see H.225 Q931IE::GetRaw for details
  724.         ProtReturnCode SetH225IE(unsigned char *, int len);
  725. // This gets raw information elements.
  726. // see H.225 Q931IE::GetRaw for details
  727.         ProtReturnCode GetH225IE(unsigned char *&, int &len);
  728. // This sets specific elemedia PX3230S stack 
  729. // defined information elements.
  730.         ProtReturnCode SetH225IE(Q931IE &);
  731. // This gets specific elemedia PX3230S stack 
  732. // defined information elements.
  733.         ProtReturnCode GetH225IE(Q931IE &);
  734.         H4501H225IE & operator=(H4501H225IE &);
  735. // Determines if the class has been sufficiently created
  736.         boolean Valid();
  737. //@DELB
  738.         // For protocol internal use.
  739.         EmH225InformationElement *GetPriv();
  740.         ProtReturnCode SetPriv(EmH225InformationElement *);
  741.     private:
  742. void Init();
  743.         EmH225InformationElement *mInfoElemPtr;
  744.         int mIsValid;
  745. //@DELE
  746. };
  747. /*  
  748.  *  This defines the UserSpecifiedSubaddress sequence.
  749.  *  It is used in the H.450.2 PartySubaddress choice.
  750.  *
  751.  * @See:
  752.  * - used in H4501PartySubaddress
  753.  */
  754. class DLLEXPORT H4501UserSubaddress
  755. {
  756.     public:
  757. // Constructor
  758.         H4501UserSubaddress();
  759. H4501UserSubaddress(H4501UserSubaddress &);
  760. // Destructor
  761.         ~H4501UserSubaddress();
  762. // Mandatory - This sets the subaddressInformation field
  763. // It is an octet string with a maximum length of 20.
  764.         ProtReturnCode SetSubaddrInfo(unsigned char *, int len);
  765. // Mandatory - This gets the subaddressInformation field
  766. // It is an octet string with a maximum length of 20.
  767.         ProtReturnCode GetSubaddrInfo(unsigned char *&, int &len);
  768. // Optional - This sets the oddCountIndicator field.
  769. // It is used when the coding of the subaddress is BCD.
  770. //
  771. // The constructor sets this field to not-included as a default.
  772. ProtReturnCode SetIndicator(boolean);
  773. // Optional - This gets the oddCountIndicator field.
  774. ProtReturnCode GetIndicator(boolean &);
  775.         H4501UserSubaddress & operator=(H4501UserSubaddress &);
  776. // Determines if the class has been sufficiently created
  777.         boolean Valid();
  778. //@DELB
  779.         // For protocol internal use.
  780.         EmUserSpecifiedSubaddress *GetPriv();
  781.         ProtReturnCode SetPriv(EmUserSpecifiedSubaddress *);
  782.     private:
  783. void Init();
  784.         EmUserSpecifiedSubaddress *mSubPtr;
  785.         int mIsValid;
  786. //@DELE
  787. };
  788. /*  
  789.  *  This defines the PartySubaddress ASN.1 choice.
  790.  *  This is used in the H.450.2 SubaddressTransferArg and throughout
  791.  *  H.450.3 Call Diversion Operations.
  792.  *
  793.  * All of the respective Get methods will 
  794.  * return a H450_INCONSISTENT_TYPES error if used on 
  795.  * the wrong subaddress type.
  796.  * @Caveats:
  797.  * For incoming subaddress objects, use the GetType() method first,
  798.  * then the approprite Get method.
  799.  *
  800.  * @See:
  801.  * - used in H4502CTSubaddressArg
  802.  */
  803. class DLLEXPORT H4501PartySubaddress
  804. {
  805.     public:
  806. // Constructor
  807.         H4501PartySubaddress();
  808. H4501PartySubaddress(H4501PartySubaddress &);
  809. // Destructor
  810.         ~H4501PartySubaddress();
  811. // This gets the party sub address type.
  812. //
  813. // A SetType method is not provided because the both 
  814. // the SetUserSpecified() and the SetNSAP() methods 
  815. // set the choice prior to setting the specific subaddress.
  816. // @See:
  817. // - enum H4501PartySubAddrType
  818. int GetType();
  819. // This sets the userSpecifiedSubaddress field 
  820. // which is UserSpecifiedSubaddress sequence.
  821.         ProtReturnCode SetUserSpecified(H4501UserSubaddress &);
  822. // This gets the userSpecifiedSubaddress field 
  823. // which is UserSpecifiedSubaddress sequence.
  824.         ProtReturnCode GetUserSpecified(H4501UserSubaddress &);
  825. // This sets the nsapSubaddress field.
  826. // It is a NSAPSubaddress octet string specified according to 
  827. // X.213 with a maximum length of 20.
  828.         ProtReturnCode SetNSAP(unsigned char *, int len);
  829. // This gets the nsapSubaddress field.
  830.         ProtReturnCode GetNSAP(unsigned char *&, int &len);
  831.         H4501PartySubaddress & operator=(H4501PartySubaddress &);
  832. // Determines if the class has been sufficiently created
  833.         boolean Valid();
  834. //@DELB
  835.         // For protocol internal use.
  836.         EmPartySubaddress *GetPriv();
  837.         ProtReturnCode SetPriv(EmPartySubaddress *);
  838.     private:
  839. void Init();
  840.         EmPartySubaddress *mPartyPtr;
  841.         int mIsValid;
  842. //@DELE
  843. };
  844. /*  
  845.  *  This defines the EndpointAddress ASN.1 sequence.
  846.  *  This is used in the H4502CTIdentifyRes, H4502CTInitiateArg,
  847.  *  H4502CTSetupArg, H4502CTUpdateArg, H4502CTCompleteArg,
  848.  *  H4502CTActiveArg H.450.2 classes as well as various H.450.3 Call
  849.  *  Diversion Operations.
  850.  *
  851.  *  Note that the name of the AliasAddress used in this class will 
  852.  *  change to H225CSAliasAddress in a future release of the stack.
  853.  *
  854.  * @See:
  855.  * - used in ItemNumber H4502CTIdentifyRes H4502CTInitiateArg
  856.  * H4502CTSetupArg H4502CTUpdateArg H4502CTCompleteArg 
  857.  * H4502CTActiveArg
  858.  */
  859. class DLLEXPORT H4501EndpointAddr
  860. {
  861.     public:
  862. // Constructor
  863.         H4501EndpointAddr();
  864. H4501EndpointAddr(H4501EndpointAddr &);
  865. // Destructor
  866.         ~H4501EndpointAddr();
  867. // Mandatory - This sets the destinationAddress field. 
  868. ProtReturnCode AddDestAddr(H450AliasAddress &);
  869. // Mandatory - This gets the number of destinationAddresses
  870. ProtReturnCode GetNumDestAddrs(int &count);
  871. // Mandatory - This gets the list of destinationAddresses
  872. // @Caveats:
  873. // Use GetNumDestAddrs() first
  874. ProtReturnCode GetDestAddrs(H450AliasAddress list[], int &count);
  875. // Optional - This sets the remoteExtensionAddress field.
  876.         ProtReturnCode SetRemoteExtAddr(H450AliasAddress &);
  877. // Optional - This gets the remoteExtensionAddress field.
  878.         ProtReturnCode GetRemoteExtAddr(H450AliasAddress &);
  879.         H4501EndpointAddr & operator=(H4501EndpointAddr &);
  880. // Determines if the class has been sufficiently created
  881.         boolean Valid();
  882. //@DELB
  883.         // For protocol internal use.
  884.         EmEndpointAddress *GetPriv();
  885.         ProtReturnCode SetPriv(EmEndpointAddress *);
  886. void SetValid();
  887.     private:
  888. void Init();
  889.         EmEndpointAddress *mAddrPtr;
  890.         int mIsValid;
  891. //@DELE
  892. };
  893. /**
  894.   *  NOTE:
  895.   *
  896.   *  The remaining class definitions are only temporary and
  897.   *  will be replaced by their H.225.0 counterpart in a future
  898.   *  release of the stack.
  899.  **/
  900. /*  
  901.  *  This defines the NonStandardParameter ASN.1 sequence.
  902.  *
  903.  *  Note that the name of this class, H450NonStdParam, will 
  904.  *  change to H225CSNonStdParameter in a future release of 
  905.  *  the stack.
  906.  *
  907.  * @See:
  908.  * - used in ItemExt H4502UnspecifiedParam
  909.  */
  910. class DLLEXPORT H450NonStdParam
  911. {
  912.     public:
  913. // Constructor
  914.         H450NonStdParam();
  915. H450NonStdParam(H450NonStdParam &);
  916. // Destructor
  917.         ~H450NonStdParam();
  918. // This gets the type received
  919. // @See:
  920. // - enum H225CSNonStdIDType
  921. int GetIDType();
  922. // This sets the H221NonStd choice.
  923.         ProtReturnCode SetH221NonStd(unsigned short t35_cc, 
  924.          unsigned short t35_ext, unsigned short m_code);
  925. // This gets the H221NonStd choice.
  926.         ProtReturnCode GetH221NonStd(unsigned short &t35_cc, 
  927.          unsigned short &t35_ext, unsigned short &m_code);
  928. // This sets the ObjectIdentifier choice.
  929.         ProtReturnCode SetObjectIdentifier(unsigned long *data, int len);
  930. // This gets the ObjectIdentifier choice.
  931.         ProtReturnCode GetObjectIdentifier(unsigned long *&data, int &len);
  932. // Mandatory - This sets the nonStandardData field
  933.         ProtReturnCode SetNonStdData(unsigned char *data, int len);
  934. // Mandatory - This gets the nonStandardData field
  935.         ProtReturnCode GetNonStdData(unsigned char *&data, int &len);
  936.         H450NonStdParam & operator=(H450NonStdParam &);
  937. // Determines if the class has been sufficiently created
  938.         boolean Valid();
  939. //@DELB
  940.         // For protocol internal use.
  941.         EmNonStandardParameter *GetPriv();
  942.         ProtReturnCode SetPriv(EmNonStandardParameter *);
  943. void SetValid();
  944.     private:
  945. void Init();
  946.         EmNonStandardParameter *mParamPtr;
  947.         int mIsValid;
  948. int mDataSet;
  949. int mIdSet;
  950. //@DELE
  951. };
  952. /*  
  953.  *  This defines the AliasAddress ASN.1 choice.
  954.  *
  955.  *  Note that the name of this class, H450AliasAddress, will 
  956.  *  change to H225CSAliasAddress in a future release of the stack.
  957.  *
  958.  * All of the respective Get methods will return an
  959.  * H450_INCONSISTENT_TYPES error if used on the wrong address
  960.  * type.
  961.  * @Caveats:
  962.  * For incoming alias address objects, use the GetType() method 
  963.  * first, then the approprite Get method.
  964.  *
  965.  * @See:
  966.  * - used in H4501FacilityExt H4501EndpointAddr
  967.  */
  968. class DLLEXPORT H450AliasAddress
  969. {
  970.     public:
  971. // Constructor
  972.         H450AliasAddress();
  973. H450AliasAddress(H450AliasAddress &);
  974. // Destructor
  975.         ~H450AliasAddress();
  976. // This gets the type received
  977. //
  978. // A SetType method is not provided because the SetH323ID(),
  979. // SetE164(), SetURLID(), SetEMailID(), SetTransportID and 
  980. // SetPartyNumber() methods below set the choice prior to 
  981. // setting the specific alias address.
  982. // @Set:
  983. // - H225CSAliasAddressType
  984. int GetType();
  985. // This sets the e164 field.
  986. // It is a IA5String with a maximum length of 128.
  987.         ProtReturnCode SetE164(char *, int len);
  988. // This gets the e164 field.
  989.         ProtReturnCode GetE164(char *&, int &len);
  990. // This sets the h323-ID field.
  991. // It is a BMPString with a maximum length of 256.
  992.         ProtReturnCode SetH323ID(unsigned short *, int len);
  993. // This gets the h323-ID field.
  994.         ProtReturnCode GetH323ID(unsigned short *&, int &len);
  995. // This sets the url-ID field.
  996. // It is a IA5String with a maximum length of 512.
  997.         ProtReturnCode SetURLID(char *, int len);
  998. // This gets the url-ID field.
  999.         ProtReturnCode GetURLID(char *&, int &len);
  1000. // This sets the transportID field.
  1001. // It is a TransportAddress.
  1002.         ProtReturnCode SetTransportID(sockaddr *);
  1003. // This gets the transportID field.
  1004.         ProtReturnCode GetTransportID(sockaddr *);
  1005. // This sets the email-ID field.
  1006. // It is a IA5String with a maximum length of 512.
  1007.         ProtReturnCode SetEMailID(char *, int len);
  1008. // This gets the email-ID field.
  1009.         ProtReturnCode GetEMailID(char *&, int &len);
  1010.         H450AliasAddress & operator=(H450AliasAddress &);
  1011.         boolean operator==(H450AliasAddress &);
  1012. // Determines if the class has been sufficiently created
  1013.         boolean Valid();
  1014. //@DELB
  1015.         // For protocol internal use.
  1016.         EmAliasAddress *GetPriv();
  1017.         ProtReturnCode SetPriv(EmAliasAddress *);
  1018. void SetValid();
  1019.     private:
  1020. void Init();
  1021.         EmAliasAddress *mAliasPtr;
  1022.         int mIsValid;
  1023. //@DELE
  1024. };
  1025. //@DELB
  1026. #endif //  __H450TYPES_H__
  1027. //@DELE