OpalTransport Class Referenceabstract

`#include <transports.h>`

Inheritance diagram for OpalTransport:

## Public Member Functions

OpalEndPoint & | GetEndPoint () const
virtual const char * | GetProtoPrefix () const =0
PMutex & | GetWriteMutex ()
Construction
| OpalTransport (OpalEndPoint &endpoint)
| ~OpalTransport ()
Overrides from PObject
void | PrintOn (ostream &strm) const

## Protected Attributes

OpalEndPoint & | endpoint
PThread * | thread
| Thread handling the transport. More...
PMutex | m_writeMutex

## Operations

enum | PromisciousModes { AcceptFromRemoteOnly, AcceptFromAnyAutoSet, AcceptFromAny, NumPromisciousModes }
typedef PBoolean(* | WriteConnectCallback) (OpalTransport &transport, void *userData)
virtual PBoolean | IsReliable () const =0
virtual PString | GetInterface () const
virtual bool | SetInterface (const PString &iface)
virtual OpalTransportAddress | GetLocalAddress (bool allowNAT=true) const =0
virtual PBoolean | SetLocalAddress (const OpalTransportAddress &address)=0
virtual OpalTransportAddress | GetRemoteAddress () const =0
virtual PBoolean | SetRemoteAddress (const OpalTransportAddress &address)=0
virtual PBoolean | Connect ()=0
PBoolean | ConnectTo (const OpalTransportAddress &address)
virtual PBoolean | Close ()
void | CloseWait ()
void | CleanUpOnTermination ()
virtual PBoolean | IsCompatibleTransport (const OpalTransportAddress &address) const =0
| Promiscious modes for transport. More...
virtual void | SetPromiscuous (PromisciousModes promiscuous)
virtual OpalTransportAddress | GetLastReceivedAddress () const
virtual PString | GetLastReceivedInterface () const
virtual PBoolean | ReadPDU (PBYTEArray &packet)=0
virtual PBoolean | WritePDU (const PBYTEArray &pdu)=0
virtual PBoolean | WriteConnect (WriteConnectCallback function, void *userData)
virtual void | AttachThread (PThread *thread)
virtual PBoolean | IsRunning () const

## Detailed Description

This class describes a I/O transport for a protocol. A "transport" is an object that allows the transfer and processing of data from one entity to another.

## Member Typedef Documentation

typedef PBoolean(* OpalTransport::WriteConnectCallback) (OpalTransport &transport, void *userData)

## Member Enumeration Documentation

enum OpalTransport::PromisciousModes

Enumerator
AcceptFromRemoteOnly |
AcceptFromAnyAutoSet |
AcceptFromAny |
NumPromisciousModes |

## Constructor & Destructor Documentation

OpalTransport::OpalTransport | ( | OpalEndPoint & | endpoint | ) |

Create a new transport channel.

OpalTransport::~OpalTransport | ( |  | ) |

Destroy the transport channel.

## Member Function Documentation

virtual void OpalTransport::AttachThread | ( | PThread * | thread | ) |

virtual

Attach a thread to the transport.

void OpalTransport::CleanUpOnTermination | ( |  | ) |

inline

Close channel and wait for associated thread to terminate. For backward compatibility with OpenH323, now deprecated.

References CloseWait().

virtual PBoolean OpalTransport::Close | ( |  | ) |

virtual

Close the channel.

void OpalTransport::CloseWait | ( |  | ) |

Close channel and wait for associated thread to terminate.

Referenced by CleanUpOnTermination().

virtual PBoolean OpalTransport::Connect | ( |  | ) |

pure virtual

Connect to the remote address.

Implemented in OpalTransportUDP, and OpalTransportTCP.

Referenced by ConnectTo().

PBoolean OpalTransport::ConnectTo | ( | const OpalTransportAddress & | address | ) |

inline

Connect to the specified address.

References Connect(), and SetRemoteAddress().

OpalEndPoint& OpalTransport::GetEndPoint | ( |  | ) | const

inline

References endpoint.

virtual PString OpalTransport::GetInterface | ( |  | ) | const

virtual

Get the interface this transport is bound to. This is generally only relevant for datagram based transports such as UDP and TCP is always bound to a local interface once open.

The default behaviour returns the local address via GetLocalAddress()

Reimplemented in OpalTransportUDP.

virtual OpalTransportAddress OpalTransport::GetLastReceivedAddress | ( |  | ) | const

virtual

Get the transport address of the last received PDU.

Default behaviour returns GetRemoteAddress().

Reimplemented in OpalTransportUDP.

virtual PString OpalTransport::GetLastReceivedInterface | ( |  | ) | const

virtual

Get the interface of the last received PDU arrived on.

Default behaviour returns GetLocalAddress().

Reimplemented in OpalTransportUDP.

virtual OpalTransportAddress OpalTransport::GetLocalAddress | ( | bool | allowNAT = `true` | ) | const

