00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __OPAL_SVCCTRL_H
00031 #define __OPAL_SVCCTRL_H
00032
00033 #ifdef P_USE_PRAGMA
00034 #pragma interface
00035 #endif
00036
00037 #include <opal/buildopts.h>
00038
00039 class H225_ServiceControlDescriptor;
00040 class H225_ServiceControlIndication;
00041 class H225_ServiceControlResponse;
00042
00043 class H248_SignalsDescriptor;
00044 class H248_SignalRequest;
00045
00046 class H323EndPoint;
00047 class H323Connection;
00048
00049
00051
00055 class H323ServiceControlSession : public PObject
00056 {
00057 PCLASSINFO(H323ServiceControlSession, PObject);
00058 public:
00063 H323ServiceControlSession();
00065
00073 virtual PBoolean IsValid() const = 0;
00074
00082 virtual PString GetServiceControlType() const;
00083
00091 virtual PBoolean OnReceivedPDU(
00092 const H225_ServiceControlDescriptor & descriptor
00093 ) = 0;
00094
00102 virtual PBoolean OnSendingPDU(
00103 H225_ServiceControlDescriptor & descriptor
00104 ) const = 0;
00105
00106 enum ChangeType {
00107 OpenSession,
00108 RefreshSession,
00109 CloseSession
00110 };
00111
00116 virtual void OnChange(
00117 unsigned type,
00118 unsigned sessionId,
00119 H323EndPoint & endpoint,
00120 H323Connection * connection
00121 ) const = 0;
00123 };
00124
00125
00129 class H323HTTPServiceControl : public H323ServiceControlSession
00130 {
00131 PCLASSINFO(H323HTTPServiceControl, H323ServiceControlSession);
00132 public:
00137 H323HTTPServiceControl(
00138 const PString & url
00139 );
00140
00143 H323HTTPServiceControl(
00144 const H225_ServiceControlDescriptor & contents
00145 );
00147
00155 virtual PBoolean IsValid() const;
00156
00164 virtual PString GetServiceControlType() const;
00165
00171 virtual PBoolean OnReceivedPDU(
00172 const H225_ServiceControlDescriptor & contents
00173 );
00174
00180 virtual PBoolean OnSendingPDU(
00181 H225_ServiceControlDescriptor & contents
00182 ) const;
00183
00188 virtual void OnChange(
00189 unsigned type,
00190 unsigned sessionId,
00191 H323EndPoint & endpoint,
00192 H323Connection * connection
00193 ) const;
00195
00196 protected:
00197 PString url;
00198 };
00199
00200
00203 class H323H248ServiceControl : public H323ServiceControlSession
00204 {
00205 PCLASSINFO(H323H248ServiceControl, H323ServiceControlSession);
00206 public:
00211 H323H248ServiceControl();
00212
00215 H323H248ServiceControl(
00216 const H225_ServiceControlDescriptor & contents
00217 );
00219
00228 virtual PBoolean OnReceivedPDU(
00229 const H225_ServiceControlDescriptor & contents
00230 );
00231
00238 virtual PBoolean OnSendingPDU(
00239 H225_ServiceControlDescriptor & contents
00240 ) const;
00241
00248 virtual PBoolean OnReceivedPDU(
00249 const H248_SignalsDescriptor & descriptor
00250 );
00251
00258 virtual PBoolean OnSendingPDU(
00259 H248_SignalsDescriptor & descriptor
00260 ) const;
00261
00267 virtual PBoolean OnReceivedPDU(
00268 const H248_SignalRequest & request
00269 ) = 0;
00270
00276 virtual PBoolean OnSendingPDU(
00277 H248_SignalRequest & request
00278 ) const = 0;
00280 };
00281
00282
00285 class H323CallCreditServiceControl : public H323ServiceControlSession
00286 {
00287 PCLASSINFO(H323CallCreditServiceControl, H323ServiceControlSession);
00288 public:
00293 H323CallCreditServiceControl(
00294 const PString & amount,
00295 PBoolean mode,
00296 unsigned duration = 0
00297 );
00298
00301 H323CallCreditServiceControl(
00302 const H225_ServiceControlDescriptor & contents
00303 );
00305
00313 virtual PBoolean IsValid() const;
00314
00320 virtual PBoolean OnReceivedPDU(
00321 const H225_ServiceControlDescriptor & contents
00322 );
00323
00329 virtual PBoolean OnSendingPDU(
00330 H225_ServiceControlDescriptor & contents
00331 ) const;
00332
00338 virtual void OnChange(
00339 unsigned type,
00340 unsigned sessionId,
00341 H323EndPoint & endpoint,
00342 H323Connection * connection
00343 ) const;
00345
00346 protected:
00347 PString amount;
00348 PBoolean mode;
00349 unsigned durationLimit;
00350 };
00351
00352
00353 #endif // __OPAL_SVCCTRL_H
00354
00355