diff options
author | bju <bju@maxi.fritz.box> | 2011-03-19 15:54:21 +0100 |
---|---|---|
committer | bju <bju@maxi.fritz.box> | 2011-03-19 15:54:21 +0100 |
commit | b4558f9dac4977c6ac933f52fc98b9eea9dfdbca (patch) | |
tree | 2f0c36309c44235d4bd8121d82271cd16bcd5348 /vdr-androvdr/handler.cpp | |
download | vdr-manager-b4558f9dac4977c6ac933f52fc98b9eea9dfdbca.tar.gz vdr-manager-b4558f9dac4977c6ac933f52fc98b9eea9dfdbca.tar.bz2 |
First revision
Diffstat (limited to 'vdr-androvdr/handler.cpp')
-rw-r--r-- | vdr-androvdr/handler.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/vdr-androvdr/handler.cpp b/vdr-androvdr/handler.cpp new file mode 100644 index 0000000..18f6e02 --- /dev/null +++ b/vdr-androvdr/handler.cpp @@ -0,0 +1,92 @@ +/* + * event und message handler + */ + +#include <unistd.h> +#include <vdr/plugin.h> +#include <vdr/timers.h> +#include "sock.h" +#include "select.h" +#include "androvdrthread.h" +#include "helpers.h" + +bool cHandler::HandleNewClient(cVdrmanagerClientSocket * sock) +{ + return true; +} + +bool cHandler::HandleClientRequest(cVdrmanagerClientSocket * sock) +{ + while(sock->Read()) + { + // get lines + while (sock->IsLineComplete()) + { + string line; + sock->GetLine(line); + + // parse request + size_t space = line.find(' '); + string cmd; + string args; + if (space != string::npos) { + cmd = cHelpers::ToUpper(line.substr(0, space)); + args = cHelpers::Trim(line.substr(space+1)); + } else { + cmd = cHelpers::ToUpper(line); + args = ""; + } + + if (!sock->IsLoggedIn() && cmd != "PASSWD") { + sock->PutLine("!ERROR\r\n"); + } + else if (cmd == "PASSWD") + { + if (args != sock->GetPassword()) { + sock->PutLine("!ERROR\r\n"); + } else { + sock->SetLoggedIn(); + sock->PutLine("!OK\r\n"); + } + } + else if (cmd == "TIMERS") + { + string text = cHelpers::GetTimers(args); + sock->PutLine(text); + } + else if (cmd == "CHANNELS") + { + string text = cHelpers::GetChannels(args); + sock->PutLine(text); + } + else if (cmd == "TEVENTS") + { + string text = cHelpers::GetTimeEvents(args); + sock->PutLine(text); + } + else if (cmd == "CEVENTS") + { + string text = cHelpers::GetChannelEvents(args); + sock->PutLine(text); + } + else if (cmd == "TIMER") + { + string text = cHelpers::SetTimer(args); + sock->PutLine(text); + } + else if (cmd == "SEARCH") + { + string text = cHelpers::SearchEvents(args); + sock->PutLine(text); + } + else if (cmd == "QUIT") + { + // close socket + sock->PutLine(string("Good bye! :-)\n")); + sock->Disconnect(); + } + } + } + + return true; +} |