sipXcallLib home page


PtCall.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2004-2006 SIPfoundry Inc.
3 // Licensed by SIPfoundry under the LGPL license.
4 //
5 // Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
6 // Licensed to SIPfoundry under a Contributor Agreement.
7 //
8 // $$
10 
11 #ifndef _PtCall_h_
12 #define _PtCall_h_
13 
14 // SYSTEM INCLUDES
15 // APPLICATION INCLUDES
16 #include <ptapi/PtDefs.h>
17 #include "os/OsBSem.h"
18 #include "os/OsProtectEventMgr.h"
19 #include "cp/CpCallManager.h"
20 
21 // DEFINES
22 // MACROS
23 // EXTERNAL FUNCTIONS
24 // EXTERNAL VARIABLES
25 // CONSTANTS
26 // STRUCTS
27 // TYPEDEFS
28 // FORWARD DECLARATIONS
29 class PtAddress;
30 class PtCallListener;
31 class PtConnection;
32 class PtProvider;
33 class PtSessionDesc;
34 class PtTerminal;
36 class TaoClientTask;
37 class TaoServerTask;
38 class TaoReference;
39 class TaoObjectMap;
40 
41 //:A PtCall object models a telephone call.
42 // A call can have zero or more connections. A two-party call has two
43 // connections, and a conference call has three or more connections.
44 // Each connection models the relationship between a call and an address,
45 // where an address identifies a particular party or set of parties on a
46 // call.
47 //
48 // <H3>Creating PtCall Objects</H3>
49 // Applications create instances of a PtCall object with the
50 // PtProvider.createCall() method, which returns a pointer to a PtCall
51 // object that has zero PtConnections and is in the PtCall::IDLE state.
52 // The PtCall maintains a reference to its provider for the life of that
53 // PtCall object. The PtProvider associated with a PtCall is obtained
54 // via the PtCall.getProvider() method.
55 //
56 // <H3>Call States</H3>
57 // A PtCall has a state that is obtained via the PtCall.getState() method.
58 // This state describes the current progress of a telephone call, where it is
59 // in its life cycle, and how many connections exist on the call. The PtCall
60 // state may be one of three values: PtCall::IDLE, PtCall::ACTIVE, or
61 // PtCall::INVALID. A description of each state follows.<br>
62 // <br>
63 // <dl>
64 // <dt><b>PtCall::IDLE</b></dt>
65 // <dd>This is the initial state for all calls. In this state, the call has
66 // zero connections; that is, PtCall.getConnections() must return an empty
67 // array.</dd>
68 // <br>
69 // <dt><b>PtCall::ACTIVE</b></dt>
70 // <dd>A call with some current ongoing activity is in this state. Calls with
71 // one or more associated connections must be in this state. If a call is
72 // in this state, the PtCall.getConnections() method must return an array
73 // containing at least one item.</dd>
74 // <br>
75 // <dt><b>PtCall::INVALID</b></dt>
76 // <dd>This is the final state for all calls. PtCall objects that lose all of
77 // their PtConnection objects (via a transition of the PtConnection object
78 // into the PtConnection::DISCONNECTED state) move into this state. Calls in
79 // this state have zero connections and these PtCall objects may not be used
80 // for any future action. In this state, the PtCall.getConnections() method
81 // must return an empty array. </dd>
82 // </dl>
83 // <H3>Calls and Connections</H3>
84 // A PtCall maintains a list of the PtConnections on that call. Applications
85 // obtain an array of PtConnection pointers associated with the call via the
86 // PtCall.getConnections() method. A PtCall retains a reference to a
87 // PtConnection only if it is not in the PtConnection::DISCONNECTED state.
88 // Therefore, if a PtCall has a reference to a PtConnection, then that
89 // PtConnection must not be in the PtConnection::DISCONNECTED state. When a
90 // connection moves into the PtConnection::DISCONNECTED state (e.g., when a
91 // party hangs up), the PtCall loses its reference to that PtConnection, which
92 // is then no longer reported via the PtCall.getConnections() method.
93 //
94 // <H3>Call Information methods</H3>
95 // The PtCall class provides methods that return the calling address, calling
96 // terminal, called address, and last redirected address information. These
97 // methods only make sense for a two-party call.<br> <br>
98 // <ul>
99 // <li>The <b>calling address</b>, as returned by the PtCall.getCallingAddress()
100 // method, is the PtAddress that originally placed the PtCall. </li><br>
101 // <br>
102 // <li>The <b>calling terminal</b>, as returned by the PtCall.getCallingTerminal()
103 // method, is the PtTerminal which originally placed the PtCall. </li><br>
104 // <br>
105 // <li>The <b>called address</b>, as returned by the PtCall.getCalledAddress()
106 // method, is the PtAddress to which the PtCall was originally placed. </li><br>
107 // <br>
108 // <li>The <b>last redirected address</b>, as returned by the
109 // PtCall.getLastRedirectedAddress() method, is the PtAddress to which this
110 // PtCall was placed before the current destination address. For example, if
111 // a PtCall was forwarded from one PtAddress to another, then the first
112 // PtAddress is the last redirected PtAddress for this call.</li></ul>
113 // <p>
114 // Each of these methods returns NULL if their values are unknown at the
115 // present time. During the lifetime of a PtCall, an implementation may
116 // learn this additional information and, as a result, return different values
117 // for some or all of these methods.
118 //
119 // <H3>Conferencing Telephone Calls</H3>
120 // The conferencing feature supported by this interface permits two telephone
121 // calls to be "merged". That is, two PtCalls are merged into a single
122 // PtCall with the union of all of the participants of the two PtCalls being
123 // placed on the single PtCall.
124 // <p>
125 // Applications invoke the PtCall.conference() method to perform the
126 // conferencing feature. This method is given the "second" PtCall as an
127 // argument. All participants are moved from the second PtCall to the PtCall
128 // on which the method is invoked. The second PtCall moves into the
129 // PtCall::INVALID state as a result.
130 // <p>
131 // In order for the conferencing feature to happen, there must be a common
132 // participant in both PtCalls, as represented by a single PtTerminal and
133 // two PtTerminalConnections, one on each of the two PtCalls. These two
134 // PtTerminalConnections are known as the conference controllers. In the
135 // real world, one of the two telephone calls must be on hold with respect
136 // to the controlling PtTerminal, and hence, the PtTerminalConnection on
137 // the second PtCall must be in the PtTerminalConnection::HELD state. The
138 // two conference controlling PtTerminalConnections are merged into one as
139 // a result of this method.
140 // <p>
141 // Applications may control which PtTerminalConnection acts as the
142 // conference controller via the PtCall.setConferenceController() method.
143 // The PtCall.getConferenceController() method returns the current
144 // conference controller, or NULL if there is none. If no conference
145 // controller is set, the implementation chooses a suitable
146 // PtTerminalConnection when the conferencing feature is invoked.
147 //
148 // <H3>Transferring Telephone Calls</H3>
149 // The transfer feature supported by this interface permits one PtCall to
150 // be "moved" to another PtCall. That is, all of the participants from
151 // one PtCall are moved to another PtCall, except for the transferring
152 // participant which drops off from both PtCalls.
153 // <p>
154 // Applications invoke the PtCall.transfer() method to perform the transfer
155 // feature. There are two overloaded versions of this method: <br>
156 // <ul>
157 // <li>The first
158 // method takes a second PtCall as an argument. This method acts similarly
159 // to PtCall.conference(), except the two PtTerminalConnections on each
160 // PtCall with a common PtTerminal are removed from both PtCalls. </li>
161 // <br>
162 // <li>The second
163 // version takes a telephone address URL as an argument. This method
164 // removes the transfer controller participant while placing the telephone
165 // call to the designated address. This version of the transfer
166 // feature is often known as a single-step transfer. </li>
167 // </ul>
168 // <p>
169 // In order for the transfer feature to happen, there must be a participant
170 // which acts as the transfer controller. The transfer controller is a
171 // PtTerminalConnection around which the transfer is performed. In the first
172 // version of the PtCall.transfer() method, the transfer controller must be
173 // present on each of the two PtCalls and share a common PtTerminal. In the
174 // second version, the transfer controller only applies to the PtCall object
175 // on which the method is invoked (since there is no second PtCall involved).
176 // In both cases, the transfer controller participant is no longer part of
177 // any PtCall once the transfer feature is complete.
178 // <p>
179 // Applications may control which PtTerminalConnection acts as the transfer
180 // controller via the PtCall.setTransferController() method. The
181 // PtCall.getTransferController() method returns the current transfer
182 // controller, or NULL if there is none. If no transfer controller is set,
183 // the implementation chooses a suitable PtTerminalConnection when the
184 // conferencing feature is invoked.
185 //
186 // <H3>Consultation Calls</H3>
187 // Consultation calls are special types of telephony calls created (often
188 // temporarily) for a specific purpose. Consultation calls can be created if
189 // a user wants to "consult" with another party briefly while currently on
190 // a PtCall, or for the purpose of conferencing or transferring
191 // with a PtCall. Consequently, consultation calls are always associated
192 // with another existing PtCall.
193 // <p>
194 // Applications invoke the PtCall.consult() method to perform the
195 // consultation feature. The instance on which the method is invoked is
196 // always the "idle" PtCall on which the consultation takes place.
197 // This method takes a
198 // PtTerminalConnection and a string telephone address URL as arguments.
199 // This consultation telephone call is associated with the PtCall of the
200 // PtTerminalConnection argument. This method places a telephone call from
201 // the same originating endpoint specified by the PtTerminalConnection
202 // argument to the designated telephone address.
203 // <h3>
204 // Additional Methods</h3>
205 // The PtCall.addParty() method adds a single party to a PtCall given some
206 // telephone address URL. The PtCall.drop() method then disconnects all parties
207 // from the PtCall, and moves it into the PtCall::INVALID state.
208 //
209 // <H3>Listeners and Events</H3>
210 // All events pertaining to a PtCall object are reported via
211 // PtCallListener objects. Applications instantiate an object that is
212 // derived from the PtCallListener class and use the PtCall.addCallListener()
213 // method to begin the delivery of events.
214 // <p>
215 // PtConnection-related and PtTerminalConnection-related events are also
216 // reported via the PtCallListener objects. These events include the creation
217 // of these objects and their state changes. Events that are reported by
218 // PtCallListener objects that pertain to PtConnections and
219 // PtTerminalConnections are instances of (or descendants of) the
220 // PtConnectionEvent class and the PtTerminalConnectionEvent class,
221 // respectively.
222 // <p>
223 // An event is delivered to the application whenever the state of the PtCall
224 // changes. The events corresponding to PtCall state changes are
225 // CALL_ACTIVE and CALL_INVALID.
226 //
227 // <H4>When Call Event Transmission Ends</H4>
228 // Applications receive events on a listener until the listener is removed
229 // or until the PtCall object is no longer observable. In these instances,
230 // each listener receives a CALL_EVENT_TRANSMISSION_ENDED event as its final
231 // event.
232 //
233 // <H4>Event Granularity</H4>
234 // An application may control the granularity of the events that are reported.
235 // Registering for the highest level (PtCallListener) will direct the
236 // implementation to send only PtCall-related events (including meta events).
237 // Registering as a listener at a lower level (PtConnectionListener or
238 // PtTerminalConnectionListener) directs the implementation to provide
239 // successively more detailed events.
240 //
241 // <H4>Registering Call Listeners via Address and Terminal</H4>
242 // Applications may also receive events about a call by adding a listener via
243 // the PtAddress or PtTerminal objects; this is done with the
244 // PtAddress.addCallListener()
245 // and PtTerminal.addCallListener() (and related) methods. These methods
246 // provide the ability for an application to receive call-related events when
247 // a PtCall contains a particular PtAddress or PtTerminal. In particular,
248 // methods exist to add a PtCallListener, PtConnectionListener and
249 // PtTerminalConnectionListener via PtAddress and PtTerminal.
250 // See the specifications for the PtAddress and PtTerminal classes for more
251 // details.
252 
253 class PtCall
254 {
255 /* //////////////////////////// PUBLIC //////////////////////////////////// */
256 public:
257 
259  {
263  };
264 
265 /* ============================ CREATORS ================================== */
266  PtCall();
267  //:Default constructor
268 
269  PtCall(TaoClientTask *pClient, const char* callId);
270 
271  PtCall(const char* callId);
272 
273  PtCall(const PtCall& rPtCall);
274  //:Copy constructor (not implemented for this class)
275 
276  virtual
277  ~PtCall();
278  //:Destructor
279 
280 /* ============================ MANIPULATORS ============================== */
281 
282  PtCall& operator=(const PtCall& rhs);
283  //:Assignment operator (not implemented for this class)
284 
285  virtual PtStatus addCallListener(PtCallListener& rCallListener);
286  //:Adds a listener to this call.
291 
292  virtual PtStatus addParty(const char* newPartyURL,
293  PtSessionDesc* pSessionDesc,
294  PtConnection& rConnection);
295  //:Adds an additional party to an existing call.
296  // This is sometimes called a "single-step conference" because a party
297  // is conferenced directly into the call. The telephone address
298  // provided as the <i>newPartyURL</i> argument must be valid.
307 
308  virtual PtStatus conference(PtCall& rOtherCall);
309  //:Merges two PtCalls together, resulting in the union of the
310  //:participants of both PtCalls being placed on a single PtCall.
311  // If successful, all of the participants from <i>rOtherCall</i> will
312  // be moved to the PtCall on which this method is invoked.
318 
319  virtual PtStatus connect(PtTerminal& rTerminal, PtAddress& rAddress,
320  const char* destinationURL, PtSessionDesc* pSessionDesc);
321  //:Places a telephone call from an originating endpoint to a destination
322  //:address URL.
323  // The <i>pSessionDesc</i> argument points to an object containing the
324  // attributes requested for the connection.
334 
335  virtual PtStatus consult(PtTerminalConnection& rTerminalConnection,
336  const char* destinationURL,
337  PtSessionDesc* pSessionDesc,
338  PtConnection& rSrcConnection,
339  PtConnection& rDstConnection);
340  //:Creates a new call between the PtTerminal associated with
341  //:<i>rTerminalConnection</i> and the destination indicated by
342  //:<i>destinationURL</i>.
353 
354  virtual PtStatus drop(void);
355  //:Drops the entire call.
356  // This method is equivalent to using the PtConnection.disconnect()
357  // method on each PtConnection which is part of the PtCall. Typically,
358  // each PtConnection on the PtCall will move into the
359  // PtConnection::DISCONNECTED state, each PtTerminalConnection will
360  // move into the PtTerminalConnection::DROPPED state, and the PtCall
361  // will move into the PtCall::INVALID state.
364 
365  virtual PtStatus removeCallListener(PtCallListener& rCallListener);
366  //:Removes the indicated listener from this call.
371 
373  //:Sets the PtTerminalConnection that acts as the conference controller
374  //:for this call.
375  // The conference controller represents the participant in the call
376  // around which a conference takes place.
381 
383  //:Sets the PtTerminalConnection that acts as the transfer controller
384  //:for this call.
385  // The transfer controller represents the participant in the call
386  // around which a transfer takes place.
391 
392  virtual PtStatus transfer(PtCall& rOtherCall);
393  //:Moves all participants from one PtCall to another, with the
394  //:exception of a selected common participant.
400 
401  virtual PtStatus transfer(const char* destinationURL,
402  PtSessionDesc* pSessionDesc,
403  PtConnection& rNewConnection,
404  int transferType = CpCallManager::CP_BLIND_TRANSFER);
405  //:Transfers all participants currently on this PtCall, with the
406  //:exception of the transfer controller participant, to the address
407  //:indicated by the destination URL.
416 
417 
418  virtual PtStatus hold(UtlBoolean bBridgeParticipants = TRUE) ;
419  //:Places the call on hold and optionally allows call participants to
420  //:continue speaking among other participants (bridged) or participants
421  //:are requested to not transmit date (far end hold).
422  //
424  // placed on local hold or far end hold. If TRUE, local
425  // hold is selected and participants are bridged and able
426  // to communicate with each other. If FALSE, all parties
427  // are muted and not sent audio data.
428  //
431 
432  virtual PtStatus unhold(UtlBoolean bRemoteParticipants = TRUE) ;
433  //:Places the call into focus and takes any held connections off hold.
434  //:Optionally remote participants can be taken off hold or left in
435  //:their present state.
437  // are taken off hold or not. If TRUE, all participants
438  // are taken off hold. If FALSE, only the local connection
439  // is taken off hold (placed into focus).
442 
443  virtual PtStatus setCodecCPULimit(const int limit,
444  const UtlBoolean bAutoRenegotiate = TRUE);
445  //:Sets the CPU codec limit for this call.
447  // be set to LOW (0) or HIGH (1). If set to LOW, only LOW CPU
448  // intensive codecs are allowed. If set to HIGH, both LOW and
449  // HIGH CPU intensive codes are allowed.
451  // automatically force a renegotation of codecs to match the
452  // specified level.
455 
456 
458  //:Forces the renegotation of all connections for this call.
461 
462 
463 
464 /* ============================ ACCESSORS ================================= */
465 
466  virtual PtStatus getCallListeners(PtCallListener* callListeners[], int size,
467  int& rNumItems);
468  //:Returns an array of PtCallListener pointers for all of the call
469  //:listeners presently associated with this call.
476 
477  virtual PtStatus getCalledAddress(PtAddress& rAddress);
478  //:Sets <i>rpAddress</i> to point to the called PtAddress associated
479  //:with this call. This method should only be used for two-party calls.
480  // The called PtAddress is the PtAddress to which the call was
481  // originally placed. If the called address is unknown or not yet known,
482  // <i>rpAddress</i> will be set to NULL.
486 
487  virtual PtStatus getCallingAddress(PtAddress& rAddress);
488  //:Sets <i>rpAddress</i> to point to the calling PtAddress associated
489  //:with this call. This method should only be used for two-party calls.
490  // The calling PtAddress is the PtAddress which originally placed the
491  // telephone call. If the calling address is unknown or not yet known,
492  // <i>rpAddress</i> will be set to NULL.
496 
497  virtual PtStatus getCallingTerminal(PtTerminal& rTerminal);
498  //:Sets <i>rpTerminal</i> to point to the calling PtTerminal associated
499  //:with this call. This method should only be used for two-party calls.
500  // The calling PtTerminal is the PtTerminal which originally placed the
501  // telephone call. If the calling terminal is unknown or not yet known,
502  // <i>rpTerminal</i> will be set to NULL.
506 
508  //:Sets <i>rpController</i> to point to the PtTerminalConnection which
509  //:currently acts as the conference controller.
510  // The conference controller represents the participant in the telephone
511  // system around which a conference takes place. When a PtCall is
512  // initially created, it has no conference controller. This method sets
513  // <i>rpController</i> to non-NULL only if the application has
514  // previously set the conference controller. If the current conference
515  // controller leaves the call, the call reverts to not having a
516  // conference controller.
520 
521  virtual PtStatus getConnections(PtConnection connections[], int size,
522  int& rNumItems);
523  //:Returns an array of pointers to PtConnection objects currently
524  //:associated with this call.
525  // The caller provides an array that can hold up to <i>size</i>
526  // PtConnection pointers. This method will fill in the
527  // <i>connections</i> array with up to <i>size</i> pointers. The
528  // actual number of pointers filled in is passed back via the
529  // <i>nItems</i> argument.
536 
537  virtual PtStatus getLastRedirectedAddress(PtAddress& rAddress);
538  //:Sets <i>rpAddress</i> to point to the last redirected PtAddress
539  //:associated with this call. This method should only be used for
540  //:two-party calls.
541  // The last redirected PtAddress is the PtAddress at which this call
542  // was placed immediately before the current PtAddress. This address
543  // is of interest when a PtCall is forwarded to a different PtAddress
544  // before being answered. If the last redirected address is unknown
545  // or not yet known, <i>rpAddress</i> will be set to NULL.
549 
550  virtual PtStatus getProvider(PtProvider& rProvider);
551  //:Returns a pointer to the PtProvider associated with this call.
555 
556  virtual PtStatus getState(int& rState);
557  //:Sets <i>rState</i> to the current state of the telephone call, either
558  //:IDLE, ACTIVE or INVALID.
562 
563  PtStatus getCallId(char* callId, int len);
564  //:Sets <i>callId</i> to the current call id.
568 
570  //:Sets <i>rpController</i> to point to the PtTerminalConnection which
571  //:currently acts as the transfer controller.
572  // The conference controller represents the participant in the telephone
573  // system around which a transfer takes place. When a PtCall is
574  // initially created, it has no transfer controller. This method sets
575  // <i>rpController</i> to non-NULL only if the application has
576  // previously set the transfer controller. If the current transfer
577  // controller leaves the call, the call reverts to not having a
578  // transfer controller.
582 
583  virtual PtStatus numConnections(int& rCount);
584  //:Returns the number of connections associated with this call.
588 
589  virtual PtStatus numCallListeners(int& rCount);
590  //:Returns the number of call listeners associated with this call.
594 
595  virtual PtStatus getCodecCPUCost(int& cost) ;
596  //:Gets the current CPU cost given the negotiated codecs.
598  // advertised codes. A value of zero indicates LOW and 1
599  // indicates HIGH.
602 
603  virtual PtStatus getCodecCPULimit(int& cost) ;
604  //:Gets the max CPU cost given the negotiated codecs.
606  // advertised codes. A value of zero indicates LOW and 1
607  // indicates HIGH.
610 
611 
612 /* ============================ INQUIRY =================================== */
613 
614 friend class PtCallEvent;
615 
616 /* //////////////////////////// PROTECTED ///////////////////////////////// */
617 protected:
618  UtlString mCallId;
619  char mState;
620 
621  static OsBSem semInit ;
622  //: Binary Semaphore used to guard initialiation and tear down
624  static int mRef;
625 
628 
629  OsTime mTimeOut;
630 
631  void initialize();
632 
633 /* //////////////////////////// PRIVATE /////////////////////////////////// */
634 private:
635 
636  OsProtectEventMgr *mpEventMgr;
637 
638 };
639 
640 /* ============================ INLINE METHODS ============================ */
641 
642 #endif // _PtCall_h_
Definition: TaoReference.h:35
Definition: CpCallManager.h:122
static TaoReference * mpTransactionCnt
Definition: PtCall.h:623
PtStatus
Definition: PtDefs.h:49
virtual PtStatus numConnections(int &rCount)
param: (out) rpController - Set to point to the transfer controller for this call retcode: PT_SUCCESS...
Definition: PtCall.cpp:1076
Definition: PtCall.h:260
virtual PtStatus getCallingAddress(PtAddress &rAddress)
param: (out) rAddress - Set to point to the called PtAddress for this call retcode: PT_SUCCESS - Succ...
Definition: PtCall.cpp:692
virtual PtStatus getCalledAddress(PtAddress &rAddress)
param: (out) callListeners - The array of pointers to known call listeners param: (in) size - The num...
Definition: PtCall.cpp:637
virtual PtStatus conference(PtCall &rOtherCall)
param: (in) newPartyURL - Address of the party to add to this call param: (in) pSessionDesc - Pointer...
Definition: PtCall.cpp:256
static int mRef
Definition: PtCall.h:624
virtual ~PtCall()
Definition: PtCall.cpp:89
virtual PtStatus unhold(UtlBoolean bRemoteParticipants=TRUE)
param (in): bBridgeParticipants - Controls whether participants are
Definition: PtCall.cpp:1445
Definition: TaoObjectMap.h:56
virtual PtStatus consult(PtTerminalConnection &rTerminalConnection, const char *destinationURL, PtSessionDesc *pSessionDesc, PtConnection &rSrcConnection, PtConnection &rDstConnection)
param: (in) rTerminal - The originating terminal param: (in) rAddress - The originating address param...
Definition: PtCall.cpp:369
OsTime mTimeOut
Definition: PtCall.h:629
virtual PtStatus getConnections(PtConnection connections[], int size, int &rNumItems)
param: (out) rpController - Set to point to the conference controller for this call retcode: PT_SUCCE...
Definition: PtCall.cpp:847
virtual PtStatus drop(void)
param: (in) rTerminalConnection - The terminal connection used to obtain the originating terminal par...
Definition: PtCall.cpp:446
virtual PtStatus transfer(PtCall &rOtherCall)
param: pController - The terminal connection to use as a transfer controller for this call retcode: P...
Definition: PtCall.cpp:1342
UtlString mCallId
Definition: PtCall.h:618
TaoClientTask * mpClient
Definition: PtCall.h:627
virtual PtStatus getCodecCPUCost(int &cost)
param: (out) rCount - The number of call listeners associated with this call retcode: PT_SUCCESS - Su...
Definition: PtCall.cpp:1567
PtCall & operator=(const PtCall &rhs)
Definition: PtCall.cpp:123
virtual PtStatus getLastRedirectedAddress(PtAddress &rAddress)
param: (out) connections - The array of PtConnection pointers param: (in) size - The number of elemen...
Definition: PtCall.cpp:915
Definition: PtCall.h:262
Definition: PtCallListener.h:33
virtual PtStatus numCallListeners(int &rCount)
param: (out) rCount - The number of connections associated with this call retcode: PT_SUCCESS - Succe...
Definition: PtCall.cpp:1036
virtual PtStatus setCodecCPULimit(const int limit, const UtlBoolean bAutoRenegotiate=TRUE)
param (in) bRemoteParticipants - Controls whether all particpants
Definition: PtCall.cpp:490
virtual PtStatus setConferenceController(PtTerminalConnection *pController)
param: (in) rCallListener - The listener to remove from this call retcode: PT_SUCCESS - Success retco...
Definition: PtCall.cpp:1172
virtual PtStatus connect(PtTerminal &rTerminal, PtAddress &rAddress, const char *destinationURL, PtSessionDesc *pSessionDesc)
param: (in) rOtherCall - The PtCall object whose participants will be moved to this PtCall retcode: P...
Definition: PtCall.cpp:307
static OsBSem semInit
Definition: PtCall.h:621
OsProtectEventMgr * mpEventMgr
Definition: PtCall.h:636
virtual PtStatus addParty(const char *newPartyURL, PtSessionDesc *pSessionDesc, PtConnection &rConnection)
param: (in) rCallListener - The listener to add to this call retcode: PT_SUCCESS - Success retcode: P...
Definition: PtCall.cpp:201
virtual PtStatus setTransferController(PtTerminalConnection *pController)
param: pController - The terminal connection to use as a conference controller for this call retcode:...
Definition: PtCall.cpp:1219
virtual PtStatus getConferenceController(PtTerminalConnection &rController)
param: (out) rpTerminal - Set to point to the calling PtTerminal for this call retcode: PT_SUCCESS - ...
Definition: PtCall.cpp:803
virtual PtStatus getCodecCPULimit(int &cost)
param (out) cost - The cpu cost of the currently negotiated and
Definition: PtCall.cpp:1621
Definition: PtTerminalConnection.h:139
char mState
Definition: PtCall.h:619
virtual PtStatus getCallListeners(PtCallListener *callListeners[], int size, int &rNumItems)
retcode: PT_SUCCESS - Success retcode: PT_BUSY - Unable to communicate with call processing ...
Definition: PtCall.cpp:589
virtual PtStatus removeCallListener(PtCallListener &rCallListener)
retcode: PT_SUCCESS - Success retcode: PT_PROVIDER_UNAVAILABLE - The provider is not available ...
Definition: PtCall.cpp:1119
PtTerminalConnection * mpConfController
Definition: PtCall.h:626
Definition: PtConnection.h:178
virtual PtStatus getState(int &rState)
param: (out) rpProvider - a pointer to the PtProvider object associated with this call retcode: PT_SU...
Definition: PtCall.cpp:1492
Definition: PtSessionDesc.h:32
virtual PtStatus forceCodecRenegotiation()
param (in) limit - The codec/CPU limit for this call. The value can
Definition: PtCall.cpp:545
Definition: PtCallEvent.h:30
virtual PtStatus hold(UtlBoolean bBridgeParticipants=TRUE)
param: (in) destinationURL - The intended destination for the new call param: (in) pSessionDesc - Poi...
Definition: PtCall.cpp:1399
Definition: PtTerminal.h:178
Definition: TaoServerTask.h:49
PtCall()
Definition: PtCall.cpp:49
virtual PtStatus getCallingTerminal(PtTerminal &rTerminal)
param: (out) rAddress - Set to point to the calling PtAddress for this call retcode: PT_SUCCESS - Suc...
Definition: PtCall.cpp:745
CallState
Definition: PtCall.h:258
Definition: PtCall.h:253
void initialize()
Definition: PtCall.cpp:106
virtual PtStatus getProvider(PtProvider &rProvider)
param: (out) rpAddress - Set to point to the last redirected PtAddress for this call retcode: PT_SUCC...
Definition: PtCall.cpp:996
Definition: PtAddress.h:189
Definition: PtProvider.h:118
Definition: TaoClientTask.h:50
Definition: PtCall.h:261
virtual PtStatus addCallListener(PtCallListener &rCallListener)
Definition: PtCall.cpp:138
PtStatus getCallId(char *callId, int len)
retcode: IDLE - Initial state for a call retcode: ACTIVITY - Call with one or more connections retcod...
Definition: PtCall.cpp:1549
virtual PtStatus getTransferController(PtTerminalConnection &rController)
retcode: IDLE - Initial state for a call retcode: ACTIVITY - Call with one or more connections retcod...
Definition: PtCall.cpp:955