aboutsummaryrefslogtreecommitdiffstats
path: root/src/Client.hxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-10-19 19:44:45 +0200
committerMax Kellermann <max@duempel.org>2013-10-19 19:44:45 +0200
commit75ba961e97606030d1c976696fb8623fbb0e27df (patch)
treec46a6e844a94c931445f4c225bb0b9ccd27cb623 /src/Client.hxx
parentc2d5ce0ca213e2d25df17e080b07a3d91d330972 (diff)
downloadmpd-75ba961e97606030d1c976696fb8623fbb0e27df.tar.gz
mpd-75ba961e97606030d1c976696fb8623fbb0e27df.tar.xz
mpd-75ba961e97606030d1c976696fb8623fbb0e27df.zip
Client: move message functions into the class
Diffstat (limited to 'src/Client.hxx')
-rw-r--r--src/Client.hxx29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/Client.hxx b/src/Client.hxx
index 13a4a14e7..cbb0cbafc 100644
--- a/src/Client.hxx
+++ b/src/Client.hxx
@@ -87,11 +87,6 @@ public:
}
gcc_pure
- bool IsSubscribed(const char *channel_name) const {
- return subscriptions.find(channel_name) != subscriptions.end();
- }
-
- gcc_pure
bool IsExpired() const {
return !FullyBufferedSocket::IsDefined();
}
@@ -132,6 +127,30 @@ public:
void IdleAdd(unsigned flags);
bool IdleWait(unsigned flags);
+ enum class SubscribeResult {
+ /** success */
+ OK,
+
+ /** invalid channel name */
+ INVALID,
+
+ /** already subscribed to this channel */
+ ALREADY,
+
+ /** too many subscriptions */
+ FULL,
+ };
+
+ gcc_pure
+ bool IsSubscribed(const char *channel_name) const {
+ return subscriptions.find(channel_name) != subscriptions.end();
+ }
+
+ SubscribeResult Subscribe(const char *channel);
+ bool Unsubscribe(const char *channel);
+ void UnsubscribeAll();
+ bool PushMessage(const ClientMessage &msg);
+
private:
/* virtual methods from class BufferedSocket */
virtual InputResult OnSocketInput(void *data, size_t length) override;