📄 endpoint.cxx
字号:
return FALSE;
// as the listener is not open, this will have the effect of immediately
// stopping the listener thread. This is good - it means that the
// listener Close function will appear to have stopped the thread
if (!listener->Open(PCREATE_NOTIFIER(ListenerCallback))) {
delete listener;
return FALSE;
}
listeners.Append(listener);
return TRUE;
}
PStringArray OpalEndPoint::GetDefaultListeners() const
{
PStringArray listenerAddresses;
if (defaultSignalPort != 0)
listenerAddresses.AppendString(psprintf("tcp$*:%u", defaultSignalPort));
return listenerAddresses;
}
BOOL OpalEndPoint::RemoveListener(OpalListener * listener)
{
if (listener != NULL)
return listeners.Remove(listener);
listeners.RemoveAll();
return TRUE;
}
OpalTransportAddressArray OpalEndPoint::GetInterfaceAddresses(BOOL excludeLocalHost,
OpalTransport * associatedTransport)
{
return OpalGetInterfaceAddresses(listeners, excludeLocalHost, associatedTransport);
}
void OpalEndPoint::ListenerCallback(PThread &, INT param)
{
// Error in accept, usually means listener thread stopped, so just exit
if (param == 0)
return;
OpalTransport * transport = (OpalTransport *)param;
if (NewIncomingConnection(transport))
delete transport;
}
BOOL OpalEndPoint::NewIncomingConnection(OpalTransport * /*transport*/)
{
return TRUE;
}
PStringList OpalEndPoint::GetAllConnections()
{
PStringList tokens;
for (PSafePtr<OpalConnection> connection(connectionsActive, PSafeReadOnly); connection != NULL; ++connection)
tokens.AppendString(connection->GetToken());
return tokens;
}
BOOL OpalEndPoint::HasConnection(const PString & token)
{
PWaitAndSignal wait(inUseFlag);
return connectionsActive.Contains(token);
}
void OpalEndPoint::DestroyConnection(OpalConnection * connection)
{
delete connection;
}
BOOL OpalEndPoint::OnSetUpConnection(OpalConnection & PTRACE_PARAM(connection))
{
PTRACE(3, "OpalEP\tOnSetUpConnection " << connection);
return TRUE;
}
BOOL OpalEndPoint::OnIncomingConnection(OpalConnection & connection)
{
return manager.OnIncomingConnection(connection);
}
void OpalEndPoint::OnAlerting(OpalConnection & connection)
{
manager.OnAlerting(connection);
}
OpalConnection::AnswerCallResponse
OpalEndPoint::OnAnswerCall(OpalConnection & connection,
const PString & caller)
{
return manager.OnAnswerCall(connection, caller);
}
void OpalEndPoint::OnProgress(OpalConnection & connection)
{
manager.OnProgress(connection);
}
void OpalEndPoint::OnConnected(OpalConnection & connection)
{
manager.OnConnected(connection);
}
void OpalEndPoint::OnEstablished(OpalConnection & connection)
{
manager.OnEstablished(connection);
}
void OpalEndPoint::OnReleased(OpalConnection & connection)
{
PTRACE(4, "OpalEP\tOnReleased " << connection);
connectionsActive.RemoveAt(connection.GetToken());
manager.OnReleased(connection);
}
void OpalEndPoint::OnHold(OpalConnection & connection)
{
PTRACE(4, "OpalEP\tOnHold " << connection);
manager.OnHold(connection);
}
BOOL OpalEndPoint::OnForwarded(OpalConnection & connection,
const PString & forwardParty)
{
PTRACE(4, "OpalEP\tOnForwarded " << connection);
return manager.OnForwarded(connection, forwardParty);
}
void OpalEndPoint::ConnectionDict::DeleteObject(PObject * object) const
{
OpalConnection * connection = PDownCast(OpalConnection, object);
if (connection != NULL)
connection->GetEndPoint().DestroyConnection(connection);
}
BOOL OpalEndPoint::ClearCall(const PString & token,
OpalConnection::CallEndReason reason,
PSyncPoint * sync)
{
return manager.ClearCall(token, reason, sync);
}
BOOL OpalEndPoint::ClearCallSynchronous(const PString & token,
OpalConnection::CallEndReason reason,
PSyncPoint * sync)
{
PSyncPoint syncPoint;
if (sync == NULL)
sync = &syncPoint;
return manager.ClearCall(token, reason, sync);
}
void OpalEndPoint::ClearAllCalls(OpalConnection::CallEndReason reason, BOOL wait)
{
BOOL releasedOne = FALSE;
for (PSafePtr<OpalConnection> connection(connectionsActive, PSafeReadOnly); connection; ++connection) {
connection->Release(reason);
releasedOne = TRUE;
}
if (wait && releasedOne)
allConnectionsCleared.Wait();
}
void OpalEndPoint::AdjustMediaFormats(const OpalConnection & connection,
OpalMediaFormatList & mediaFormats) const
{
manager.AdjustMediaFormats(connection, mediaFormats);
}
BOOL OpalEndPoint::OnOpenMediaStream(OpalConnection & connection,
OpalMediaStream & stream)
{
return manager.OnOpenMediaStream(connection, stream);
}
void OpalEndPoint::OnClosedMediaStream(const OpalMediaStream & stream)
{
manager.OnClosedMediaStream(stream);
}
void OpalEndPoint::AddVideoMediaFormats(OpalMediaFormatList & mediaFormats,
const OpalConnection * connection) const
{
manager.AddVideoMediaFormats(mediaFormats, connection);
}
BOOL OpalEndPoint::CreateVideoInputDevice(const OpalConnection & connection,
const OpalMediaFormat & mediaFormat,
PVideoInputDevice * & device,
BOOL & autoDelete)
{
return manager.CreateVideoInputDevice(connection, mediaFormat, device, autoDelete);
}
BOOL OpalEndPoint::CreateVideoOutputDevice(const OpalConnection & connection,
const OpalMediaFormat & mediaFormat,
BOOL preview,
PVideoOutputDevice * & device,
BOOL & autoDelete)
{
return manager.CreateVideoOutputDevice(connection, mediaFormat, preview, device, autoDelete);
}
void OpalEndPoint::OnUserInputString(OpalConnection & connection,
const PString & value)
{
manager.OnUserInputString(connection, value);
}
void OpalEndPoint::OnUserInputTone(OpalConnection & connection,
char tone,
int duration)
{
manager.OnUserInputTone(connection, tone, duration);
}
OpalT120Protocol * OpalEndPoint::CreateT120ProtocolHandler(const OpalConnection & connection) const
{
return manager.CreateT120ProtocolHandler(connection);
}
OpalT38Protocol * OpalEndPoint::CreateT38ProtocolHandler(const OpalConnection & connection) const
{
return manager.CreateT38ProtocolHandler(connection);
}
OpalH224Handler * OpalEndPoint::CreateH224ProtocolHandler(OpalConnection & connection,
unsigned sessionID) const
{
return manager.CreateH224ProtocolHandler(connection, sessionID);
}
OpalH281Handler * OpalEndPoint::CreateH281ProtocolHandler(OpalH224Handler & h224Handler) const
{
return manager.CreateH281ProtocolHandler(h224Handler);
}
/////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -