#ifndef CLIENT_H_
#define CLIENT_H_
+#include <sigc++/trackable.h>
#include <msp/fs/path.h>
#include <msp/net/streamsocket.h>
+#include <msp/time/timedelta.h>
+#include "xinestream.h"
class Xinema;
-class Client
+class Client: public sigc::trackable
{
private:
Xinema &xinema;
Msp::Net::StreamSocket *socket;
std::string buffer;
+ Msp::Mutex mutex;
+ Msp::Time::TimeDelta last_position;
bool stale;
public:
void data_available();
void end_of_stream();
+ XineStream &get_stream() const;
+ int convert_channel(const std::string &);
void process_command(const std::string &);
void send_reply(const std::string &);
void list_directory(const Msp::FS::Path &);
+
+ void stream_created(XineStream &);
+ void stream_destroyed();
+ void stream_state_changed(XineStream::State);
+ void stream_title_changed(const std::string &);
+ void stream_duration_changed(const Msp::Time::TimeDelta &);
+ void stream_position_changed(const Msp::Time::TimeDelta &);
+ void stream_channels_changed();
+ void stream_audio_channel_changed(int);
+ void stream_spu_channel_changed(int);
};
#endif