// Decentralized Media // // Douglas Thrift // // $Id$ #include #include #include "BeepRemote.hpp" class DecentralizedMedia : public waf::Server { public: BeepRemote bmp; private: _H block; _H process; int Destroy() { return process->Join(); } protected: virtual void Process(const net::Http::Request& request, net::Http::Response& response) { if (request.method_ == "PLAY") api::Cout << "PLAY" << ios::NewLine; else if (request.method_ == "PAUSE") api::Cout << "PAUSE" << ios::NewLine; else waf::Server::Process(request, response); } public: // XXX: "../Web" can be "Web" when we take out the evil juju DecentralizedMedia() : waf::Server("../Web"), process(bmp.IsRunning() ? NULL : new api::Process("/usr/X11R6/bin/beep-media-player")) { AddPort(6996); } ~DecentralizedMedia() { if (!process.IsEmpty()) { _H thread(new api::Thread(etl::BindAll(&DecentralizedMedia::Destroy, this))); bmp.Quit(); thread->Join(); } } }; int Main(const app::Options& options) { // XXX: evil juju to make waf::Server behave nicely ::chdir("menes"); DecentralizedMedia media; return 0; }