diff options
author | Max Kellermann <max@duempel.org> | 2013-10-19 19:35:37 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-10-19 19:35:37 +0200 |
commit | 32645b80c4c6792140e312b5b9fe9f96b48c6ec7 (patch) | |
tree | a3e229576fc0b5572f7f05d930222a3dd2b436b1 /src | |
parent | ff626ac76357940b2f0ac5cb243a68ac13df0f8a (diff) | |
download | mpd-32645b80c4c6792140e312b5b9fe9f96b48c6ec7.tar.gz mpd-32645b80c4c6792140e312b5b9fe9f96b48c6ec7.tar.xz mpd-32645b80c4c6792140e312b5b9fe9f96b48c6ec7.zip |
ClientInternal: move class Client to Client.hxx
Publish the Client API, preparing to move more code into the Client
class.
Diffstat (limited to 'src')
-rw-r--r-- | src/Client.hxx | 90 | ||||
-rw-r--r-- | src/ClientInternal.hxx | 90 | ||||
-rw-r--r-- | src/DatabaseCommands.cxx | 2 | ||||
-rw-r--r-- | src/MessageCommands.cxx | 2 | ||||
-rw-r--r-- | src/OtherCommands.cxx | 2 | ||||
-rw-r--r-- | src/PlayerCommands.cxx | 2 | ||||
-rw-r--r-- | src/PlaylistCommands.cxx | 2 | ||||
-rw-r--r-- | src/QueueCommands.cxx | 2 | ||||
-rw-r--r-- | src/Stats.cxx | 2 |
9 files changed, 96 insertions, 98 deletions
diff --git a/src/Client.hxx b/src/Client.hxx index e9d3b56c8..3a2fda282 100644 --- a/src/Client.hxx +++ b/src/Client.hxx @@ -20,15 +20,103 @@ #ifndef MPD_CLIENT_H #define MPD_CLIENT_H +#include "check.h" +#include "ClientMessage.hxx" +#include "CommandListBuilder.hxx" +#include "event/FullyBufferedSocket.hxx" +#include "event/TimeoutMonitor.hxx" #include "Compiler.h" +#include <set> +#include <string> +#include <list> + #include <stddef.h> #include <stdarg.h> struct sockaddr; class EventLoop; struct Partition; -class Client; + +class Client final : private FullyBufferedSocket, TimeoutMonitor { +public: + Partition &partition; + struct playlist &playlist; + struct player_control &player_control; + + unsigned permission; + + /** the uid of the client process, or -1 if unknown */ + int uid; + + CommandListBuilder cmd_list; + + unsigned int num; /* client number */ + + /** is this client waiting for an "idle" response? */ + bool idle_waiting; + + /** idle flags pending on this client, to be sent as soon as + the client enters "idle" */ + unsigned idle_flags; + + /** idle flags that the client wants to receive */ + unsigned idle_subscriptions; + + /** + * A list of channel names this client is subscribed to. + */ + std::set<std::string> subscriptions; + + /** + * The number of subscriptions in #subscriptions. Used to + * limit the number of subscriptions. + */ + unsigned num_subscriptions; + + /** + * A list of messages this client has received. + */ + std::list<ClientMessage> messages; + + Client(EventLoop &loop, Partition &partition, + int fd, int uid, int num); + + bool IsConnected() const { + return FullyBufferedSocket::IsDefined(); + } + + gcc_pure + bool IsSubscribed(const char *channel_name) const { + return subscriptions.find(channel_name) != subscriptions.end(); + } + + gcc_pure + bool IsExpired() const { + return !FullyBufferedSocket::IsDefined(); + } + + void Close(); + void SetExpired(); + + using FullyBufferedSocket::Write; + + /** + * Send "idle" response to this client. + */ + void IdleNotify(); + void IdleAdd(unsigned flags); + bool IdleWait(unsigned flags); + +private: + /* virtual methods from class BufferedSocket */ + virtual InputResult OnSocketInput(void *data, size_t length) override; + virtual void OnSocketError(Error &&error) override; + virtual void OnSocketClosed() override; + + /* virtual methods from class TimeoutMonitor */ + virtual void OnTimeout() override; +}; void client_manager_init(void); diff --git a/src/ClientInternal.hxx b/src/ClientInternal.hxx index 4e252a24c..4df58eee6 100644 --- a/src/ClientInternal.hxx +++ b/src/ClientInternal.hxx @@ -22,103 +22,13 @@ #include "check.h" #include "Client.hxx" -#include "ClientMessage.hxx" -#include "CommandListBuilder.hxx" -#include "event/FullyBufferedSocket.hxx" -#include "event/TimeoutMonitor.hxx" #include "command.h" -#include <set> -#include <string> -#include <list> - enum { CLIENT_MAX_SUBSCRIPTIONS = 16, CLIENT_MAX_MESSAGES = 64, }; -struct Partition; - -class Client final : private FullyBufferedSocket, TimeoutMonitor { -public: - Partition &partition; - struct playlist &playlist; - struct player_control &player_control; - - unsigned permission; - - /** the uid of the client process, or -1 if unknown */ - int uid; - - CommandListBuilder cmd_list; - - unsigned int num; /* client number */ - - /** is this client waiting for an "idle" response? */ - bool idle_waiting; - - /** idle flags pending on this client, to be sent as soon as - the client enters "idle" */ - unsigned idle_flags; - - /** idle flags that the client wants to receive */ - unsigned idle_subscriptions; - - /** - * A list of channel names this client is subscribed to. - */ - std::set<std::string> subscriptions; - - /** - * The number of subscriptions in #subscriptions. Used to - * limit the number of subscriptions. - */ - unsigned num_subscriptions; - - /** - * A list of messages this client has received. - */ - std::list<ClientMessage> messages; - - Client(EventLoop &loop, Partition &partition, - int fd, int uid, int num); - - bool IsConnected() const { - return FullyBufferedSocket::IsDefined(); - } - - gcc_pure - bool IsSubscribed(const char *channel_name) const { - return subscriptions.find(channel_name) != subscriptions.end(); - } - - gcc_pure - bool IsExpired() const { - return !FullyBufferedSocket::IsDefined(); - } - - void Close(); - void SetExpired(); - - using FullyBufferedSocket::Write; - - /** - * Send "idle" response to this client. - */ - void IdleNotify(); - void IdleAdd(unsigned flags); - bool IdleWait(unsigned flags); - -private: - /* virtual methods from class BufferedSocket */ - virtual InputResult OnSocketInput(void *data, size_t length) override; - virtual void OnSocketError(Error &&error) override; - virtual void OnSocketClosed() override; - - /* virtual methods from class TimeoutMonitor */ - virtual void OnTimeout() override; -}; - extern const class Domain client_domain; extern int client_timeout; diff --git a/src/DatabaseCommands.cxx b/src/DatabaseCommands.cxx index fe6746a74..652b2b6d5 100644 --- a/src/DatabaseCommands.cxx +++ b/src/DatabaseCommands.cxx @@ -24,7 +24,7 @@ #include "DatabasePrint.hxx" #include "DatabaseSelection.hxx" #include "CommandError.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "tag/Tag.hxx" #include "util/UriUtil.hxx" #include "util/Error.hxx" diff --git a/src/MessageCommands.cxx b/src/MessageCommands.cxx index 21067f1a9..c2b272713 100644 --- a/src/MessageCommands.cxx +++ b/src/MessageCommands.cxx @@ -20,7 +20,7 @@ #include "config.h" #include "MessageCommands.hxx" #include "ClientSubscribe.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "ClientList.hxx" #include "Instance.hxx" #include "Main.hxx" diff --git a/src/OtherCommands.cxx b/src/OtherCommands.cxx index 2250c37b4..038a6448b 100644 --- a/src/OtherCommands.cxx +++ b/src/OtherCommands.cxx @@ -40,7 +40,7 @@ #include "Permission.hxx" #include "PlaylistFile.hxx" #include "ClientFile.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "Idle.hxx" #ifdef ENABLE_SQLITE diff --git a/src/PlayerCommands.cxx b/src/PlayerCommands.cxx index 8b9a96ca5..26503ee52 100644 --- a/src/PlayerCommands.cxx +++ b/src/PlayerCommands.cxx @@ -23,7 +23,7 @@ #include "Playlist.hxx" #include "PlaylistPrint.hxx" #include "UpdateGlue.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "Volume.hxx" #include "OutputAll.hxx" #include "Partition.hxx" diff --git a/src/PlaylistCommands.cxx b/src/PlaylistCommands.cxx index 57be3453a..4eaaf8145 100644 --- a/src/PlaylistCommands.cxx +++ b/src/PlaylistCommands.cxx @@ -27,7 +27,7 @@ #include "PlaylistVector.hxx" #include "PlaylistQueue.hxx" #include "TimePrint.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "protocol/ArgParser.hxx" #include "protocol/Result.hxx" #include "ls.hxx" diff --git a/src/QueueCommands.cxx b/src/QueueCommands.cxx index 9ab6244bb..0e2a3604c 100644 --- a/src/QueueCommands.cxx +++ b/src/QueueCommands.cxx @@ -26,7 +26,7 @@ #include "Playlist.hxx" #include "PlaylistPrint.hxx" #include "ClientFile.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "Partition.hxx" #include "protocol/ArgParser.hxx" #include "protocol/Result.hxx" diff --git a/src/Stats.cxx b/src/Stats.cxx index 4c488e85e..88f76928f 100644 --- a/src/Stats.cxx +++ b/src/Stats.cxx @@ -20,7 +20,7 @@ #include "config.h" #include "Stats.hxx" #include "PlayerControl.hxx" -#include "ClientInternal.hxx" +#include "Client.hxx" #include "DatabaseSelection.hxx" #include "DatabaseGlue.hxx" #include "DatabasePlugin.hxx" |