diff src/daap/xmms2-daap/cc_handlers.h @ 1407:776dd8fc2b38

DAAP plugin (work in progress)
author Cristi Magherusan <majeru@atheme-project.org>
date Sun, 05 Aug 2007 00:26:21 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/daap/xmms2-daap/cc_handlers.h	Sun Aug 05 00:26:21 2007 +0300
@@ -0,0 +1,174 @@
+/** @file cc_handlers.h
+ *
+ *  Copyright (C) 2006-2007 XMMS2 Team
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ */
+
+#ifndef CC_HANDLERS_H
+#define CC_HANDLERS_H
+
+#include <glib.h>
+
+#define CC_TO_INT(a,b,c,d) ((gint) ((a << 24) | \
+                                    (b << 16) | \
+                                    (c <<  8) | \
+                                    (d      )    ))
+
+#define DMAP_CC_SZ              (sizeof (gchar) * 4)
+#define DMAP_BYTE_SZ            sizeof (gint8)
+#define DMAP_SHORT_SZ           sizeof (gint16)
+#define DMAP_INT_SZ             sizeof (gint32)
+#define DMAP_LONG_SZ            sizeof (gint64)
+#define DMAP_VERSION_SZ         sizeof (gint16)
+
+#define DMAP_UNKNOWN_CC -1
+
+typedef enum {
+	DMAP_CTYPE_BYTE          = 1,
+	/* unconfirmed */
+	DMAP_CTYPE_UNSIGNEDBYTE  = 2,
+
+	DMAP_CTYPE_SHORT         = 3,
+	/* unconfirmed */
+	DMAP_CTYPE_UNSIGNEDSHORT = 4,
+
+	DMAP_CTYPE_INT           = 5,
+	/* unconfirmed */
+	DMAP_CTYPE_UNSIGNEDINT   = 6,
+
+	DMAP_CTYPE_LONG          = 7,
+	/* unconfirmed */
+	DMAP_CTYPE_UNSIGNEDLONG  = 8,
+	
+	DMAP_CTYPE_STRING        = 9,
+	DMAP_CTYPE_DATE          = 10,
+	DMAP_CTYPE_VERSION       = 11,
+	DMAP_CTYPE_LIST          = 12,
+} content_type;
+
+typedef struct {
+	/* items common to more than one type */
+	gint8 updt_type;
+
+	gint32 n_rec_matches;
+	gint32 n_ret_items;
+	gint32 status;
+
+	GSList *record_list;
+
+	/* msrv - server info */
+	gint8 has_indexing;
+	gint8 has_extensions;
+	gint8 has_update;
+	gint8 has_autologout;
+	gint8 has_queries;
+	gint8 has_resolve;
+	gint8 has_browsing;
+	gint8 has_persistent;
+	gint8 auth_type;
+	gint8 auth_method;
+	gint8 login_required;
+
+	gint16 daap_proto_major;
+	gint16 daap_proto_minor;
+	gint16 dmap_proto_major;
+	gint16 dmap_proto_minor;
+
+	gint32 timeout_interval;
+	gint32 sharing_version;
+	gint32 db_count;
+
+	gchar *server_name;
+
+	/* mccr - content codes */
+	/* none */
+
+	/* mlog - login */
+	guint32 session_id;
+
+	/* mupd - update */
+	guint32 revision_id;
+
+	/* avdb - db list */
+	/* none */
+
+	/* apso - items in playlist */
+	/* none */
+
+	/* aply - playlist list */
+	/* none */
+
+} cc_data_t;
+
+/* mlit -- used in a item listing */
+typedef struct {
+	gint8 item_kind;
+	gint8 song_data_kind;
+	gint8 song_compilation;
+	gint8 is_smart_pl;
+	gint8 is_base_pl;
+	
+	gint16 song_bitrate;
+	gint16 song_year;
+	gint16 song_track_no;
+	gint16 song_track_count;
+	gint16 song_disc_count;
+	gint16 song_disc_no;
+	gint16 song_bpm;
+
+	gint32 dbid;
+	gint32 sample_rate;
+	gint32 song_size;
+	gint32 song_start_time;
+	gint32 song_stop_time;
+	gint32 song_total_time;
+	gint32 song_date;
+	gint32 song_date_mod;
+	gint32 container_id;
+
+	gint32 deleted_id;
+
+	guint64 persistent_id;
+	
+	gchar *iname;
+	gchar *song_data_url;
+	gchar *song_data_album;
+	gchar *song_data_artist;
+	gchar *song_comment;
+	gchar *song_description;
+	gchar *song_genre;
+	gchar *song_format;
+	gchar *song_composer;
+	gchar *song_grouping;
+	
+	/* db list specific */
+	gint32 db_n_items;
+	gint32 db_n_playlist;
+
+} cc_item_record_t;
+
+cc_data_t *
+cc_data_new ();
+
+void
+cc_data_free (cc_data_t *fields);
+
+void
+cc_item_record_free (cc_item_record_t *item);
+
+GSList *
+cc_record_list_deep_copy (GSList *record_list);
+
+cc_data_t *
+cc_handler (gchar *data, gint data_len);
+
+#endif