Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
cab84af7
Commit
cab84af7
authored
Jan 16, 2013
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Client: move "idle" functions into the class
parent
74500eac
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
36 additions
and
49 deletions
+36
-49
ClientIdle.cxx
src/ClientIdle.cxx
+26
-32
ClientIdle.hxx
src/ClientIdle.hxx
+0
-13
ClientInternal.hxx
src/ClientInternal.hxx
+7
-0
ClientSubscribe.cxx
src/ClientSubscribe.cxx
+1
-1
OtherCommands.cxx
src/OtherCommands.cxx
+2
-3
No files found.
src/ClientIdle.cxx
View file @
cab84af7
...
...
@@ -25,43 +25,36 @@
#include <assert.h>
/**
* Send "idle" response to this client.
*/
static
void
client_idle_notify
(
Client
*
client
)
void
Client
::
IdleNotify
()
{
unsigned
flags
,
i
;
const
char
*
const
*
idle_names
;
assert
(
client
->
idle_waiting
);
assert
(
client
->
idle_flags
!=
0
);
assert
(
idle_waiting
);
assert
(
idle_flags
!=
0
);
flags
=
client
->
idle_flags
;
client
->
idle_flags
=
0
;
client
->
idle_waiting
=
false
;
unsigned
flags
=
idle_flags
;
idle_flags
=
0
;
idle_waiting
=
false
;
idle_names
=
idle_get_names
();
for
(
i
=
0
;
idle_names
[
i
];
++
i
)
{
if
(
flags
&
(
1
<<
i
)
&
client
->
idle_subscriptions
)
client_printf
(
client
,
"changed: %s
\n
"
,
const
char
*
const
*
idle_names
=
idle_get_names
();
for
(
unsigned
i
=
0
;
idle_names
[
i
];
++
i
)
{
if
(
flags
&
(
1
<<
i
)
&
idle_subscriptions
)
client_printf
(
this
,
"changed: %s
\n
"
,
idle_names
[
i
]);
}
client_puts
(
client
,
"OK
\n
"
);
g_timer_start
(
client
->
last_activity
);
client_puts
(
this
,
"OK
\n
"
);
g_timer_start
(
last_activity
);
}
void
client_idle_add
(
Client
*
client
,
unsigned
flags
)
Client
::
IdleAdd
(
unsigned
flags
)
{
if
(
client
->
IsExpired
())
if
(
IsExpired
())
return
;
client
->
idle_flags
|=
flags
;
if
(
client
->
idle_waiting
&&
(
client
->
idle_flags
&
client
->
idle_subscriptions
))
client_idle_notify
(
client
);
idle_flags
|=
flags
;
if
(
idle_waiting
&&
(
idle_flags
&
idle_subscriptions
))
IdleNotify
();
}
static
void
...
...
@@ -69,7 +62,7 @@ client_idle_callback(Client *client, gpointer user_data)
{
unsigned
flags
=
GPOINTER_TO_UINT
(
user_data
);
client
_idle_add
(
client
,
flags
);
client
->
IdleAdd
(
flags
);
}
void
client_manager_idle_add
(
unsigned
flags
)
...
...
@@ -79,15 +72,16 @@ void client_manager_idle_add(unsigned flags)
client_list_foreach
(
client_idle_callback
,
GUINT_TO_POINTER
(
flags
));
}
bool
client_idle_wait
(
Client
*
client
,
unsigned
flags
)
bool
Client
::
IdleWait
(
unsigned
flags
)
{
assert
(
!
client
->
idle_waiting
);
assert
(
!
idle_waiting
);
client
->
idle_waiting
=
true
;
client
->
idle_subscriptions
=
flags
;
idle_waiting
=
true
;
idle_subscriptions
=
flags
;
if
(
client
->
idle_flags
&
client
->
idle_subscriptions
)
{
client_idle_notify
(
client
);
if
(
idle_flags
&
idle_subscriptions
)
{
IdleNotify
(
);
return
true
;
}
else
return
false
;
...
...
src/ClientIdle.hxx
View file @
cab84af7
...
...
@@ -20,11 +20,6 @@
#ifndef MPD_CLIENT_IDLE_HXX
#define MPD_CLIENT_IDLE_HXX
class
Client
;
void
client_idle_add
(
Client
*
client
,
unsigned
flags
);
/**
* Adds the specified idle flags to all clients and immediately sends
* notifications to all waiting clients.
...
...
@@ -32,12 +27,4 @@ client_idle_add(Client *client, unsigned flags);
void
client_manager_idle_add
(
unsigned
flags
);
/**
* Checks whether the client has pending idle flags. If yes, they are
* sent immediately and "true" is returned". If no, it puts the
* client into waiting mode and returns false.
*/
bool
client_idle_wait
(
Client
*
client
,
unsigned
flags
);
#endif
src/ClientInternal.hxx
View file @
cab84af7
...
...
@@ -112,6 +112,13 @@ public:
using
BufferedSocket
::
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
(
const
void
*
data
,
...
...
src/ClientSubscribe.cxx
View file @
cab84af7
...
...
@@ -86,7 +86,7 @@ client_push_message(Client *client, const ClientMessage &msg)
return
false
;
if
(
client
->
messages
.
empty
())
client
_idle_add
(
client
,
IDLE_MESSAGE
);
client
->
IdleAdd
(
IDLE_MESSAGE
);
client
->
messages
.
push_back
(
msg
);
return
true
;
...
...
src/OtherCommands.cxx
View file @
cab84af7
...
...
@@ -41,9 +41,8 @@ extern "C" {
#include "Permission.hxx"
#include "PlaylistFile.hxx"
#include "ClientIdle.hxx"
#include "ClientFile.hxx"
#include "Client.hxx"
#include "Client
Internal
.hxx"
#include "Idle.hxx"
#ifdef ENABLE_SQLITE
...
...
@@ -302,7 +301,7 @@ handle_idle(Client *client,
flags
=
~
0
;
/* enable "idle" mode on this client */
client
_idle_wait
(
client
,
flags
);
client
->
IdleWait
(
flags
);
return
COMMAND_RETURN_IDLE
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment