#include <endpoint.h>
Inheritance diagram for OpalEndPoint:
Public Types | |
enum | Attributes { CanTerminateCall = 1, HasLineInterface = 2 } |
Public Member Functions | |
Construction | |
OpalEndPoint (OpalManager &manager, const PCaselessString &prefix, unsigned attributes) | |
~OpalEndPoint () | |
Overrides from PObject | |
void | PrintOn (ostream &strm) const |
Listeners management | |
BOOL | StartListeners (const PStringArray &interfaces) |
BOOL | StartListener (const OpalTransportAddress &iface) |
BOOL | StartListener (OpalListener *listener) |
virtual PStringArray | GetDefaultListeners () const |
BOOL | RemoveListener (OpalListener *listener) |
OpalTransportAddressArray | GetInterfaceAddresses (BOOL excludeLocalHost=TRUE, OpalTransport *associatedTransport=NULL) |
PDECLARE_NOTIFIER (PThread, OpalEndPoint, ListenerCallback) | |
virtual BOOL | NewIncomingConnection (OpalTransport *transport) |
Connection management | |
virtual BOOL | MakeConnection (OpalCall &call, const PString &party, void *userData)=0 |
virtual BOOL | OnIncomingConnection (OpalConnection &connection) |
virtual void | OnAlerting (OpalConnection &connection) |
virtual OpalConnection::AnswerCallResponse | OnAnswerCall (OpalConnection &connection, const PString &caller) |
virtual void | OnConnected (OpalConnection &connection) |
virtual void | OnEstablished (OpalConnection &connection) |
virtual void | OnReleased (OpalConnection &connection) |
void | OnHold (OpalConnection &connection) |
virtual BOOL | OnForwarded (OpalConnection &connection, const PString &remoteParty) |
virtual BOOL | ClearCall (const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL) |
virtual BOOL | ClearCallSynchronous (const PString &token, OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL) |
virtual void | ClearAllCalls (OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, BOOL wait=TRUE) |
PSafePtr< OpalConnection > | GetConnectionWithLock (const PString &token, PSafetyMode mode=PSafeReadWrite) |
PStringList | GetAllConnections () |
virtual BOOL | HasConnection (const PString &token) |
virtual void | DestroyConnection (OpalConnection *connection) |
Media Streams management | |
virtual OpalMediaFormatList | GetMediaFormats () const =0 |
virtual void | AdjustMediaFormats (const OpalConnection &connection, OpalMediaFormatList &mediaFormats) const |
virtual BOOL | OnOpenMediaStream (OpalConnection &connection, OpalMediaStream &stream) |
virtual void | OnClosedMediaStream (const OpalMediaStream &stream) |
virtual void | AddVideoMediaFormats (OpalMediaFormatList &mediaFormats, const OpalConnection *connection=NULL) const |
virtual BOOL | CreateVideoInputDevice (const OpalConnection &connection, const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, BOOL &autoDelete) |
virtual BOOL | CreateVideoOutputDevice (const OpalConnection &connection, const OpalMediaFormat &mediaFormat, BOOL preview, PVideoOutputDevice *&device, BOOL &autoDelete) |
User indications | |
virtual void | OnUserInputString (OpalConnection &connection, const PString &value) |
virtual void | OnUserInputTone (OpalConnection &connection, char tone, int duration) |
Other services | |
virtual OpalT120Protocol * | CreateT120ProtocolHandler (const OpalConnection &connection) const |
virtual OpalT38Protocol * | CreateT38ProtocolHandler (const OpalConnection &connection) const |
Member variable access | |
OpalManager & | GetManager () const |
const PString & | GetPrefixName () const |
BOOL | HasAttribute (Attributes opt) const |
WORD | GetDefaultSignalPort () const |
const PString & | GetDefaultLocalPartyName () const |
void | SetDefaultLocalPartyName (const PString &name) |
const PString & | GetDefaultDisplayName () const |
void | SetDefaultDisplayName (const PString &name) |
unsigned | GetInitialBandwidth () const |
void | SetInitialBandwidth (unsigned bandwidth) |
const OpalListenerList & | GetListeners () const |
Protected Attributes | |
OpalManager & | manager |
PCaselessString | prefixName |
unsigned | attributeBits |
WORD | defaultSignalPort |
PString | defaultLocalPartyName |
PString | defaultDisplayName |
unsigned | initialBandwidth |
OpalListenerList | listeners |
PSyncPoint | allConnectionsCleared |
OpalEndPoint::ConnectionDict | connectionsActive |
PMutex | inUseFlag |
Friends | |
void | OpalManager::GarbageCollection () |
void | OpalConnection::Release (CallEndReason reason) |
Classes | |
class | ConnectionDict |
An endpoint will also have a default set of media data formats that it can support. Connections created by it would initially have the same set, but according to the semantics of the underlying protocol may end up using a different set.
Various call backs are provided for points in the connection management. As a rule these are passed straight on to the OpalManager for processing. An application may create descendants off this class' subclasses, eg H323EndPoint, to modify or monitor its behaviour but it does not have to do so as all basic operations are passed to the OpalManager so only that class need be subclassed.
|
|
|
Create a new endpoint.
|
|
Destroy the endpoint. |
|
Add video media formats available on a connection. The default behaviour calls the OpalEndPoint function of the same name.
|
|
Adjust media formats available on a connection. This is called by a connection after it has called OpalCall::GetMediaFormats() to get all media formats that it can use so that an application may remove or reorder the media formats before they are used to open media streams. The default behaviour calls the OpalManager function of the same name.
|
|
Clear all current connections. This hangs up all the connections to remote endpoints. The wait parameter is used to wait for all the calls to be cleared and their memory usage cleaned up before returning. This is typically used in the destructor for your descendant of H323EndPoint.
|
|
Clear a call. This finds the call by using the token then calls the OpalCall::Clear() function on it. All connections are released, and the conenctions and call disposed of. Note that this function returns quickly and the disposal happens at some later time by a background thread. This it is safe to call this function from anywhere.
|
|
Clear a current connection. This hangs up the connection to a remote endpoint. Note that these functions are synchronous
|
|
Create an instance of the T.120 protocol handler. This is called when the OpenLogicalChannel subsystem requires that a T.120 channel be established. Note that if the application overrides this it should return a pointer to a heap variable (using new) as it will be automatically deleted when the H323Connection is deleted. The default behavour calls the OpalManager function of the same name.
|
|
Create an instance of the T.38 protocol handler. This is called when the OpenLogicalChannel subsystem requires that a T.38 fax channel be established. Note that if the application overrides this it should return a pointer to a heap variable (using new) as it will be automatically deleted when the H323Connection is deleted. The default behavour calls the OpalManager function of the same name.
|
|
Create an PVideoInputDevice for a source media stream.
|
|
Create an PVideoOutputDevice for a sink media stream or the preview display for a source media stream.
|
|
Destroy the connection.
|
|
Get all calls current on the endpoint. |
|
Find a connection that uses the specified token. This searches the endpoint for the connection that contains the token as provided by functions such as MakeConnection().
|
|
Get the default local display name for all connections on this endpoint. |
|
Get the default listeners for the endpoint type. Default behaviour returns empty list if defaultSignalPort is zero, else one entry using tcp and INADDR_ANY, eg tcp$*:1720 Reimplemented in SIPEndPoint. |
|
Get the default local party name for all connections on this endpoint. |
|
Get the initial bandwidth parameter. |
|
Get the initial bandwidth parameter. Reimplemented in H323EndPoint. |
|
Return a list of the transport addresses for all listeners on this endpoint
|
|
Get the set of listeners (incoming call transports) for this endpoint. |
|
Get the manager for this endpoint. |
|
Get the data formats this endpoint is capable of operating. This provides a list of media data format names that may be used by an OpalMediaStream may be created by a connection from this endpoint. Note that a specific connection may not actually support all of the media formats returned here, but should return no more. The default behaviour is pure. Implemented in H323EndPoint, IAX2EndPoint, OpalLIDEndPoint, OpalPCSSEndPoint, and SIPEndPoint. |
|
Get the protocol prefix name for the endpoint. |
|
Get an indication of if this endpoint has particular option. |
|
Determine if a connection is active.
|
|
Set up a connection to a remote party. This is called from the OpalManager::MakeConnection() function once it has determined that this is the endpoint for the protocol. The general form for this party parameter is: [proto:][alias@][transport$]address[:port] where the various fields will have meanings specific to the endpoint type. For example, with H.323 it could be "h323:Fred@site.com" which indicates a user Fred at gatekeeper size.com. Whereas for the PSTN endpoint it could be "pstn:5551234" which is to call 5551234 on the first available PSTN line. The proto field is optional when passed to a specific endpoint. If it is present, however, it must agree with the endpoints protocol name or FALSE is returned. This function usually returns almost immediately with the connection continuing to occur in a new background thread. If FALSE is returned then the connection could not be established. For example if a PSTN endpoint is used and the assiciated line is engaged then it may return immediately. Returning a non-NULL value does not mean that the connection will succeed, only that an attempt is being made. The default behaviour is pure.
Implemented in H323EndPoint, IAX2EndPoint, OpalLIDEndPoint, OpalPCSSEndPoint, and SIPEndPoint. |
|
Handle new incoming connection from listener. A return value of TRUE indicates that the transport object should be deleted by the caller. FALSE indicates that something else (eg the connection) has taken over responsibility for deleting the transport. The default behaviour just returns TRUE.
Reimplemented in H323EndPoint, IAX2EndPoint, and SIPEndPoint. |
|
Call back for remote party being alerted. This function is called after the connection is informed that the remote endpoint is "ringing". Generally some time after the MakeConnection() function was called, this is function is called. If FALSE is returned the connection is aborted. If an application overrides this function, it should generally call the ancestor version for correct operation. An application would typically only intercept this function if it wishes to do some form of logging. For this you can obtain the name of the caller by using the function OpalConnection::GetRemotePartyName(). The default behaviour calls the OpalManager function of the same name.
|
|
Call back for answering an incoming call. This function is called after the connection has been acknowledged but before the connection is established This gives the application time to wait for some event before signalling to the endpoint that the connection is to proceed. For example the user pressing an "Answer call" button. If AnswerCallDenied is returned the connection is aborted and the connetion specific end call PDU is sent. If AnswerCallNow is returned then the connection proceeding, Finally if AnswerCallPending is returned then the protocol negotiations are paused until the AnsweringCall() function is called. The default behaviour simply returns AnswerNow.
Reimplemented in H323EndPoint. |
|
Call back for closed a media stream. The default behaviour calls the OpalManager function of the same name.
|
|
A call back function whenever a connection is "connected". This indicates that a connection to an endpoint was connected. That is the endpoint received acknowledgement via whatever protocol it uses that the connection may now start media streams. In the context of H.323 this means that the CONNECT pdu has been received. The default behaviour calls the OpalManager function of the same name.
|
|
A call back function whenever a connection is established. This indicates that a connection to an endpoint was established. That is the endpoint received acknowledgement via whatever protocol it uses that the connection may now start media streams. In the context of H.323 this means that the signalling and control channels are open and the TerminalCapabilitySet and MasterSlave negotiations are complete. The default behaviour does nothing.
Reimplemented in IAX2EndPoint. |
|
A call back function whenever a connection is forwarded. The default behaviour does nothing.
|
|
A call back function whenever a connection is "held" or "retrieved". This indicates that a connection to an endpoint was held, or retrieved, either locally or by the remote endpoint. The default behaviour calls the OpalManager function of the same name.
|
|
Call back for answering an incoming call. This function is used for an application to control the answering of incoming calls. If TRUE is returned then the connection continues. If FALSE then the connection is aborted. Note this function should not block for any length of time. If the decision to answer the call may take some time eg waiting for a user to pick up the phone, then AnswerCallPending or AnswerCallDeferred should be returned. If an application overrides this function, it should generally call the ancestor version to complete calls. Unless the application completely takes over that responsibility. Generally, an application would only intercept this function if it wishes to do some form of logging. For this you can obtain the name of the caller by using the function OpalConnection::GetRemotePartyName(). The default behaviour calls the OpalManager function of the same name.
|
|
Call back when opening a media stream. This function is called when a connection has created a new media stream according to the logic of its underlying protocol. The usual requirement is that media streams are created on all other connections participating in the call and all of the media streams are attached to an instance of an OpalMediaPatch object that will read from one of the media streams passing data to the other media streams. The default behaviour calls the OpalManager function of the same name.
|
|
A call back function whenever a connection is broken. This function can do any internal cleaning up and waiting on background threads that may be using the connection object. Note that there is not a one to one relationship with the OnEstablishedConnection() function. This function may be called without that function being called. For example if MakeConnection() was used but the call never completed. Classes that override this function should make sure they call the ancestor version for correct operation. An application will not typically call this function as it is used by the OpalManager during a release of the connection. The default behaviour removes the connection from the internal database and calls the OpalManager function of the same name.
|
|
Call back for remote enpoint has sent user input as a string. The default behaviour calls the OpalManager function of the same name.
|
|
Call back for remote enpoint has sent user input. If duration is zero then this indicates the beginning of the tone. If duration is non-zero then it indicates the end of the tone output. The default behaviour calls the OpalManager function of the same name.
|
|
Handle new incoming connection. This will either create a new connection object or utilise a previously created connection on the same transport address and reference number. |
|
Standard stream print function. The PObject class has a << operator defined that calls this function polymorphically.
|
|
Remove a listener from the endoint. If the listener parameter is NULL then all listeners are removed.
|
|
Set the default local display name for all connections on this endpoint. |
|
Set the default local party name for all connections on this endpoint. |
|
Get the initial bandwidth parameter. Reimplemented in H323EndPoint. |
|
Add a listener to the endoint. This allows for the automatic creating of incoming call connections. An application should use OnConnectionEstablished() to monitor when calls have arrived and been successfully negotiated.
|
|
Add a listener to the endoint. This allows for the automatic creating of incoming call connections. An application should use OnConnectionEstablished() to monitor when calls have arrived and been successfully negotiated. If the address is empty then the first entry of GetDefaultListeners() is used.
|
|
Add a set of listeners to the endoint. This allows for the automatic creating of incoming call connections. An application should use OnConnectionEstablished() to monitor when calls have arrived and been successfully negotiated. If the list is empty then GetDefaultListeners() is used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|