]> git.tdb.fi Git - xinema.git/blob - source/client.h
Create an icon for the remote
[xinema.git] / source / client.h
1 #ifndef CLIENT_H_
2 #define CLIENT_H_
3
4 #include <sigc++/trackable.h>
5 #include <msp/fs/path.h>
6 #include <msp/net/streamsocket.h>
7 #include <msp/time/timedelta.h>
8 #include "xinestream.h"
9
10 class Xinema;
11
12 class Client: public sigc::trackable
13 {
14 private:
15         Xinema &xinema;
16         Msp::Net::StreamSocket *socket;
17         std::string buffer;
18         Msp::Mutex mutex;
19         Msp::Time::TimeDelta last_position;
20         bool stale;
21
22 public:
23         Client(Xinema &, Msp::Net::StreamSocket *);
24
25         bool is_stale() const { return stale; }
26
27 private:
28         void data_available();
29         void end_of_stream();
30
31         XineStream &get_stream() const;
32         int convert_channel(const std::string &);
33         void process_command(const std::string &);
34         void send_reply(const std::string &);
35         void list_directory(const Msp::FS::Path &);
36
37         void stream_created(XineStream &);
38         void stream_destroyed();
39         void stream_state_changed(XineStream::State);
40         void stream_title_changed(const std::string &);
41         void stream_duration_changed(const Msp::Time::TimeDelta &);
42         void stream_position_changed(const Msp::Time::TimeDelta &);
43         void stream_size_changed(unsigned, unsigned);
44         void stream_framerate_changed(float);
45         void stream_codecs_changed(const std::string &, const std::string &);
46         void stream_channels_changed();
47         void stream_audio_channel_changed(int);
48         void stream_spu_channel_changed(int);
49 };
50
51 #endif