89
86
* Returns: pointer to object class structure.
91
88
#define DMAP_SHARE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \
92
TYPE_DMAP_SHARE, DMAPShareClass))
94
#define DMAP_SHARE_CHUNK_SIZE 16384
89
DMAP_TYPE_SHARE, DMAPShareClass))
95
90
#define DMAP_STATUS_OK 200
97
91
typedef struct DMAPSharePrivate DMAPSharePrivate;
101
96
DMAPSharePrivate *priv;
104
99
typedef struct _DMAPMetaDataMap DMAPMetaDataMap;
107
103
GObjectClass parent;
109
105
/* Pure virtual methods: */
110
guint (*get_desired_port) (DMAPShare *share);
111
const char * (*get_type_of_service) (DMAPShare *share);
112
void (*message_add_standard_headers) (DMAPShare *share,
114
struct DMAPMetaDataMap * (*get_meta_data_map) (DMAPShare *share);
115
void (*add_entry_to_mlcl) (gpointer id,
118
void (*databases_browse_xxx) (DMAPShare *share,
123
SoupClientContext *context);
124
void (*databases_items_xxx) (DMAPShare *share,
129
SoupClientContext *context);
106
guint (*get_desired_port) (DMAPShare * share);
107
const char *(*get_type_of_service) (DMAPShare * share);
108
void (*message_add_standard_headers) (DMAPShare * share,
110
struct DMAPMetaDataMap *(*get_meta_data_map) (DMAPShare * share);
111
void (*add_entry_to_mlcl) (gpointer id,
112
DMAPRecord * record, gpointer mb);
113
void (*databases_browse_xxx) (DMAPShare * share,
118
SoupClientContext * context);
119
void (*databases_items_xxx) (DMAPShare * share,
124
SoupClientContext * context);
131
126
/* Pure virtual methods: libsoup callbacks */
132
void (*server_info) (DMAPShare *share, SoupServer *server,
133
SoupMessage *message, const char *path,
134
GHashTable *query, SoupClientContext *ctx);
136
void (*content_codes) (DMAPShare *share, SoupServer *server,
137
SoupMessage *message, const char *path,
138
GHashTable *query, SoupClientContext *ctx);
140
void (*login) (DMAPShare *share, SoupServer *server,
141
SoupMessage *message, const char *path,
142
GHashTable *query, SoupClientContext *ctx);
144
void (*logout) (DMAPShare *share, SoupServer *server,
145
SoupMessage *message, const char *path,
146
GHashTable *query, SoupClientContext *ctx);
148
void (*update) (DMAPShare *share, SoupServer *server,
149
SoupMessage *message, const char *path,
150
GHashTable *query, SoupClientContext *ctx);
152
void (*ctrl_int) (DMAPShare *share, SoupServer *server,
153
SoupMessage *message, const char *path,
154
GHashTable *query, SoupClientContext *ctx);
127
void (*server_info) (DMAPShare * share, SoupServer * server,
128
SoupMessage * message, const char *path,
129
GHashTable * query, SoupClientContext * ctx);
131
void (*content_codes) (DMAPShare * share, SoupServer * server,
132
SoupMessage * message, const char *path,
133
GHashTable * query, SoupClientContext * ctx);
135
void (*login) (DMAPShare * share, SoupServer * server,
136
SoupMessage * message, const char *path,
137
GHashTable * query, SoupClientContext * ctx);
139
void (*logout) (DMAPShare * share, SoupServer * server,
140
SoupMessage * message, const char *path,
141
GHashTable * query, SoupClientContext * ctx);
143
void (*update) (DMAPShare * share, SoupServer * server,
144
SoupMessage * message, const char *path,
145
GHashTable * query, SoupClientContext * ctx);
147
void (*ctrl_int) (DMAPShare * share, SoupServer * server,
148
SoupMessage * message, const char *path,
149
GHashTable * query, SoupClientContext * ctx);
156
151
/* Virtual methods: MDNS callbacks */
157
void (*published) (DMAPShare *share,
158
DmapMdnsPublisher *publisher,
152
void (*published) (DMAPShare * share,
153
DMAPMdnsPublisher * publisher, const char *name);
161
void (*name_collision)(DMAPShare *share,
162
DmapMdnsPublisher *publisher,
155
void (*name_collision) (DMAPShare * share,
156
DMAPMdnsPublisher * publisher,
165
159
/* Virtual methods: */
166
void (*databases) (DMAPShare *share,
168
SoupMessage *message,
171
SoupClientContext *context);
160
void (*databases) (DMAPShare * share,
162
SoupMessage * message,
164
GHashTable * query, SoupClientContext * context);
172
165
} DMAPShareClass;
174
struct DMAPMetaDataMap {
167
struct DMAPMetaDataMap
179
GType dmap_share_get_type (void);
173
/* FIXME: this is passed as user_data to various functions;
174
* need to rename. Also, get rid of initializations elsewhere: { NULL, 0, NULL };
175
* instead define a function to do this.
184
GType dmap_share_get_type (void);
181
186
/* Non-virtual methods */
182
guint _dmap_share_get_auth_method (DMAPShare *share);
184
guint _dmap_share_get_revision_number (DMAPShare *share);
186
gboolean _dmap_share_get_revision_number_from_query (GHashTable *query,
189
gboolean _dmap_share_session_id_validate (DMAPShare *share,
190
SoupClientContext *context,
191
SoupMessage *msg, GHashTable *query,
194
guint32 _dmap_share_session_id_create (DMAPShare *share,
195
SoupClientContext *ctx);
197
void _dmap_share_session_id_remove (DMAPShare *share,
198
SoupClientContext *ctx,
187
guint _dmap_share_get_auth_method (DMAPShare * share);
189
guint _dmap_share_get_revision_number (DMAPShare * share);
191
gboolean _dmap_share_get_revision_number_from_query (GHashTable * query,
194
gboolean _dmap_share_session_id_validate (DMAPShare * share,
195
SoupClientContext * context,
197
GHashTable * query, guint32 * id);
199
guint32 _dmap_share_session_id_create (DMAPShare * share,
200
SoupClientContext * ctx);
202
void _dmap_share_session_id_remove (DMAPShare * share,
203
SoupClientContext * ctx, guint32 id);
201
205
gboolean _dmap_share_client_requested (bitwise bits, gint field);
203
207
gboolean _dmap_share_uri_is_local (const char *text_uri);
205
gboolean _dmap_share_soup_auth_filter (SoupAuthDomain *auth_domain,
206
SoupMessage *msg, gpointer user_data);
208
gboolean _dmap_share_server_start (DMAPShare *share);
210
gboolean _dmap_share_publish_start (DMAPShare *share);
212
void _dmap_share_message_set_from_dmap_structure (DMAPShare *share,
213
SoupMessage *message,
216
bitwise _dmap_share_parse_meta (GHashTable *query,
209
gboolean _dmap_share_soup_auth_filter (SoupAuthDomain * auth_domain,
210
SoupMessage * msg, gpointer user_data);
212
gboolean _dmap_share_server_start (DMAPShare * share);
214
gboolean _dmap_share_publish_start (DMAPShare * share);
216
void _dmap_share_message_set_from_dmap_structure (DMAPShare * share,
217
SoupMessage * message,
220
bitwise _dmap_share_parse_meta (GHashTable * query,
217
221
struct DMAPMetaDataMap *mdm);
219
bitwise _dmap_share_parse_meta_str (const char *attrs,
223
bitwise _dmap_share_parse_meta_str (const char *attrs,
220
224
struct DMAPMetaDataMap *mdm);
222
226
void _dmap_share_add_playlist_to_mlcl (gpointer id,
223
DMAPContainerRecord *record,
227
DMAPContainerRecord * record,
226
GSList * _dmap_share_build_filter (gchar *filterstr);
230
GSList *_dmap_share_build_filter (gchar * filterstr);
228
void dmap_share_free_filter (GSList *filter);
232
void dmap_share_free_filter (GSList * filter);
230
234
/* Virtual methods (libsoup callbacks with default implementation): */
231
void _dmap_share_content_codes (DMAPShare *share,
233
SoupMessage *message,
236
SoupClientContext *context);
238
void _dmap_share_login (DMAPShare *share,
240
SoupMessage *message,
243
SoupClientContext *context);
245
void _dmap_share_logout (DMAPShare *share,
247
SoupMessage *message,
250
SoupClientContext *context);
252
void _dmap_share_update (DMAPShare *share,
254
SoupMessage *message,
257
SoupClientContext *context);
235
void _dmap_share_content_codes (DMAPShare * share,
237
SoupMessage * message,
240
SoupClientContext * context);
242
void _dmap_share_login (DMAPShare * share,
244
SoupMessage * message,
246
GHashTable * query, SoupClientContext * context);
248
void _dmap_share_logout (DMAPShare * share,
250
SoupMessage * message,
252
GHashTable * query, SoupClientContext * context);
254
void _dmap_share_update (DMAPShare * share,
256
SoupMessage * message,
258
GHashTable * query, SoupClientContext * context);
260
_dmap_share_databases (DMAPShare *share,
262
SoupMessage *message,
265
SoupClientContext *context);
261
_dmap_share_databases (DMAPShare * share,
263
SoupMessage * message,
265
GHashTable * query, SoupClientContext * context);
267
void _dmap_share_ctrl_int (DMAPShare *share,
269
SoupMessage *message,
272
SoupClientContext *context);
267
void _dmap_share_ctrl_int (DMAPShare * share,
269
SoupMessage * message,
271
GHashTable * query, SoupClientContext * context);
274
273
/* Virtual methods: MDNS callbacks */
275
void _dmap_share_published (DMAPShare *share,
276
DmapMdnsPublisher *publisher,
279
void _dmap_share_name_collision(DMAPShare *share,
280
DmapMdnsPublisher *publisher,
274
void _dmap_share_published (DMAPShare * share,
275
DMAPMdnsPublisher * publisher, const char *name);
277
void _dmap_share_name_collision (DMAPShare * share,
278
DMAPMdnsPublisher * publisher,
284
281
#endif /* __DMAP_SHARE_H */