ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/DecentralizedMedia/DecentralizedMedia.cpp
Revision: 470
Committed: 2005-06-07T20:45:08-07:00 (20 years ago) by douglas
File size: 1209 byte(s)
Log Message:
Woo!

File Contents

# User Rev Content
1 douglas 464 // Decentralized Media
2     //
3     // Douglas Thrift
4     //
5     // $Id$
6    
7 douglas 470 #include <menes/standard.hh>
8 douglas 464
9 douglas 470 #include <menes-waf/server.hpp>
10    
11 douglas 464 #include "BeepRemote.hpp"
12    
13 douglas 470 class DecentralizedMedia : public waf::Server
14 douglas 464 {
15 douglas 469 public:
16 douglas 464 BeepRemote bmp;
17 douglas 469 private:
18 douglas 470 _H<api::Thread> block;
19 douglas 469 _H<api::Process> process;
20     int Destroy() { return process->Join(); }
21 douglas 470 protected:
22     virtual void Process(const net::Http::Request& request, net::Http::Response& response)
23     {
24     if (request.method_ == "PLAY")
25     api::Cout << "PLAY" << ios::NewLine;
26     else if (request.method_ == "PAUSE")
27     api::Cout << "PAUSE" << ios::NewLine;
28     else
29     waf::Server::Process(request, response);
30     }
31 douglas 469 public:
32 douglas 470 // XXX: "../Web" can be "Web" when we take out the evil juju
33     DecentralizedMedia() : waf::Server("../Web"), process(bmp.IsRunning() ? NULL : new api::Process("/usr/X11R6/bin/beep-media-player"))
34     {
35     AddPort(6996);
36     }
37 douglas 469 ~DecentralizedMedia()
38     {
39     if (!process.IsEmpty())
40     {
41     _H<api::Thread> thread(new api::Thread(etl::BindAll(&DecentralizedMedia::Destroy, this)));
42 douglas 464
43 douglas 469 bmp.Quit();
44    
45     thread->Join();
46     }
47     }
48     };
49    
50     int Main(const app::Options& options)
51     {
52 douglas 470 // XXX: evil juju to make waf::Server behave nicely
53     ::chdir("menes");
54    
55 douglas 469 DecentralizedMedia media;
56    
57 douglas 464 return 0;
58     }

Properties

Name Value
svn:eol-style native
svn:keywords Id