27 #ifndef OPAL_OPAL_CONSOLE_MGR_H
28 #define OPAL_OPAL_CONSOLE_MGR_H
47 #include <ptclib/cli.h>
54 #define OPAL_CONSOLE_PREFIXES OPAL_PREFIX_SIP " " \
55 OPAL_PREFIX_H323 " " \
57 OPAL_PREFIX_SKINNY" " \
59 OPAL_PREFIX_PSTN " " \
81 virtual bool Initialise(PArgList & args,
bool verbose,
const PString & defaultRoute) = 0;
83 virtual void AddCommands(PCLI & cli) = 0;
94 #if OPAL_SIP || OPAL_H323
103 bool Initialise(PArgList & args, ostream & output,
bool verbose);
111 void AddCommands(PCLI & cli);
114 bool SetUIMode(
const PCaselessString & str);
119 #endif // OPAL_SIP || OPAL_H323
130 virtual bool Initialise(PArgList & args,
bool verbose,
const PString & defaultRoute);
135 virtual void AddCommands(PCLI & cli);
143 const PArgList & args,
153 #if OPAL_SDP && OPAL_PTLIB_HTTP
156 PCLASSINFO(OpalSDPHTTPConsoleEndPoint, OpalSDPHTTPEndPoint)
159 virtual
void GetArgumentSpec(ostream & strm) const;
160 virtual
bool Initialise(PArgList & args,
bool verbose, const PString & defaultRoute);
162 #endif // OPAL_SDP && OPAL_PTLIB_HTTP
171 virtual void GetArgumentSpec(ostream & strm)
const;
172 virtual bool Initialise(PArgList & args,
bool verbose,
const PString & defaultRoute);
179 virtual void AddCommands(PCLI & cli);
183 bool UseGatekeeperFromArgs(
const PArgList & args,
const char * host,
const char * ident,
const char * pass,
const char * inter);
191 PCLASSINFO(OpalConsoleSkinnyEndPoint, OpalSkinnyEndPoint)
195 virtual
void GetArgumentSpec(ostream & strm) const;
196 virtual
bool Initialise(PArgList & args,
bool verbose, const PString & defaultRoute);
199 PDECLARE_NOTIFIER(PCLI::Arguments, OpalConsoleSkinnyEndPoint, CmdRegister);
200 PDECLARE_NOTIFIER(PCLI::Arguments, OpalConsoleSkinnyEndPoint, CmdStatus);
201 virtual void AddCommands(PCLI & cli);
204 #endif // OPAL_SKINNY
210 PCLASSINFO(OpalConsoleLyncEndPoint, OpalLyncEndPoint)
214 virtual
void GetArgumentSpec(ostream & strm) const;
215 virtual
bool Initialise(PArgList & args,
bool verbose, const PString & defaultRoute);
218 PDECLARE_NOTIFIER(PCLI::Arguments, OpalConsoleLyncEndPoint, CmdRegister);
219 virtual void AddCommands(PCLI & cli);
232 virtual void GetArgumentSpec(ostream & strm)
const;
233 virtual bool Initialise(PArgList & args,
bool verbose,
const PString & defaultRoute);
237 virtual void AddCommands(PCLI & cli);
246 PCLASSINFO(OpalConsoleCapiEndPoint, OpalCapiEndPoint)
250 virtual
void GetArgumentSpec(ostream & strm) const;
251 virtual
bool Initialise(PArgList & args,
bool verbose, const PString & defaultRoute);
254 virtual void AddCommands(PCLI & cli);
267 virtual void GetArgumentSpec(ostream & strm)
const;
268 virtual bool Initialise(PArgList & args,
bool verbose,
const PString &);
283 bool SetPresentationVideoDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoInputDevice(args, OpalVideoFormat::ePresentation); }
284 const PVideoDevice::OpenArgs & GetPresentationVideoDevice()
const {
return m_manager.GetVideoInputDevice(OpalVideoFormat::ePresentation); }
285 bool SetPresentationPreviewDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoPreviewDevice(args, OpalVideoFormat::ePresentation); }
286 const PVideoDevice::OpenArgs & GetPresentationPreviewDevice()
const {
return m_manager.GetVideoPreviewDevice(OpalVideoFormat::ePresentation); }
287 bool SetPresentationOutputDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoOutputDevice(args, OpalVideoFormat::ePresentation); }
288 const PVideoDevice::OpenArgs & GetPresentationOutputDevice()
const {
return m_manager.GetVideoOutputDevice(OpalVideoFormat::ePresentation); }
289 bool SetSpeakerVideoDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoInputDevice(args, OpalVideoFormat::eSpeaker); }
290 const PVideoDevice::OpenArgs & GetSpeakerVideoDevice()
const {
return m_manager.GetVideoInputDevice(OpalVideoFormat::eSpeaker); }
291 bool SetSpeakerPreviewDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoPreviewDevice(args, OpalVideoFormat::eSpeaker); }
292 const PVideoDevice::OpenArgs & GetSpeakerPreviewDevice()
const {
return m_manager.GetVideoPreviewDevice(OpalVideoFormat::eSpeaker); }
293 bool SetSpeakerOutputDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoOutputDevice(args, OpalVideoFormat::eSpeaker); }
294 const PVideoDevice::OpenArgs & GetSpeakerOutputDevice()
const {
return m_manager.GetVideoOutputDevice(OpalVideoFormat::eSpeaker); }
295 bool SetSignVideoDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoInputDevice(args, OpalVideoFormat::eSignLanguage); }
296 const PVideoDevice::OpenArgs & GetSignVideoDevice()
const {
return m_manager.GetVideoInputDevice(OpalVideoFormat::eSignLanguage); }
297 bool SetSignPreviewDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoPreviewDevice(args, OpalVideoFormat::eSignLanguage); }
298 const PVideoDevice::OpenArgs & GetSignPreviewDevice()
const {
return m_manager.GetVideoPreviewDevice(OpalVideoFormat::eSignLanguage); }
299 bool SetSignOutputDevice(
const PVideoDevice::OpenArgs & args) {
return m_manager.SetVideoOutputDevice(args, OpalVideoFormat::eSignLanguage); }
300 const PVideoDevice::OpenArgs & GetSignOutputDevice()
const {
return m_manager.GetVideoOutputDevice(OpalVideoFormat::eSignLanguage); }
307 virtual void AddCommands(PCLI & cli);
310 void SetRingInfo(ostream & out,
bool verbose,
const PString & filename,
const PString & device,
const PString & driver);
316 virtual void ShutDown();
329 void RingThreadMain();
331 #endif // OPAL_HAS_PCSS
341 virtual void GetArgumentSpec(ostream & strm)
const;
342 virtual bool Initialise(PArgList & args,
bool,
const PString &);
345 virtual void AddCommands(PCLI &);
358 virtual void GetArgumentSpec(ostream & strm)
const;
359 virtual bool Initialise(PArgList & args,
bool,
const PString &);
362 virtual void AddCommands(PCLI &);
365 #endif // OPAL_HAS_MIXER
383 virtual PString GetArgumentSpec()
const;
384 virtual void Usage(ostream & strm,
const PArgList & args);
386 bool PreInitialise(PArgList & args,
bool verbose =
false);
388 virtual bool Initialise(
390 bool verbose =
false,
391 const PString & defaultRoute = PString::Empty()
394 virtual void EndRun(
bool interrupt =
false);
395 virtual void Broadcast(
const PString & msg);
398 virtual void OnEstablishedCall(
OpalCall & call);
399 virtual void OnHold(
OpalConnection & connection,
bool fromRemote,
bool onHold);
400 virtual bool OnChangedPresentationRole(
OpalConnection & connection,
const PString & newChairURI,
bool request);
403 virtual void OnFailedMediaStream(
OpalConnection & connection,
bool fromRemote,
const PString & reason);
404 virtual void OnUserInputString(
OpalConnection & connection,
const PString & value);
405 virtual void OnClearedCall(
OpalCall & call);
413 : PWaitAndSignal(mgr.m_outputMutex)
414 , m_stream(*mgr.m_outputStream)
418 ostream & operator *()
const {
return m_stream; }
419 operator ostream & ()
const {
return m_stream; }
425 bool GetCallFromArgs(PCLI::Arguments & args, PSafePtr<OpalCall> & call);
429 PSafePtr<OpalCall> call;
430 if (!GetCallFromArgs(args, call))
433 if ((connection = call->GetConnectionAs<CONTYPE>(0)) != NULL)
436 args.WriteError(
"Not a suitable call for operation.");
440 bool GetStreamFromArgs(
441 PCLI::Arguments & args,
444 PSafePtr<OpalMediaStream> & stream
457 virtual OpalSDPHTTPConsoleEndPoint * CreateSDPHTTPEndPoint();
460 virtual OpalConsoleSkinnyEndPoint * CreateSkinnyEndPoint();
463 virtual OpalConsoleLyncEndPoint * CreateLyncEndPoint();
469 virtual OpalConsoleCapiEndPoint * CreateCapiEndPoint();
488 PDECLARE_MUTEX(m_outputMutex, OpalConsoleOutput);
495 typedef map<PString, OpalMediaStatistics>
StatsMap;
497 PDECLARE_MUTEX(m_statsMutex, OpalConsoleStats);
498 virtual bool OutputStatistics();
499 virtual bool OutputStatistics(ostream & strm);
500 virtual bool OutputCallStatistics(ostream & strm,
OpalCall & call);
501 virtual bool OutputStreamStatistics(ostream & strm,
const OpalMediaStream & stream);
526 virtual PString GetArgumentSpec()
const;
527 virtual bool Initialise(
530 const PString & defaultRoute = PString::Empty()
533 virtual void EndRun(
bool interrupt =
false);
534 virtual void Broadcast(
const PString & msg);
537 PCLI * CreateCLIStandard();
539 PCLITelnet * CreateCLITelnet(WORD port);
542 PCLICurses * CreateCLICurses();
545 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdIpTcpPorts);
546 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdIpUdpPorts);
547 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdIpRtpPorts);
548 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdIpRtpTos);
549 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdIpRtpSize);
550 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdIpQoS);
552 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdSSL);
555 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdNatList);
556 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdNatServer);
560 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdTrace);
564 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdStatistics);
568 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdFarEndCamera);
571 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdAudioCodec);
573 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdVideoCodec);
574 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdVideoDefault);
575 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdVideoTransmit);
576 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdVideoReceive);
577 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdPresentationToken);
581 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdRecord);
583 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdSilenceDetect);
584 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdAutoStart);
585 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdCodecList);
586 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdCodecOrder);
587 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdCodecMask);
588 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdCodecOption);
590 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdCall);
591 virtual void AdjustCmdCallArguments(PString & from, PString & to);
592 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdHold);
593 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdRetrieve);
594 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdTransfer);
595 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdHangUp);
596 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdSendUserInput);
597 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdWaitPhase);
599 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdWaitPackets);
601 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdShowCalls);
603 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdDelay);
604 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdVersion);
605 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdQuit);
606 PDECLARE_NOTIFIER(PCLI::Arguments, OpalManagerCLI, CmdShutDown);
616 template <
class Manager,
621 PProcess::CodeStatus Status = PProcess::ReleaseCode,
630 : PProcess(Manuf, Name, MajorVersion, MinorVersion, Status, PatchVersion, false, false, OemVersion)
637 delete this->m_manager;
642 this->SetTerminationValue(1);
643 this->m_manager =
new Manager;
644 if (this->m_manager->Initialise(this->GetArguments(), Verbose)) {
645 this->SetTerminationValue(0);
646 this->m_manager->Run();
652 if (this->m_manager == NULL)
655 this->m_manager->EndRun(
true);
664 #endif // OPAL_OPAL_CONSOLE_MGR_H
#define OPAL_PATCH
Definition: opal_config.h:41
Definition: console_mgr.h:97
OpalManagerConsole OpalConsoleManager
Definition: console_mgr.h:505
Definition: manager.h:150
Definition: endpoint.h:65
virtual void OnRegistrationStatus(const RegistrationStatus &status)
Definition: console_mgr.h:325
This file contains a simplified API to the OPAL system. It provides a pure "C" language interface as ...
Definition: console_mgr.h:326
PStringArray m_endpointPrefixes
Definition: console_mgr.h:482
Definition: localep.h:469
bool GetConnectionFromArgs(PCLI::Arguments &args, PSafePtr< CONTYPE > &connection)
Definition: console_mgr.h:427
map< PString, OpalMediaStatistics > StatsMap
Definition: console_mgr.h:495
~OpalConsoleProcess()
Definition: console_mgr.h:635
LockedStream(const OpalManagerConsole &mgr)
Definition: console_mgr.h:412
InitResult
Definition: console_mgr.h:76
void AddRoutesFor(const OpalEndPoint *endpoint, const PString &defaultRoute)
Definition: console_mgr.h:66
RegistrationFailReasons
Definition: gkclient.h:274
#define OPAL_MAJOR
Definition: opal_config.h:39
OpalRTPEndPoint & m_endpoint
Definition: console_mgr.h:117
virtual ~OpalConsoleEndPoint()
Definition: console_mgr.h:74
PSyncPoint m_ringSignal
Definition: console_mgr.h:322
unsigned m_interrupted
Definition: console_mgr.h:485
void GetArgumentSpec(ostream &strm) const
OpalRTPConsoleEndPoint(OpalManagerConsole &console, OpalRTPEndPoint *endpoint)
PFilePath m_ringFileName
Definition: console_mgr.h:319
virtual bool Initialise(PArgList &args, bool verbose, const PString &defaultRoute)
virtual bool OnInterrupt(bool)
Definition: console_mgr.h:650
Definition: console_mgr.h:79
PSoundChannel::Params m_ringChannelParams
Definition: console_mgr.h:320
SIPConsoleEndPoint(OpalManagerConsole &manager)
bool SetUIMode(const PCaselessString &str)
Definition: console_mgr.h:78
Definition: console_mgr.h:166
Definition: opalmixer.h:588
void SetEndpointDisabled(bool disabled)
Definition: console_mgr.h:86
PFilePath m_statsFile
Definition: console_mgr.h:494
Definition: console_mgr.h:261
bool m_verbose
Definition: console_mgr.h:486
__inline LockedStream LockedOutput() const
Definition: console_mgr.h:422
OpalConsoleProcess()
Definition: console_mgr.h:629
OpalConsoleEndPoint(OpalManagerConsole &console)
Definition: console_mgr.h:69
RingState
Definition: console_mgr.h:323
bool Initialise(PArgList &args, ostream &output, bool verbose)
virtual void GetArgumentSpec(ostream &strm) const =0
Definition: h281handler.h:44
Definition: console_mgr.h:77
Definition: console_mgr.h:226
PThread * m_ringThread
Definition: console_mgr.h:321
Definition: console_mgr.h:407
Definition: gkclient.h:60
Definition: connection.h:415
bool m_endpointDisabled
Definition: console_mgr.h:90
#define OPAL_MINOR
Definition: opal_config.h:40
virtual bool Initialise(PArgList &args, bool verbose, const PString &defaultRoute)=0
#define OPAL_OEM
Definition: opal_config.h:42
#define OPAL_CONSOLE_PREFIXES
Definition: console_mgr.h:54
virtual void Main()
Definition: console_mgr.h:640
virtual void GetArgumentSpec(ostream &strm) const
Definition: console_mgr.h:123
bool DoRegistration(ostream &output, bool verbose, const PString &aor, const PString &pwd, const PArgList &args, const char *authId, const char *realm, const char *proxy, const char *mode, const char *ttl)
Definition: console_mgr.h:335
PString m_lastCallToken
Definition: console_mgr.h:490
Definition: console_mgr.h:625
OpalManagerConsole & m_console
Definition: console_mgr.h:89
Definition: console_mgr.h:352
ostream & m_stream
Definition: console_mgr.h:410
PTimeInterval m_statsPeriod
Definition: console_mgr.h:493
PSyncPoint m_endRun
Definition: console_mgr.h:484
StatsMap m_statistics
Definition: console_mgr.h:496
ostream * m_outputStream
Definition: console_mgr.h:487
Definition: console_mgr.h:373