summaryrefslogtreecommitdiff
path: root/include/cddb/cddb_cmd.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cddb/cddb_cmd.h')
-rw-r--r--include/cddb/cddb_cmd.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/include/cddb/cddb_cmd.h b/include/cddb/cddb_cmd.h
new file mode 100644
index 00000000..c5a01fef
--- /dev/null
+++ b/include/cddb/cddb_cmd.h
@@ -0,0 +1,185 @@
+/*
+ $Id: cddb_cmd.h,v 1.17 2006/10/15 08:58:51 airborne Exp $
+
+ Copyright (C) 2003, 2004, 2005 Kris Verbeeck <airborne@advalvas.be>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef CDDB_CMD_H
+#define CDDB_CMD_H 1
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+
+/* --- accessing data on the CDDB server --- */
+
+
+/**
+ * Retrieve a disc record from the CDDB server. This function
+ * requires that the category and disc ID of the provided disc
+ * structure are valid.
+ *
+ * If nothing goes wrong, the function will return 1 and the error
+ * code will be reset to:
+ * - #CDDB_ERR_OK:
+ * If everything went as planned.
+ *
+ * If there is a problem with reading data from the CDDB server one of
+ * the following error codes will be set:
+ * - #CDDB_ERR_DATA_MISSING:
+ * If some required data is missing from the given disc
+ * structure to execute this command.
+ * - #CDDB_ERR_DISC_NOT_FOUND:
+ * If the requested disc is not known by the CDDB server.
+ * - #CDDB_ERR_SERVER_ERROR:
+ * If the server encountered an error while trying to process your
+ * request.
+ * - #CDDB_ERR_UNKNOWN:
+ * If the server specified an unknown response code. Please
+ * report this as a libcddb bug.
+ *
+ * When there are problems with the connection to the CDDB server one
+ * of the following error codes will be set:
+ * - #CDDB_ERR_UNKNOWN_HOST_NAME:
+ * If there was an error when resolving the host name of the CDDB
+ * server.
+ * - #CDDB_ERR_CONNECT:
+ * If a connection to the CDDB server could not be established.
+ * This can be due to incorrect data about the location of the
+ * server (host name, port).
+ * - #CDDB_ERR_NOT_CONNECTED:
+ * If something when wrong in the process and you got
+ * disconnected. Retrying might succeed (but no guarantees).
+ * - #CDDB_ERR_PERMISSION_DENIED:
+ * If the server is up and running but denied the connection.
+ * This can occur when the server is too highly loaded or the
+ * handshake information (user name, ...) is considered to be
+ * invalid.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ * @return 1 on succes, 0 on failure
+ */
+int cddb_read(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Query the CDDB database for a list of possible disc matches. This
+ * function requires that the disc ID and disc length of the provided
+ * disc structure are valid. The disc should also contain a number of
+ * tracks and for each track its frame offset on the CD should be
+ * valid.
+ *
+ * If there are multiple matches then only the first one will be
+ * returned by this function. For other matches you will have to use
+ * the #cddb_query_next function.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ *
+ * @return The number of matches found or -1 on error.
+ */
+int cddb_query(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Returns the next match in a CDDB query result set. This function
+ * should be used in conjunction with #cddb_query.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ */
+int cddb_query_next(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Perform a text search in the CDDB database. Instead of actually
+ * needing information about a real disc like in #cddb_query this
+ * function accept a string that is used for searching the database.
+ *
+ * If there are multiple matches then only the first one will be
+ * returned by this function. For other matches you will have to use
+ * the #cddb_search_next function.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ * @param str The search string
+ *
+ * @return The number of matches found or -1 on error.
+ */
+int cddb_search(cddb_conn_t *c, cddb_disc_t *disc, const char *str);
+
+/**
+ * Returns the next match in a CDDB search result set. This function
+ * should be used in conjunction with #cddb_search.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ */
+int cddb_search_next(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Perform a text search in the CDDB database. It uses the album
+ * command implemented on the freedb2.org servers. Either the album
+ * title or artist's name should be filled in, in the disc structure.
+ *
+ * If there are multiple matches then only the first one will be
+ * returned by this function. For other matches you will have to use
+ * the #cddb_album_next function.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ *
+ * @return The number of matches found or -1 on error.
+ */
+int cddb_album(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Returns the next match in a CDDB album result set. This function
+ * should be used in conjunction with #cddb_album.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ */
+int cddb_album_next(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Submit a new or updated disc to the CDDB database. This function
+ * requires that the disc ID, length, category, artist and title of
+ * the provided disc structure are valid. The disc should also
+ * contain a number of tracks and for each track its frame offset on
+ * the CD and title should be valid.
+ *
+ * @param c The CDDB connection structure.
+ * @param disc A non-null CDDB disc structure.
+ */
+int cddb_write(cddb_conn_t *c, cddb_disc_t *disc);
+
+/**
+ * Query the currently configured server for a list of mirrors.
+ * Accessing the list of mirror sites is done with the iterator
+ * functions #cddb_first_site and #cddb_next_site.
+ *
+ * @param c The CDDB connection structure.
+ */
+int cddb_sites(cddb_conn_t *c);
+
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* CDDB_CMD_H */