From ddd1a0f72ead13639f3bc062e23bfee511506778 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 27 Aug 2012 15:31:41 +0200 Subject: [PATCH] Create custom responses deriving from the Response class. --- .../commands/adaptive-jitter-compensation.cc | 78 +++++++-------- .../commands/adaptive-jitter-compensation.h | 5 - daemon/commands/firewall-policy.cc | 31 +++--- daemon/commands/firewall-policy.h | 5 - daemon/commands/ipv6.cc | 25 ++--- daemon/commands/ipv6.h | 5 - daemon/commands/media-encryption.cc | 25 ++--- daemon/commands/media-encryption.h | 5 - daemon/commands/port.cc | 98 ++++++++++--------- daemon/commands/port.h | 5 - daemon/commands/ptime.cc | 46 +++++---- daemon/commands/ptime.h | 5 - 12 files changed, 145 insertions(+), 188 deletions(-) diff --git a/daemon/commands/adaptive-jitter-compensation.cc b/daemon/commands/adaptive-jitter-compensation.cc index 2681bfc87..f125c78ab 100644 --- a/daemon/commands/adaptive-jitter-compensation.cc +++ b/daemon/commands/adaptive-jitter-compensation.cc @@ -2,82 +2,82 @@ using namespace std; -class AdaptiveBufferCompensationCommandPrivate { +class AdaptiveBufferCompensationResponse : public Response { public: enum StreamType { AudioStream, - VideoStream + VideoStream, + AllStreams }; - void outputAdaptiveBufferCompensation(Daemon *app, ostringstream &ost, StreamType type); - void outputAdaptiveBufferCompensations(Daemon *app, ostringstream &ost); + AdaptiveBufferCompensationResponse(LinphoneCore *core, StreamType type); + +private: + void outputAdaptiveBufferCompensation(LinphoneCore *core, ostringstream &ost, const char *header, bool_t value); }; -void AdaptiveBufferCompensationCommandPrivate::outputAdaptiveBufferCompensation(Daemon* app, ostringstream& ost, StreamType type) { +AdaptiveBufferCompensationResponse::AdaptiveBufferCompensationResponse(LinphoneCore *core, StreamType type) : Response() { bool enabled = false; + ostringstream ost; switch (type) { case AudioStream: - enabled = linphone_core_audio_adaptive_jittcomp_enabled(app->getCore()); - ost << "Audio: "; + enabled = linphone_core_audio_adaptive_jittcomp_enabled(core); + outputAdaptiveBufferCompensation(core, ost, "Audio", enabled); break; case VideoStream: - enabled = linphone_core_video_adaptive_jittcomp_enabled(app->getCore()); - ost << "Video: "; + enabled = linphone_core_video_adaptive_jittcomp_enabled(core); + outputAdaptiveBufferCompensation(core, ost, "Video", enabled); + break; + case AllStreams: + enabled = linphone_core_audio_adaptive_jittcomp_enabled(core); + outputAdaptiveBufferCompensation(core, ost, "Audio", enabled); + enabled = linphone_core_video_adaptive_jittcomp_enabled(core); + outputAdaptiveBufferCompensation(core, ost, "Video", enabled); break; } - if (enabled) { + setBody(ost.str().c_str()); +} + +void AdaptiveBufferCompensationResponse::outputAdaptiveBufferCompensation(LinphoneCore *core, ostringstream &ost, const char *header, bool_t value) { + ost << header << ": "; + if (value) { ost << "enabled\n"; } else { ost << "disabled\n"; } } -void AdaptiveBufferCompensationCommandPrivate::outputAdaptiveBufferCompensations(Daemon* app, ostringstream& ost) -{ - outputAdaptiveBufferCompensation(app, ost, AdaptiveBufferCompensationCommandPrivate::AudioStream); - outputAdaptiveBufferCompensation(app, ost, AdaptiveBufferCompensationCommandPrivate::VideoStream); -} - AdaptiveBufferCompensationCommand::AdaptiveBufferCompensationCommand() : DaemonCommand("adaptive-jitter-compensation", "adaptive-jitter-compensation [] [enable|disable]", "Enable or disable adaptive buffer compensation respectively with the 'enable' and 'disable' parameters for the specified stream, " "return the status of the use of adaptive buffer compensation without parameter.\n" - " must be one of these values: audio, video."), - d(new AdaptiveBufferCompensationCommandPrivate()) { -} - -AdaptiveBufferCompensationCommand::~AdaptiveBufferCompensationCommand() { - delete d; + " must be one of these values: audio, video.") { } void AdaptiveBufferCompensationCommand::exec(Daemon *app, const char *args) { string stream; string state; istringstream ist(args); - ostringstream ost; ist >> stream; if (ist.fail()) { - d->outputAdaptiveBufferCompensations(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(AdaptiveBufferCompensationResponse(app->getCore(), AdaptiveBufferCompensationResponse::AllStreams)); } else { ist >> state; if (ist.fail()) { if (stream.compare("audio") == 0) { - d->outputAdaptiveBufferCompensation(app, ost, AdaptiveBufferCompensationCommandPrivate::AudioStream); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(AdaptiveBufferCompensationResponse(app->getCore(), AdaptiveBufferCompensationResponse::AudioStream)); } else if (stream.compare("video") == 0) { - d->outputAdaptiveBufferCompensation(app, ost, AdaptiveBufferCompensationCommandPrivate::VideoStream); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(AdaptiveBufferCompensationResponse(app->getCore(), AdaptiveBufferCompensationResponse::VideoStream)); } else { app->sendResponse(Response("Incorrect stream parameter.", Response::Error)); } } else { - AdaptiveBufferCompensationCommandPrivate::StreamType type; + AdaptiveBufferCompensationResponse::StreamType type; bool enabled; if (stream.compare("audio") == 0) { - type = AdaptiveBufferCompensationCommandPrivate::AudioStream; + type = AdaptiveBufferCompensationResponse::AudioStream; } else if (stream.compare("video") == 0) { - type = AdaptiveBufferCompensationCommandPrivate::VideoStream; + type = AdaptiveBufferCompensationResponse::VideoStream; } else { app->sendResponse(Response("Incorrect stream parameter.", Response::Error)); return; @@ -90,16 +90,12 @@ void AdaptiveBufferCompensationCommand::exec(Daemon *app, const char *args) { app->sendResponse(Response("Incorrect parameter.", Response::Error)); return; } - switch (type) { - case AdaptiveBufferCompensationCommandPrivate::AudioStream: - linphone_core_enable_audio_adaptive_jittcomp(app->getCore(), enabled); - break; - case AdaptiveBufferCompensationCommandPrivate::VideoStream: - linphone_core_enable_video_adaptive_jittcomp(app->getCore(), enabled); - break; + if (type == AdaptiveBufferCompensationResponse::AudioStream) { + linphone_core_enable_audio_adaptive_jittcomp(app->getCore(), enabled); + } else if (type == AdaptiveBufferCompensationResponse::VideoStream) { + linphone_core_enable_video_adaptive_jittcomp(app->getCore(), enabled); } - d->outputAdaptiveBufferCompensation(app, ost, type); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(AdaptiveBufferCompensationResponse(app->getCore(), AdaptiveBufferCompensationResponse::AllStreams)); } } } diff --git a/daemon/commands/adaptive-jitter-compensation.h b/daemon/commands/adaptive-jitter-compensation.h index 2091f951c..dc319b7c5 100644 --- a/daemon/commands/adaptive-jitter-compensation.h +++ b/daemon/commands/adaptive-jitter-compensation.h @@ -3,15 +3,10 @@ #include "../daemon.h" -class AdaptiveBufferCompensationCommandPrivate; - class AdaptiveBufferCompensationCommand: public DaemonCommand { public: AdaptiveBufferCompensationCommand(); - ~AdaptiveBufferCompensationCommand(); virtual void exec(Daemon *app, const char *args); -private: - AdaptiveBufferCompensationCommandPrivate *d; }; #endif //COMMAND_ADAPTIVE_BUFFER_COMPENSATION_H_ diff --git a/daemon/commands/firewall-policy.cc b/daemon/commands/firewall-policy.cc index e7c374733..c648380cc 100644 --- a/daemon/commands/firewall-policy.cc +++ b/daemon/commands/firewall-policy.cc @@ -2,13 +2,14 @@ using namespace std; -class FirewallPolicyCommandPrivate { +class FirewallPolicyResponse : public Response { public: - void outputFirewallPolicy(Daemon *app, ostringstream &ost); + FirewallPolicyResponse(LinphoneCore *core); }; -void FirewallPolicyCommandPrivate::outputFirewallPolicy(Daemon* app, ostringstream& ost) { - LinphoneFirewallPolicy policy = linphone_core_get_firewall_policy(app->getCore()); +FirewallPolicyResponse::FirewallPolicyResponse(LinphoneCore *core) : Response() { + ostringstream ost; + LinphoneFirewallPolicy policy = linphone_core_get_firewall_policy(core); ost << "Type: "; switch (policy) { case LinphonePolicyNoFirewall: @@ -16,17 +17,18 @@ void FirewallPolicyCommandPrivate::outputFirewallPolicy(Daemon* app, ostringstre break; case LinphonePolicyUseNatAddress: ost << "nat\n"; - ost << "Address: " << linphone_core_get_nat_address(app->getCore()) << "\n"; + ost << "Address: " << linphone_core_get_nat_address(core) << "\n"; break; case LinphonePolicyUseStun: ost << "stun\n"; - ost << "Address: " << linphone_core_get_stun_server(app->getCore()) << "\n"; + ost << "Address: " << linphone_core_get_stun_server(core) << "\n"; break; case LinphonePolicyUseIce: ost << "ice\n"; - ost << "Address: " << linphone_core_get_stun_server(app->getCore()) << "\n"; + ost << "Address: " << linphone_core_get_stun_server(core) << "\n"; break; } + setBody(ost.str().c_str()); } FirewallPolicyCommand::FirewallPolicyCommand() : @@ -34,12 +36,7 @@ FirewallPolicyCommand::FirewallPolicyCommand() : "Set the firewall policy if type is set, otherwise return the used firewall policy.\n" " must be one of these values: none, nat, stun, ice.\n" "
must be specified for the 'nat' and 'stun' types. " - "It represents the public address of the gateway for the 'nat' type and the STUN server address for the 'stun' and 'ice' types."), - d(new FirewallPolicyCommandPrivate()) { -} - -FirewallPolicyCommand::~FirewallPolicyCommand() { - delete d; + "It represents the public address of the gateway for the 'nat' type and the STUN server address for the 'stun' and 'ice' types.") { } void FirewallPolicyCommand::exec(Daemon *app, const char *args) { @@ -48,9 +45,7 @@ void FirewallPolicyCommand::exec(Daemon *app, const char *args) { istringstream ist(args); ist >> type; if (ist.eof() && (type.length() == 0)) { - ostringstream ost; - d->outputFirewallPolicy(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(FirewallPolicyResponse(app->getCore())); } else if (ist.fail()) { app->sendResponse(Response("Incorrect type parameter.", Response::Error)); } else { @@ -85,8 +80,6 @@ void FirewallPolicyCommand::exec(Daemon *app, const char *args) { } else if ((policy == LinphonePolicyUseStun) || (policy == LinphonePolicyUseIce)) { linphone_core_set_stun_server(app->getCore(), address.c_str()); } - ostringstream ost; - d->outputFirewallPolicy(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(FirewallPolicyResponse(app->getCore())); } } diff --git a/daemon/commands/firewall-policy.h b/daemon/commands/firewall-policy.h index ac927c1b1..07fb63298 100644 --- a/daemon/commands/firewall-policy.h +++ b/daemon/commands/firewall-policy.h @@ -3,15 +3,10 @@ #include "../daemon.h" -class FirewallPolicyCommandPrivate; - class FirewallPolicyCommand: public DaemonCommand { public: FirewallPolicyCommand(); - ~FirewallPolicyCommand(); virtual void exec(Daemon *app, const char *args); -private: - FirewallPolicyCommandPrivate *d; }; #endif //COMMAND_FIREWALL_POLICY_H_ diff --git a/daemon/commands/ipv6.cc b/daemon/commands/ipv6.cc index 65e4e2251..1e6876898 100644 --- a/daemon/commands/ipv6.cc +++ b/daemon/commands/ipv6.cc @@ -2,29 +2,26 @@ using namespace std; -class IPv6CommandPrivate { +class IPv6Response : public Response { public: - void outputIPv6(Daemon *app, ostringstream &ost); + IPv6Response(LinphoneCore *core); }; -void IPv6CommandPrivate::outputIPv6(Daemon* app, ostringstream& ost) { - bool ipv6_enabled = linphone_core_ipv6_enabled(app->getCore()) == TRUE ? true : false; +IPv6Response::IPv6Response(LinphoneCore *core) : Response() { + ostringstream ost; + bool ipv6_enabled = linphone_core_ipv6_enabled(core) == TRUE ? true : false; ost << "State: "; if (ipv6_enabled) { ost << "enabled\n"; } else { ost << "disabled\n"; } + setBody(ost.str().c_str()); } IPv6Command::IPv6Command() : DaemonCommand("ipv6", "ipv6 [enable|disable]", - "Enable or disable IPv6 respectively with the 'enable' and 'disable' parameters, return the status of the use of IPv6 without parameter."), - d(new IPv6CommandPrivate()) { -} - -IPv6Command::~IPv6Command() { - delete d; + "Enable or disable IPv6 respectively with the 'enable' and 'disable' parameters, return the status of the use of IPv6 without parameter.") { } void IPv6Command::exec(Daemon *app, const char *args) { @@ -32,9 +29,7 @@ void IPv6Command::exec(Daemon *app, const char *args) { istringstream ist(args); ist >> status; if (ist.fail()) { - ostringstream ost; - d->outputIPv6(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(IPv6Response(app->getCore())); } else { if (status.compare("enable") == 0) { linphone_core_enable_ipv6(app->getCore(), TRUE); @@ -44,8 +39,6 @@ void IPv6Command::exec(Daemon *app, const char *args) { app->sendResponse(Response("Incorrect parameter.", Response::Error)); return; } - ostringstream ost; - d->outputIPv6(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(IPv6Response(app->getCore())); } } diff --git a/daemon/commands/ipv6.h b/daemon/commands/ipv6.h index c744bf765..591a3d7cb 100644 --- a/daemon/commands/ipv6.h +++ b/daemon/commands/ipv6.h @@ -3,15 +3,10 @@ #include "../daemon.h" -class IPv6CommandPrivate; - class IPv6Command: public DaemonCommand { public: IPv6Command(); - ~IPv6Command(); virtual void exec(Daemon *app, const char *args); -private: - IPv6CommandPrivate *d; }; #endif //COMMAND_IPV6_H_ diff --git a/daemon/commands/media-encryption.cc b/daemon/commands/media-encryption.cc index c28b3d7c8..fccd8d568 100644 --- a/daemon/commands/media-encryption.cc +++ b/daemon/commands/media-encryption.cc @@ -2,13 +2,14 @@ using namespace std; -class MediaEncryptionCommandPrivate { +class MediaEncryptionResponse : public Response { public: - void outputMediaEncryption(Daemon *app, ostringstream &ost); + MediaEncryptionResponse(LinphoneCore *core); }; -void MediaEncryptionCommandPrivate::outputMediaEncryption(Daemon* app, ostringstream& ost) { - LinphoneMediaEncryption encryption = linphone_core_get_media_encryption(app->getCore()); +MediaEncryptionResponse::MediaEncryptionResponse(LinphoneCore *core) : Response() { + LinphoneMediaEncryption encryption = linphone_core_get_media_encryption(core); + ostringstream ost; ost << "Encryption: "; switch (encryption) { case LinphoneMediaEncryptionNone: @@ -21,16 +22,12 @@ void MediaEncryptionCommandPrivate::outputMediaEncryption(Daemon* app, ostringst ost << "zrtp\n"; break; } + setBody(ost.str().c_str()); } MediaEncryptionCommand::MediaEncryptionCommand() : DaemonCommand("media-encryption", "media-encryption [none|srtp|zrtp]", - "Set the media encryption policy if a parameter is given, otherwise return the media encrytion in use."), - d(new MediaEncryptionCommandPrivate()) { -} - -MediaEncryptionCommand::~MediaEncryptionCommand() { - delete d; + "Set the media encryption policy if a parameter is given, otherwise return the media encrytion in use.") { } void MediaEncryptionCommand::exec(Daemon *app, const char *args) { @@ -38,9 +35,7 @@ void MediaEncryptionCommand::exec(Daemon *app, const char *args) { istringstream ist(args); ist >> encryption_str; if (ist.eof() && (encryption_str.length() == 0)) { - ostringstream ost; - d->outputMediaEncryption(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(MediaEncryptionResponse(app->getCore())); } else if (ist.fail()) { app->sendResponse(Response("Incorrect parameter.", Response::Error)); } else { @@ -56,8 +51,6 @@ void MediaEncryptionCommand::exec(Daemon *app, const char *args) { return; } linphone_core_set_media_encryption(app->getCore(), encryption); - ostringstream ost; - d->outputMediaEncryption(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(MediaEncryptionResponse(app->getCore())); } } diff --git a/daemon/commands/media-encryption.h b/daemon/commands/media-encryption.h index 8e519a351..09a13d88b 100644 --- a/daemon/commands/media-encryption.h +++ b/daemon/commands/media-encryption.h @@ -3,15 +3,10 @@ #include "../daemon.h" -class MediaEncryptionCommandPrivate; - class MediaEncryptionCommand: public DaemonCommand { public: MediaEncryptionCommand(); - ~MediaEncryptionCommand(); virtual void exec(Daemon *app, const char *args); -private: - MediaEncryptionCommandPrivate *d; }; #endif //COMMAND_MEDIA_ENCRYPTION_H_ diff --git a/daemon/commands/port.cc b/daemon/commands/port.cc index bd708aa84..09c528e01 100644 --- a/daemon/commands/port.cc +++ b/daemon/commands/port.cc @@ -2,63 +2,76 @@ using namespace std; -enum PortType { - SIPPort, - AudioRTPPort, - VideoRTPPort -}; - enum Protocol { UDPProtocol, TCPProtocol, TLSProtocol }; -class PortCommandPrivate { +class PortResponse : public Response { public: - void outputPort(Daemon *app, ostringstream &ost, PortType type); - void outputPorts(Daemon *app, ostringstream &ost); + enum PortType { + SIPPort, + AudioRTPPort, + VideoRTPPort, + AllPorts + }; + + PortResponse(LinphoneCore *core, PortType type); + +private: + void outputSIPPort(LinphoneCore *core, ostringstream &ost); + void outputAudioRTPPort(LinphoneCore *core, ostringstream &ost); + void outputVideoRTPPort(LinphoneCore *core, ostringstream &ost); }; -void PortCommandPrivate::outputPort(Daemon* app, ostringstream& ost, PortType type) { +PortResponse::PortResponse(LinphoneCore *core, PortResponse::PortType type) : Response() { + ostringstream ost; switch (type) { case SIPPort: - LCSipTransports transports; - linphone_core_get_sip_transports(app->getCore(), &transports); - ost << "SIP: "; - if (transports.udp_port > 0) { - ost << transports.udp_port << " UDP\n"; - } else if (transports.tcp_port > 0) { - ost << transports.tcp_port << " TCP\n"; - } else { - ost << transports.tls_port << " TLS\n"; - } + outputSIPPort(core, ost); break; case AudioRTPPort: - ost << "Audio RTP: " << linphone_core_get_audio_port(app->getCore()) << "\n"; + outputAudioRTPPort(core, ost); break; case VideoRTPPort: - ost << "Video RTP: " << linphone_core_get_video_port(app->getCore()) << "\n"; + outputVideoRTPPort(core, ost); break; + case AllPorts: + outputSIPPort(core, ost); + outputAudioRTPPort(core, ost); + outputVideoRTPPort(core, ost); + break; + } + setBody(ost.str().c_str()); +} + +void PortResponse::outputSIPPort(LinphoneCore *core, ostringstream &ost) { + LCSipTransports transports; + linphone_core_get_sip_transports(core, &transports); + ost << "SIP: "; + if (transports.udp_port > 0) { + ost << transports.udp_port << " UDP\n"; + } else if (transports.tcp_port > 0) { + ost << transports.tcp_port << " TCP\n"; + } else { + ost << transports.tls_port << " TLS\n"; } } -void PortCommandPrivate::outputPorts(Daemon* app, ostringstream& ost) { - outputPort(app, ost, SIPPort); - outputPort(app, ost, AudioRTPPort); - outputPort(app, ost, VideoRTPPort); +void PortResponse::outputAudioRTPPort(LinphoneCore *core, ostringstream &ost) { + ost << "Audio RTP: " << linphone_core_get_audio_port(core) << "\n"; +} + +void PortResponse::outputVideoRTPPort(LinphoneCore *core, ostringstream &ost) { + ost << "Video RTP: " << linphone_core_get_video_port(core) << "\n"; } PortCommand::PortCommand() : DaemonCommand("port", "port [] [] []", "Set the port to use for type if port is set, otherwise return the port used for type if specified or all the used ports if no type is specified.\n" " must be one of these values: sip, audio, video.\n" - " should be defined only for sip port and have one of these values: udp, tcp, tls."), - d(new PortCommandPrivate()) { -} - -PortCommand::~PortCommand() { - delete d; + " should be defined only for sip port and have one of these values: udp, tcp, tls.") { } void PortCommand::exec(Daemon *app, const char *args) { @@ -68,22 +81,18 @@ void PortCommand::exec(Daemon *app, const char *args) { ostringstream ost; ist >> type; if (ist.eof() && (type.length() == 0)) { - d->outputPorts(app, ost); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::AllPorts)); } else if (ist.fail()) { app->sendResponse(Response("Incorrect type parameter.", Response::Error)); } else { ist >> port; if (ist.fail()) { if (type.compare("sip") == 0) { - d->outputPort(app, ost, SIPPort); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::SIPPort)); } else if (type.compare("audio") == 0) { - d->outputPort(app, ost, AudioRTPPort); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::AudioRTPPort)); } else if (type.compare("video") == 0) { - d->outputPort(app, ost, VideoRTPPort); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::VideoRTPPort)); } else { app->sendResponse(Response("Incorrect type parameter.", Response::Error)); } @@ -118,16 +127,13 @@ void PortCommand::exec(Daemon *app, const char *args) { break; } linphone_core_set_sip_transports(app->getCore(), &transports); - d->outputPort(app, ost, SIPPort); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::SIPPort)); } else if (type.compare("audio") == 0) { linphone_core_set_audio_port(app->getCore(), port); - d->outputPort(app, ost, AudioRTPPort); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::AudioRTPPort)); } else if (type.compare("video") == 0) { linphone_core_set_video_port(app->getCore(), port); - d->outputPort(app, ost, VideoRTPPort); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PortResponse(app->getCore(), PortResponse::VideoRTPPort)); } else { app->sendResponse(Response("Incorrect type parameter.", Response::Error)); } diff --git a/daemon/commands/port.h b/daemon/commands/port.h index 59679e63d..e2813970c 100644 --- a/daemon/commands/port.h +++ b/daemon/commands/port.h @@ -3,15 +3,10 @@ #include "../daemon.h" -class PortCommandPrivate; - class PortCommand: public DaemonCommand { public: PortCommand(); - ~PortCommand(); virtual void exec(Daemon *app, const char *args); -private: - PortCommandPrivate *d; }; #endif //COMMAND_PORT_H_ diff --git a/daemon/commands/ptime.cc b/daemon/commands/ptime.cc index 579a4ff1d..5fbf17165 100644 --- a/daemon/commands/ptime.cc +++ b/daemon/commands/ptime.cc @@ -2,23 +2,35 @@ using namespace std; -class PtimeCommandPrivate { +class PtimeResponse : public Response { public: - void outputPtime(Daemon *app, ostringstream &ost, int ms); + enum Direction { + Upload, + Download, + BothDirections + }; + PtimeResponse(LinphoneCore *core, Direction dir); }; -void PtimeCommandPrivate::outputPtime(Daemon* app, ostringstream& ost, int ms) { - ost << "Value: " << ms << "\n"; +PtimeResponse::PtimeResponse(LinphoneCore *core, Direction dir) : Response() { + ostringstream ost; + switch (dir) { + case Upload: + ost << "Upload: " << linphone_core_get_upload_ptime(core) << "\n"; + break; + case Download: + ost << "Download: " << linphone_core_get_download_ptime(core) << "\n"; + break; + case BothDirections: + ost << "Upload: " << linphone_core_get_upload_ptime(core) << "\n"; + ost << "Download: " << linphone_core_get_download_ptime(core) << "\n"; + break; + } + setBody(ost.str().c_str()); } PtimeCommand::PtimeCommand() : - DaemonCommand("ptime", "ptime [up|down] ", "Set the upload or download ptime if ms is defined, otherwise return the current value of the ptime."), - d(new PtimeCommandPrivate()) { -} - -PtimeCommand::~PtimeCommand() -{ - delete d; + DaemonCommand("ptime", "ptime [up|down] ", "Set the upload or download ptime if ms is defined, otherwise return the current value of the ptime.") { } void PtimeCommand::exec(Daemon *app, const char *args) { @@ -27,7 +39,7 @@ void PtimeCommand::exec(Daemon *app, const char *args) { istringstream ist(args); ist >> direction; if (ist.fail()) { - app->sendResponse(Response("Missing/Incorrect parameter(s).", Response::Error)); + app->sendResponse(PtimeResponse(app->getCore(), PtimeResponse::BothDirections)); } else { if (direction.compare("up") == 0) { if (!ist.eof()) { @@ -37,10 +49,7 @@ void PtimeCommand::exec(Daemon *app, const char *args) { } linphone_core_set_upload_ptime(app->getCore(), ms); } - ms = linphone_core_get_upload_ptime(app->getCore()); - ostringstream ost; - d->outputPtime(app, ost, ms); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PtimeResponse(app->getCore(), PtimeResponse::Upload)); } else if (direction.compare("down") == 0) { if (!ist.eof()) { ist >> ms; @@ -49,10 +58,7 @@ void PtimeCommand::exec(Daemon *app, const char *args) { } linphone_core_set_download_ptime(app->getCore(), ms); } - ms = linphone_core_get_download_ptime(app->getCore()); - ostringstream ost; - d->outputPtime(app, ost, ms); - app->sendResponse(Response(ost.str().c_str(), Response::Ok)); + app->sendResponse(PtimeResponse(app->getCore(), PtimeResponse::Download)); } else { app->sendResponse(Response("Missing/Incorrect parameter(s).", Response::Error)); } diff --git a/daemon/commands/ptime.h b/daemon/commands/ptime.h index fec6b49a3..e07140296 100644 --- a/daemon/commands/ptime.h +++ b/daemon/commands/ptime.h @@ -3,15 +3,10 @@ #include "../daemon.h" -class PtimeCommandPrivate; - class PtimeCommand: public DaemonCommand { public: PtimeCommand(); - ~PtimeCommand(); virtual void exec(Daemon *app, const char *args); -private: - PtimeCommandPrivate *d; }; #endif //COMMAND_PTIME_H_