File: partition.h

package info (click to toggle)
libmpdclient 2.22-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 896 kB
  • sloc: ansic: 9,923; makefile: 9
file content (185 lines) | stat: -rw-r--r-- 4,220 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
// SPDX-License-Identifier: BSD-2-Clause
// Copyright The Music Player Daemon Project

/*! \file
 * \brief MPD client library
 *
 * Do not include this header directly.  Use mpd/client.h instead.
 */

#ifndef MPD_PARTITION_H
#define MPD_PARTITION_H

#include "recv.h"
#include "compiler.h"

#include <stdbool.h>

struct mpd_pair;
/**
 * \struct mpd_partition
 */
struct mpd_partition;
struct mpd_connection;

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Creates a new partition object from the pair received from MPD server.
 *
 * @param pair a #mpd_pair received from MPD (name must be "partition")
 * @return the new #mpd_partition object, or NULL on error (out of
 * memory, or pair name is not "partition")
 *
 * @since libmpdclient 2.17
 */
mpd_malloc
struct mpd_partition *
mpd_partition_new(const struct mpd_pair *pair);

/**
 * Frees a #mpd_partition object.
 *
 * @since libmpdclient 2.17
 */
void
mpd_partition_free(struct mpd_partition *partition);

/**
 * Returns the partition name.
 *
 * @since libmpdclient 2.17
 */
mpd_pure
const char *
mpd_partition_get_name(const struct mpd_partition *partition);

/**
 * Creates a new partition.
 * A partition is one frontend of a multi-player MPD process: it has separate
 * queue, player and outputs. A client is assigned to one partition at a time.
 *
 * @param connection the connection to MPD
 * @param partition the partition name
 * @return true on success
 *
 * @since libmpdclient 2.17
 */
bool
mpd_send_newpartition(struct mpd_connection *connection, const char *partition);

/**
 * Shortcut for mpd_send_newpartition() and mpd_response_finish().
 *
 * @param connection the connection to MPD
 * @param partition the partition name
 * @return true on success
 *
 * @since libmpdclient 2.17
 */
bool
mpd_run_newpartition(struct mpd_connection *connection, const char *partition);

/**
 * Delete a partition.
 *
 * @param connection the connection to MPD
 * @param partition the partition name
 * @return true on success
 *
 * @since libmpdclient 2.18, MPD 0.22
 */
bool
mpd_send_delete_partition(struct mpd_connection *connection,
			  const char *partition);

/**
 * Shortcut for mpd_send_delete_partition() and mpd_response_finish().
 *
 * @param connection the connection to MPD
 * @param partition the partition name
 * @return true on success
 *
 * @since libmpdclient 2.18, MPD 0.22
 */
bool
mpd_run_delete_partition(struct mpd_connection *connection,
			 const char *partition);

/**
 * Switch the client to a different partition.
 *
 * @param connection the connection to MPD
 * @param partition the partition name
 * @return true on success
 *
 * @since libmpdclient 2.17
 */
bool
mpd_send_switch_partition(struct mpd_connection *connection,
			  const char *partition);

/**
 * Shortcut for mpd_send_switch_partition() and mpd_response_finish().
 *
 * @param connection the connection to MPD
 * @param partition the partition name
 * @return true on success
 *
 * @since libmpdclient 2.17
 */
bool
mpd_run_switch_partition(struct mpd_connection *connection,
			 const char *partition);

/**
 * Sends the "listpartitions" command: request the list of partitions.
 * Call mpd_recv_partition() repeatedly to read the response.
 *
 * @param connection the connection to MPD
 * @return true on success
 *
 * @since libmpdclient 2.17
 */
bool
mpd_send_listpartitions(struct mpd_connection *connection);

/**
 * Receives the next partition name.  Call this in a loop after
 * mpd_send_listpartitions().
 *
 * Free the return value with mpd_return_pair().
 *
 * @param connection a #mpd_connection object
 * @returns a "partition" pair, or NULL on error or if the end of the
 * response is reached
 *
 * @since libmpdclient 2.17
 */
mpd_malloc
static inline struct mpd_pair *
mpd_recv_partition_pair(struct mpd_connection *connection)
{
	return mpd_recv_pair_named(connection, "partition");
}

/**
 * Reads the next #mpd_partition from the MPD response.  Free the
 * return value with mpd_partition_free().
 *
 * @return a mpd_partition object on success, NULL on error or
 * end-of-response
 *
 * @since libmpdclient 2.18
 */
mpd_malloc
struct mpd_partition *
mpd_recv_partition(struct mpd_connection *connection);

#ifdef __cplusplus
}
#endif

#endif