summaryrefslogtreecommitdiff
path: root/include/cddb/cddb_net.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cddb/cddb_net.h')
-rw-r--r--include/cddb/cddb_net.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/include/cddb/cddb_net.h b/include/cddb/cddb_net.h
new file mode 100644
index 00000000..60c5464b
--- /dev/null
+++ b/include/cddb/cddb_net.h
@@ -0,0 +1,133 @@
+/*
+ $Id: cddb_net.h,v 1.11 2005/03/11 21:29:29 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_NET_H
+#define CDDB_NET_H 1
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+
+#include <stdarg.h>
+
+#if defined( UNDER_CE )
+# include <winsock.h>
+#elif defined( WIN32 )
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#endif
+
+#include <cddb/cddb_ni.h>
+#include <cddb/cddb_config.h>
+
+#if defined(CDDB_NEED_SYS_SOCKET_H) || defined(HAVE_SYS_SOCKET_H)
+#include <sys/socket.h>
+#endif
+
+
+/* --- socket-based work-alikes --- */
+
+
+/**
+ * This function performs the same task as the standard fgets except
+ * for the fact that it might time-out if the socket read takes too
+ * long. In case of a time out, errno will be set to ETIMEDOUT.
+ *
+ * @param s The string buffer.
+ * @param size Size of the buffer.
+ * @param c The CDDB connection structure.
+ * @return The string that was read or NULL on error or EOF when no
+ * characters were read.
+ */
+char *sock_fgets(char *s, int size, cddb_conn_t *c);
+
+/**
+ * This function performs the same task as the standard fwrite except
+ * for the fact that it might time-out if the socket write takes too
+ * long. In case of a time out, errno will be set to ETIMEDOUT.
+ *
+ * @param ptr Pointer to data record.
+ * @param size Size of data record.
+ * @param nmemb The number of data records to write.
+ * @param c The CDDB connection structure.
+ * @return The number of records written.
+ */
+size_t sock_fwrite(const void *ptr, size_t size, size_t nmemb, cddb_conn_t *c);
+
+/**
+ * This function performs the same task as the standard fprintf except
+ * for the fact that it might time-out if the socket write takes too
+ * long. In case of a time out, errno will be set to ETIMEDOUT.
+ *
+ * @param c The CDDB connection structure.
+ * @param format Pointer to data record.
+ * @return The number of characters written.
+ */
+int sock_fprintf(cddb_conn_t *c, const char *format, ...);
+
+/**
+ * This function performs the same task as the standard vfprintf
+ * except for the fact that it might time-out if the socket write
+ * takes too long. In case of a time out, errno will be set to
+ * ETIMEDOUT.
+ *
+ * @param c The CDDB connection structure.
+ * @param format Pointer to data record.
+ * @param ap Variable argument list.
+ * @return The number of characters written.
+ */
+int sock_vfprintf(cddb_conn_t *c, const char *format, va_list ap);
+
+/* --- time-out enabled work-alikes --- */
+
+/**
+ * This function performs the same task as the standard gethostbyname
+ * except for the fact that it might time-out if the query takes too
+ * long. In case of a time out, errno will be set to ETIMEDOUT.
+ *
+ * @param hostname The hostname that needs to be resolved.
+ * @param timeout Number of seconds after which to time out.
+ * @return The host entity for given host name or NULL if not found or
+ * timed out (errno will be set).
+ */
+struct hostent *timeout_gethostbyname(const char *hostname, int timeout);
+
+/**
+ * This function performs the same task as the standard connect except
+ * for the fact that it might time-out if the connect takes too long.
+ * In case of a time out, errno will be set to ETIMEDOUT.
+ *
+ * @param sockfd The socket.
+ * @param addr The address to connect to.
+ * @param len The size of the address structure.
+ * @param timeout Number of seconds after which to time out.
+ * @return Zero on success, -1 on failure (errno will be set).
+ */
+int timeout_connect(int sockfd, const struct sockaddr *addr, size_t len,
+ int timeout);
+
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* CDDB_NET_H */