aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-10-19 19:35:37 +0200
committerMax Kellermann <max@duempel.org>2013-10-19 19:35:37 +0200
commit32645b80c4c6792140e312b5b9fe9f96b48c6ec7 (patch)
treea3e229576fc0b5572f7f05d930222a3dd2b436b1
parentff626ac76357940b2f0ac5cb243a68ac13df0f8a (diff)
downloadmpd-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.
-rw-r--r--src/Client.hxx90
-rw-r--r--src/ClientInternal.hxx90
-rw-r--r--src/DatabaseCommands.cxx2
-rw-r--r--src/MessageCommands.cxx2
-rw-r--r--src/OtherCommands.cxx2
-rw-r--r--src/PlayerCommands.cxx2
-rw-r--r--src/PlaylistCommands.cxx2
-rw-r--r--src/QueueCommands.cxx2
-rw-r--r--src/Stats.cxx2
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"