pure virtual

Get the transport dependent name of the local endpoint.

Parameters

  allowNAT | Allow translation if remote needs NAT

Implemented in OpalTransportUDP, and OpalTransportIP.

virtual const char* OpalTransport::GetProtoPrefix | ( |  | ) | const

pure virtual

Get the prefix for this transports protocol type.

Implemented in OpalTransportUDP, OpalTransportTCP, and OpalTransportIP.

virtual OpalTransportAddress OpalTransport::GetRemoteAddress | ( |  | ) | const

pure virtual

Get the transport address of the remote endpoint.

Implemented in OpalTransportIP.

PMutex& OpalTransport::GetWriteMutex | ( |  | ) |

inline

References m_writeMutex.

virtual PBoolean OpalTransport::IsCompatibleTransport | ( | const OpalTransportAddress & | address | ) | const

pure virtual

Promiscious modes for transport.

Check that the transport address is compatible with transport.

Implemented in OpalTransportUDP, and OpalTransportTCP.

virtual PBoolean OpalTransport::IsReliable | ( |  | ) | const

pure virtual

Get indication of the type of underlying transport.

Implemented in OpalTransportUDP, and OpalTransportTCP.

virtual PBoolean OpalTransport::IsRunning | ( |  | ) | const

virtual

Determine of the transport is running with a background thread.

void OpalTransport::PrintOn | ( | ostream & | strm | ) | const

Print the description of the listener to the stream.

virtual PBoolean OpalTransport::ReadPDU | ( | PBYTEArray & | packet | ) |

pure virtual

Read a protocol data unit from the transport. This will read using the transports mechanism for PDU boundaries, for example UDP is a single Read() call, while for TCP there is a TPKT header that indicates the size of the PDU.

If false is returned but there is data returned in the `packet` that indicates that the available buffer space was too small, e.g. an EMSGSIZE error was returned by recvfrom.

Parameters

  packet | Packet read from transport

Implemented in OpalTransportUDP, and OpalTransportTCP.

virtual bool OpalTransport::SetInterface | ( | const PString & | iface | ) |

virtual

Bind this transport to an interface. This is generally only relevant for datagram based transports such as UDP and TCP is always bound to a local interface once open.

The default behaviour does nothing.

Parameters

  iface | Interface to use

Reimplemented in OpalTransportUDP.

virtual PBoolean OpalTransport::SetLocalAddress | ( | const OpalTransportAddress & | address | ) |

pure virtual

Set local address to connect from. Note that this may not work for all transport types or may work only before Connect() has been called.

Implemented in OpalTransportUDP, and OpalTransportIP.

virtual void OpalTransport::SetPromiscuous | ( | PromisciousModes | promiscuous | ) |

virtual

Set read to promiscuous mode. Normally only reads from the specifed remote address are accepted. This flag allows packets to be accepted from any remote, provided the underlying protocol can do so. For example TCP will do nothing.

The Read() call may optionally set the remote address automatically to whatever the sender host of the last received message was.

Default behaviour does nothing.

Reimplemented in OpalTransportUDP.

virtual PBoolean OpalTransport::SetRemoteAddress | ( | const OpalTransportAddress & | address | ) |

pure virtual

Set remote address to connect to. Note that this does not necessarily initiate a transport level connection, but only indicates where to connect to. The actual connection is made by the Connect() function.

Implemented in OpalTransportUDP, and OpalTransportIP.

Referenced by ConnectTo().

virtual PBoolean OpalTransport::WriteConnect | ( | WriteConnectCallback | function,
|  | void * | userData
| ) |  |

virtual

Write the first packet to the transport, after a connect. This will adjust the transport object and call the callback function, possibly multiple times for some transport types.

It is expected that this is used just after a Connect() call where some transports (eg UDP) cannot determine its local address which is required in the PDU to be sent. This must be done fer each interface so WriteConnect() calls WriteConnectCallback for each interface. The subsequent ReadPDU() returns the answer from the first interface.

The default behaviour simply calls the WriteConnectCallback function.

Parameters

  function | Function for writing data
  userData | user data to pass to write function

Reimplemented in OpalTransportUDP.

virtual PBoolean OpalTransport::WritePDU | ( | const PBYTEArray & | pdu | ) |

pure virtual

Write a packet to the transport. This will write using the transports mechanism for PDU boundaries, for example UDP is a single Write() call, while for TCP there is a TPKT header that indicates the size of the PDU.

Parameters

  pdu | Packet to write

Implemented in OpalTransportUDP, and OpalTransportTCP.

## Field Documentation

OpalEndPoint& OpalTransport::endpoint

protected

Referenced by GetEndPoint().

PMutex OpalTransport::m_writeMutex

protected

Referenced by GetWriteMutex().

PThread* OpalTransport::thread

protected

Thread handling the transport.

The documentation for this class was generated from the following file:

- transports.h