2003-09-23 01:09:32 -07:00
|
|
|
#ifndef _ECORE_CON_H
|
|
|
|
#define _ECORE_CON_H
|
|
|
|
|
2009-01-31 10:33:39 -08:00
|
|
|
#include <time.h>
|
|
|
|
#include <libgen.h>
|
2010-02-24 09:52:54 -08:00
|
|
|
#ifdef _WIN32
|
|
|
|
# include <ws2tcpip.h>
|
|
|
|
#else
|
2009-01-31 10:33:39 -08:00
|
|
|
# include <netdb.h>
|
|
|
|
#endif
|
2010-01-15 13:47:27 -08:00
|
|
|
#include <Eina.h>
|
2009-01-31 10:33:39 -08:00
|
|
|
|
2004-11-24 21:18:31 -08:00
|
|
|
#ifdef EAPI
|
2009-01-31 10:33:39 -08:00
|
|
|
# undef EAPI
|
2004-11-24 21:18:31 -08:00
|
|
|
#endif
|
2009-01-31 10:33:39 -08:00
|
|
|
|
2011-05-14 10:52:30 -07:00
|
|
|
#ifdef _WIN32
|
|
|
|
# ifdef EFL_ECORE_CON_BUILD
|
|
|
|
# ifdef DLL_EXPORT
|
|
|
|
# define EAPI __declspec(dllexport)
|
|
|
|
# else
|
|
|
|
# define EAPI
|
|
|
|
# endif
|
2004-11-24 21:18:31 -08:00
|
|
|
# else
|
|
|
|
# define EAPI __declspec(dllimport)
|
|
|
|
# endif
|
|
|
|
#else
|
2005-12-27 09:17:31 -08:00
|
|
|
# ifdef __GNUC__
|
|
|
|
# if __GNUC__ >= 4
|
|
|
|
# define EAPI __attribute__ ((visibility("default")))
|
|
|
|
# else
|
|
|
|
# define EAPI
|
|
|
|
# endif
|
2004-11-24 21:18:31 -08:00
|
|
|
# else
|
|
|
|
# define EAPI
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
2004-04-29 20:10:17 -07:00
|
|
|
/**
|
2010-09-20 23:49:07 -07:00
|
|
|
* @defgroup Ecore_Con_Group Ecore_Con - Connection functions
|
2004-09-22 21:58:16 -07:00
|
|
|
*
|
|
|
|
* The Ecore Connection Library ( @c Ecore_Con ) provides simple mechanisms
|
|
|
|
* for communications between programs using reliable sockets. It saves
|
2010-09-08 04:23:42 -07:00
|
|
|
* the programmer from having to worry about file descriptors and waiting
|
2004-09-22 21:58:16 -07:00
|
|
|
* for incoming connections.
|
|
|
|
*
|
|
|
|
* There are two main objects in the @c Ecore_Con library: the @c
|
|
|
|
* Ecore_Con_Server and the @c Ecore_Con_Client.
|
|
|
|
*
|
2008-10-09 05:30:19 -07:00
|
|
|
* The @c Ecore_Con_Server represents a server that can be connected to.
|
|
|
|
* It is used regardless of whether the program is acting as a server or
|
2007-11-30 00:10:37 -08:00
|
|
|
* client itself.
|
2004-09-22 21:58:16 -07:00
|
|
|
*
|
2010-07-26 18:00:24 -07:00
|
|
|
* To create a listening server call @c ecore_con_server_add(), optionally using
|
|
|
|
* an ECORE_CON_USE_* encryption type OR'ed with the type for encryption.
|
2004-09-22 21:58:16 -07:00
|
|
|
*
|
2005-02-17 09:15:22 -08:00
|
|
|
* To connect to a server, call @c ecore_con_server_connect(). Data can
|
2004-09-22 21:58:16 -07:00
|
|
|
* then be sent to the server using the @c ecore_con_server_send().
|
2010-09-20 23:49:07 -07:00
|
|
|
*
|
2004-09-22 21:58:16 -07:00
|
|
|
* Functions are described in the following groupings:
|
|
|
|
* @li @ref Ecore_Con_Lib_Group
|
|
|
|
* @li @ref Ecore_Con_Server_Group
|
|
|
|
* @li @ref Ecore_Con_Client_Group
|
2008-02-11 15:24:11 -08:00
|
|
|
* @li @ref Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*
|
|
|
|
* Events are described in @ref Ecore_Con_Events_Group.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2010-09-20 23:49:07 -07:00
|
|
|
* @defgroup Ecore_Con_Events_Group Events
|
2010-09-22 01:03:38 -07:00
|
|
|
*
|
|
|
|
* @li ECORE_CON_CLIENT_ADD: Whenever a client connection is made to an
|
|
|
|
* @c Ecore_Con_Server, an event of this type is emitted, allowing the
|
|
|
|
* retrieval of the client's ip with @ref ecore_con_client_ip_get and
|
2010-07-28 18:28:18 -07:00
|
|
|
* associating data with the client using ecore_con_client_data_set.
|
2010-09-20 13:33:50 -07:00
|
|
|
* @li ECORE_CON_EVENT_CLIENT_DEL: Whenever a client connection to an
|
2010-07-28 18:28:18 -07:00
|
|
|
* @c Ecore_Con_Server, an event of this type is emitted. The contents of
|
|
|
|
* the data with this event are variable, but if the client object in the data
|
|
|
|
* is non-null, it must be freed with @ref ecore_con_client_del.
|
2010-09-20 13:33:50 -07:00
|
|
|
* @li ECORE_CON_EVENT_SERVER_ADD: Whenever a server object is created
|
2010-07-28 18:28:18 -07:00
|
|
|
* with @ref ecore_con_server_connect, an event of this type is emitted,
|
|
|
|
* allowing for data to be serialized and sent to the server using
|
|
|
|
* @ref ecore_con_server_send. At this point, the http handshake has
|
|
|
|
* occurred.
|
2010-09-20 13:33:50 -07:00
|
|
|
* @li ECORE_CON_EVENT_SERVER_DEL: Whenever a server object is destroyed,
|
2010-07-28 18:28:18 -07:00
|
|
|
* usually by the server connection being refused or dropped, an event of this
|
|
|
|
* type is emitted. The contents of the data with this event are variable,
|
|
|
|
* but if the server object in the data is non-null, it must be freed
|
|
|
|
* with @ref ecore_con_server_del.
|
2010-09-20 13:33:50 -07:00
|
|
|
* @li ECORE_CON_EVENT_CLIENT_DATA: Whenever a client connects to your server
|
2010-07-28 18:28:18 -07:00
|
|
|
* object and sends data, an event of this type is emitted. The data will contain both
|
|
|
|
* the size and contents of the message sent by the client. It should be noted that
|
|
|
|
* data within this object is transient, so it must be duplicated in order to be
|
|
|
|
* retained. This event will continue to occur until the client has stopped sending its
|
|
|
|
* message, so a good option for storing this data is an Eina_Strbuf. Once the message has
|
2010-09-20 13:33:50 -07:00
|
|
|
* been received in full, the client object must be freed with ecore_con_client_free.
|
|
|
|
* @li ECORE_CON_EVENT_SERVER_DATA: Whenever your server object connects to its destination
|
2010-07-28 18:28:18 -07:00
|
|
|
* and receives data, an event of this type is emitted. The data will contain both
|
|
|
|
* the size and contents of the message sent by the server. It should be noted that
|
|
|
|
* data within this object is transient, so it must be duplicated in order to be
|
|
|
|
* retained. This event will continue to occur until the server has stopped sending its
|
|
|
|
* message, so a good option for storing this data is an Eina_Strbuf. Once the message has
|
2010-09-20 13:33:50 -07:00
|
|
|
* been received in full, the server object must be freed with ecore_con_server_free.
|
2010-07-28 18:28:18 -07:00
|
|
|
*
|
2004-04-29 20:10:17 -07:00
|
|
|
*/
|
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
2010-09-20 23:49:07 -07:00
|
|
|
#define ECORE_CON_USE_SSL ECORE_CON_USE_SSL2
|
|
|
|
#define ECORE_CON_REMOTE_SYSTEM ECORE_CON_REMOTE_TCP
|
|
|
|
|
2008-10-09 05:30:19 -07:00
|
|
|
|
2010-09-20 23:49:07 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Server
|
2010-07-28 18:28:18 -07:00
|
|
|
* A connection handle to a server
|
2010-09-20 23:49:07 -07:00
|
|
|
* @ingroup Ecore_Con_Server_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
|
|
|
typedef struct _Ecore_Con_Server Ecore_Con_Server;
|
2008-10-09 05:30:19 -07:00
|
|
|
|
2010-07-26 18:00:24 -07:00
|
|
|
/**
|
2010-09-20 23:49:07 -07:00
|
|
|
* @typedef Ecore_Con_Client
|
|
|
|
* A connection handle to a client
|
|
|
|
* @ingroup Ecore_Con_Client_Group
|
2010-07-26 18:00:24 -07:00
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
typedef struct _Ecore_Con_Client Ecore_Con_Client;
|
2008-10-09 05:30:19 -07:00
|
|
|
|
2010-07-26 18:00:24 -07:00
|
|
|
/**
|
2010-09-20 23:49:07 -07:00
|
|
|
* @typedef Ecore_Con_Url
|
|
|
|
* A handle to an http upload/download object
|
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-26 18:00:24 -07:00
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
typedef struct _Ecore_Con_Url Ecore_Con_Url;
|
2007-09-26 09:01:04 -07:00
|
|
|
|
2010-07-26 23:30:27 -07:00
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @addtogroup Ecore_Con_Events_Group Events
|
|
|
|
* @{
|
2010-07-29 05:29:19 -07:00
|
|
|
*/
|
|
|
|
|
2010-10-11 23:34:31 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Client_Add
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Client_Add Ecore_Con_Event_Client_Add;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
2011-06-15 11:58:34 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Client_Upgrade
|
|
|
|
* Used as the @p data param for the corresponding event
|
2011-06-15 14:57:47 -07:00
|
|
|
* @since 1.1
|
2011-06-15 11:58:34 -07:00
|
|
|
*/
|
|
|
|
typedef struct _Ecore_Con_Event_Client_Upgrade Ecore_Con_Event_Client_Upgrade;
|
|
|
|
|
2010-10-11 23:34:31 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Client_Del
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Client_Del Ecore_Con_Event_Client_Del;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
2011-02-10 00:49:23 -08:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Client_Error
|
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
|
|
|
typedef struct _Ecore_Con_Event_Client_Error Ecore_Con_Event_Client_Error;
|
|
|
|
|
2010-10-11 23:34:31 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Server_Add
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Server_Add Ecore_Con_Event_Server_Add;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
2011-06-15 11:58:34 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Server_Upgrade
|
|
|
|
* Used as the @p data param for the corresponding event
|
2011-06-15 14:57:47 -07:00
|
|
|
* @since 1.1
|
2011-06-15 11:58:34 -07:00
|
|
|
*/
|
|
|
|
typedef struct _Ecore_Con_Event_Server_Upgrade Ecore_Con_Event_Server_Upgrade;
|
|
|
|
|
2010-10-11 23:34:31 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Server_Del
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Server_Del Ecore_Con_Event_Server_Del;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
2011-02-10 00:49:23 -08:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Server_Error
|
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
|
|
|
typedef struct _Ecore_Con_Event_Server_Error Ecore_Con_Event_Server_Error;
|
|
|
|
|
2010-10-11 23:34:31 -07:00
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Client_Data
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Client_Data Ecore_Con_Event_Client_Data;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Server_Data
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Server_Data Ecore_Con_Event_Server_Data;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Url_Data
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
2011-07-08 11:06:04 -07:00
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Url_Data Ecore_Con_Event_Url_Data;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Url_Complete
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
2011-07-08 11:06:04 -07:00
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Url_Complete Ecore_Con_Event_Url_Complete;
|
2010-10-11 23:34:31 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Event_Url_Progress
|
2010-07-28 18:28:18 -07:00
|
|
|
* Used as the @p data param for the corresponding event
|
2011-07-08 11:06:04 -07:00
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
typedef struct _Ecore_Con_Event_Url_Progress Ecore_Con_Event_Url_Progress;
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Client_Add
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_ADD event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Client_Add
|
|
|
|
{
|
2010-07-28 18:28:18 -07:00
|
|
|
Ecore_Con_Client *client; /** the client that connected */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2011-06-15 11:58:34 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Client_Upgrade
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_UPGRADE event
|
2011-06-15 14:57:47 -07:00
|
|
|
* @since 1.1
|
2011-06-15 11:58:34 -07:00
|
|
|
*/
|
|
|
|
struct _Ecore_Con_Event_Client_Upgrade
|
|
|
|
{
|
|
|
|
Ecore_Con_Client *client; /** the client that completed handshake */
|
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Client_Del
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_DEL event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Client_Del
|
|
|
|
{
|
2010-07-28 18:28:18 -07:00
|
|
|
Ecore_Con_Client *client; /** the client that was lost */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2011-02-10 00:49:23 -08:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Client_Error
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_ERROR event
|
|
|
|
*/
|
|
|
|
struct _Ecore_Con_Event_Client_Error
|
|
|
|
{
|
|
|
|
Ecore_Con_Client *client; /** the client for which an error occurred */
|
|
|
|
char *error; /**< the error string describing what happened */
|
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Server_Add
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_ADD event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Server_Add
|
|
|
|
{
|
2010-07-28 18:28:18 -07:00
|
|
|
Ecore_Con_Server *server; /** the server that was connected to */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2011-06-15 11:58:34 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Server_Upgrade
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_UPGRADE event
|
2011-06-15 14:57:47 -07:00
|
|
|
* @since 1.1
|
2011-06-15 11:58:34 -07:00
|
|
|
*/
|
|
|
|
struct _Ecore_Con_Event_Server_Upgrade
|
|
|
|
{
|
|
|
|
Ecore_Con_Server *server; /** the server that was connected to */
|
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Server_Del
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_DEL event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Server_Del
|
|
|
|
{
|
2010-07-28 18:28:18 -07:00
|
|
|
Ecore_Con_Server *server; /** the client that was lost */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2011-02-10 00:49:23 -08:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Server_Error
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_ERROR event
|
|
|
|
*/
|
|
|
|
struct _Ecore_Con_Event_Server_Error
|
|
|
|
{
|
|
|
|
Ecore_Con_Server *server; /** the server for which an error occurred */
|
|
|
|
char *error; /**< the error string describing what happened */
|
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Client_Data
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_DATA event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Client_Data
|
|
|
|
{
|
2010-10-11 23:34:31 -07:00
|
|
|
Ecore_Con_Client *client; /**< the client that connected */
|
|
|
|
void *data; /**< the data that the client sent */
|
|
|
|
int size; /**< the length of the data sent */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Server_Data
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_DATA event
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Server_Data
|
|
|
|
{
|
2010-10-11 23:34:31 -07:00
|
|
|
Ecore_Con_Server *server; /**< the server that was connected to */
|
|
|
|
void *data; /**< the data that the server sent */
|
|
|
|
int size; /**< the length of the data sent */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Url_Data
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_URL_DATA event
|
2011-07-08 11:06:04 -07:00
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Url_Data
|
|
|
|
{
|
2011-07-08 11:06:04 -07:00
|
|
|
Ecore_Con_Url *url_con; /**< a pointer to the connection object */
|
|
|
|
int size; /**< the size of the current received data (in bytes) */
|
|
|
|
unsigned char data[1]; /**< the data received on this event */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Url_Complete
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_URL_COMPLETE event
|
2011-07-08 11:06:04 -07:00
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Url_Complete
|
|
|
|
{
|
2011-07-08 11:06:04 -07:00
|
|
|
Ecore_Con_Url *url_con; /**< a pointer to the connection object */
|
|
|
|
int status; /**< HTTP status code of the operation (200, 404, 401, etc.) */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @struct _Ecore_Con_Event_Url_Progress
|
|
|
|
* Used as the @p data param for the @ref ECORE_CON_EVENT_URL_PROGRESS event
|
2011-07-08 11:06:04 -07:00
|
|
|
* @ingroup Ecore_Con_Url_Group
|
2010-07-28 18:28:18 -07:00
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
struct _Ecore_Con_Event_Url_Progress
|
|
|
|
{
|
2011-07-08 11:06:04 -07:00
|
|
|
Ecore_Con_Url *url_con; /**< a pointer to the connection object */
|
2010-07-26 23:30:27 -07:00
|
|
|
struct
|
|
|
|
{
|
2011-07-08 11:06:04 -07:00
|
|
|
double total; /**< total size of the downloading data (in bytes) */
|
|
|
|
double now; /**< current size of the downloading data (in bytes) */
|
|
|
|
} down; /**< download info */
|
2010-07-26 23:30:27 -07:00
|
|
|
struct
|
|
|
|
{
|
2011-07-08 11:06:04 -07:00
|
|
|
double total; /**< total size of the uploading data (in bytes) */
|
|
|
|
double now; /**< current size of the uploading data (in bytes) */
|
|
|
|
} up; /**< upload info */
|
2010-07-26 23:30:27 -07:00
|
|
|
};
|
|
|
|
|
2010-07-30 13:33:32 -07:00
|
|
|
/** A client has connected to the server */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_CLIENT_ADD;
|
|
|
|
/** A client has disconnected from the server */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_CLIENT_DEL;
|
2011-02-10 00:49:23 -08:00
|
|
|
/** A client experienced an error */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_CLIENT_ERROR;
|
2011-06-15 14:57:47 -07:00
|
|
|
/** A client connection has been upgraded to SSL
|
|
|
|
* @since 1.1
|
|
|
|
*/
|
2011-06-15 11:58:34 -07:00
|
|
|
EAPI extern int ECORE_CON_EVENT_CLIENT_UPGRADE;
|
2010-07-30 13:33:32 -07:00
|
|
|
/** A server was created */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_SERVER_ADD;
|
2010-09-22 01:03:38 -07:00
|
|
|
/** A server connection was lost */
|
2010-07-30 13:33:32 -07:00
|
|
|
EAPI extern int ECORE_CON_EVENT_SERVER_DEL;
|
2011-02-10 00:49:23 -08:00
|
|
|
/** A server experienced an error */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_SERVER_ERROR;
|
2011-06-15 14:57:47 -07:00
|
|
|
/** A server connection has been upgraded to SSL
|
|
|
|
* @since 1.1
|
|
|
|
*/
|
2011-06-15 11:58:34 -07:00
|
|
|
EAPI extern int ECORE_CON_EVENT_SERVER_UPGRADE;
|
2010-07-30 13:33:32 -07:00
|
|
|
/** A client connected to the server has sent data */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_CLIENT_DATA;
|
|
|
|
/** A server connection object has data */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_SERVER_DATA;
|
|
|
|
/** A URL object has data */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_URL_DATA;
|
|
|
|
/** A URL object has completed its transfer to and from the server and can be reused */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_URL_COMPLETE;
|
|
|
|
/** A URL object has made progress in its transfer */
|
|
|
|
EAPI extern int ECORE_CON_EVENT_URL_PROGRESS;
|
2010-09-20 23:49:07 -07:00
|
|
|
|
2010-07-28 18:28:18 -07:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup Ecore_Con_Lib_Group Ecore Connection Library Functions
|
|
|
|
*
|
2011-07-05 06:09:57 -07:00
|
|
|
* Utility functions that set up and shut down the Ecore Connection
|
|
|
|
* library.
|
|
|
|
*
|
|
|
|
* There's also ecore_con_lookup() that can be used to make simple asynchronous
|
|
|
|
* DNS lookups.
|
|
|
|
*
|
|
|
|
* A simple example of how to use these functions:
|
|
|
|
* @li @ref ecore_con_lookup_example_c
|
|
|
|
*
|
2010-09-20 23:49:07 -07:00
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Dns_Cb
|
|
|
|
* A callback type for use with @ref ecore_con_lookup.
|
|
|
|
*/
|
|
|
|
typedef void (*Ecore_Con_Dns_Cb)(const char *canonname,
|
|
|
|
const char *ip,
|
|
|
|
struct sockaddr *addr,
|
|
|
|
int addrlen,
|
|
|
|
void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Type
|
|
|
|
* @enum _Ecore_Con_Type
|
|
|
|
* Types for an ecore_con client/server object. A correct way to set this type is
|
|
|
|
* with an ECORE_CON_$TYPE, optionally OR'ed with an ECORE_CON_$USE if encryption is desired,
|
|
|
|
* and LOAD_CERT if the previously loaded certificate should be used.
|
|
|
|
* @code
|
|
|
|
* ECORE_CON_REMOTE_TCP | ECORE_CON_USE_TLS | ECORE_CON_LOAD_CERT
|
|
|
|
* @endcode
|
|
|
|
*/
|
|
|
|
typedef enum _Ecore_Con_Type
|
|
|
|
{
|
|
|
|
/** Socket in ~/.ecore */
|
|
|
|
ECORE_CON_LOCAL_USER = 0,
|
|
|
|
/** Socket in /tmp */
|
|
|
|
ECORE_CON_LOCAL_SYSTEM = 1,
|
|
|
|
/** Abstract socket */
|
|
|
|
ECORE_CON_LOCAL_ABSTRACT = 2,
|
|
|
|
/** Remote server using TCP */
|
|
|
|
ECORE_CON_REMOTE_TCP = 3,
|
|
|
|
/** Remote multicast server */
|
|
|
|
ECORE_CON_REMOTE_MCAST = 4,
|
|
|
|
/** Remote server using UDP */
|
|
|
|
ECORE_CON_REMOTE_UDP = 5,
|
|
|
|
/** Remote broadcast using UDP */
|
|
|
|
ECORE_CON_REMOTE_BROADCAST = 6,
|
|
|
|
ECORE_CON_REMOTE_NODELAY = 7,
|
|
|
|
/** Use SSL2: UNSUPPORTED. **/
|
|
|
|
ECORE_CON_USE_SSL2 = (1 << 4),
|
|
|
|
/** Use SSL3 */
|
|
|
|
ECORE_CON_USE_SSL3 = (1 << 5),
|
|
|
|
/** Use TLS */
|
|
|
|
ECORE_CON_USE_TLS = (1 << 6),
|
2010-09-21 18:26:23 -07:00
|
|
|
/** Use both TLS and SSL3 */
|
|
|
|
ECORE_CON_USE_MIXED = ECORE_CON_USE_SSL3 | ECORE_CON_USE_TLS,
|
2010-09-27 20:16:08 -07:00
|
|
|
/** Attempt to use the loaded certificate */
|
2010-09-20 23:49:07 -07:00
|
|
|
ECORE_CON_LOAD_CERT = (1 << 7)
|
|
|
|
} Ecore_Con_Type;
|
|
|
|
|
2011-07-05 06:09:57 -07:00
|
|
|
/**
|
|
|
|
* Initialises the Ecore_Con library.
|
|
|
|
* @return Number of times the library has been initialised without being
|
|
|
|
* shut down.
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_init(void);
|
2011-07-05 06:09:57 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Shuts down the Ecore_Con library.
|
|
|
|
* @return Number of times the library has been initialised without being
|
|
|
|
* shut down.
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_shutdown(void);
|
2010-09-20 23:49:07 -07:00
|
|
|
|
2011-07-05 06:09:57 -07:00
|
|
|
/**
|
|
|
|
* Do an asynchronous DNS lookup.
|
|
|
|
*
|
|
|
|
* @param name IP address or server name to translate.
|
|
|
|
* @param done_cb Callback to notify when done.
|
|
|
|
* @param data User data to be given to done_cb.
|
|
|
|
* @return EINA_TRUE if the request did not fail to be set up, EINA_FALSE if it
|
|
|
|
* failed.
|
|
|
|
*
|
|
|
|
* This function performs a DNS lookup on the hostname specified by @p name,
|
|
|
|
* then calls @p done_cb with the result and the @p data given as parameter.
|
|
|
|
* The result will be given to the @p done_cb as follows:
|
|
|
|
* @li @c canonname - the canonical name of the address
|
|
|
|
* @li @c ip - the resolved ip address
|
|
|
|
* @li @c addr - a pointer to the socket address
|
|
|
|
* @li @c addrlen - the length of the socket address, in bytes
|
|
|
|
* @li @c data - the data pointer given as parameter to ecore_con_lookup()
|
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
EAPI Eina_Bool ecore_con_lookup(const char *name,
|
|
|
|
Ecore_Con_Dns_Cb done_cb,
|
|
|
|
const void *data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
2010-09-27 20:16:08 -07:00
|
|
|
/**
|
|
|
|
* @defgroup Ecore_Con_SSL_Group Ecore Connection SSL Functions
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
EAPI int ecore_con_ssl_available_get(void);
|
|
|
|
EAPI Eina_Bool ecore_con_ssl_server_cert_add(Ecore_Con_Server *svr, const char *cert);
|
|
|
|
EAPI Eina_Bool ecore_con_ssl_server_privkey_add(Ecore_Con_Server *svr, const char *key_file);
|
|
|
|
EAPI Eina_Bool ecore_con_ssl_server_crl_add(Ecore_Con_Server *svr, const char *crl_file);
|
|
|
|
EAPI Eina_Bool ecore_con_ssl_server_cafile_add(Ecore_Con_Server *svr, const char *ca_file);
|
|
|
|
EAPI void ecore_con_ssl_server_verify(Ecore_Con_Server *svr);
|
2011-06-25 01:39:07 -07:00
|
|
|
EAPI void ecore_con_ssl_server_verify_basic(Ecore_Con_Server *svr);
|
2011-06-15 11:58:34 -07:00
|
|
|
EAPI Eina_Bool ecore_con_ssl_server_upgrade(Ecore_Con_Server *svr, Ecore_Con_Type compl_type);
|
|
|
|
EAPI Eina_Bool ecore_con_ssl_client_upgrade(Ecore_Con_Client *cl, Ecore_Con_Type compl_type);
|
2010-09-27 20:16:08 -07:00
|
|
|
|
2010-10-11 23:34:31 -07:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
2010-09-27 20:16:08 -07:00
|
|
|
|
2010-09-20 23:49:07 -07:00
|
|
|
/**
|
|
|
|
* @defgroup Ecore_Con_Server_Group Ecore Connection Server Functions
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
|
|
|
|
EAPI Ecore_Con_Server *ecore_con_server_add(Ecore_Con_Type type,
|
|
|
|
const char *name, int port,
|
|
|
|
const void *data);
|
|
|
|
|
|
|
|
EAPI Ecore_Con_Server *ecore_con_server_connect(Ecore_Con_Type type,
|
|
|
|
const char *name, int port,
|
|
|
|
const void *data);
|
|
|
|
EAPI void * ecore_con_server_del(Ecore_Con_Server *svr);
|
|
|
|
EAPI void * ecore_con_server_data_get(Ecore_Con_Server *svr);
|
2010-07-28 18:28:18 -07:00
|
|
|
EAPI void * ecore_con_server_data_set(Ecore_Con_Server *svr,
|
|
|
|
void *data);
|
2010-09-20 18:48:46 -07:00
|
|
|
EAPI Eina_Bool ecore_con_server_connected_get(Ecore_Con_Server *svr);
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI Eina_List * ecore_con_server_clients_get(Ecore_Con_Server *svr);
|
2010-08-26 22:16:00 -07:00
|
|
|
EAPI const char * ecore_con_server_name_get(Ecore_Con_Server *svr);
|
|
|
|
EAPI int ecore_con_server_port_get(Ecore_Con_Server *svr);
|
2010-09-21 21:48:09 -07:00
|
|
|
EAPI double ecore_con_server_uptime_get(Ecore_Con_Server *svr);
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_server_send(Ecore_Con_Server *svr,
|
|
|
|
const void *data,
|
|
|
|
int size);
|
2010-09-20 23:49:07 -07:00
|
|
|
EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server *svr,
|
|
|
|
int client_limit,
|
|
|
|
char reject_excess_clients);
|
2010-07-28 15:32:39 -07:00
|
|
|
EAPI const char * ecore_con_server_ip_get(Ecore_Con_Server *svr);
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_server_flush(Ecore_Con_Server *svr);
|
2010-09-21 21:48:09 -07:00
|
|
|
EAPI void ecore_con_server_timeout_set(Ecore_Con_Server *svr, double timeout);
|
|
|
|
EAPI double ecore_con_server_timeout_get(Ecore_Con_Server *svr);
|
2010-09-20 23:49:07 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup Ecore_Con_Client_Group Ecore Connection Client Functions
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_client_send(Ecore_Con_Client *cl,
|
|
|
|
const void *data,
|
|
|
|
int size);
|
|
|
|
EAPI Ecore_Con_Server *ecore_con_client_server_get(Ecore_Con_Client *cl);
|
|
|
|
EAPI void * ecore_con_client_del(Ecore_Con_Client *cl);
|
|
|
|
EAPI void ecore_con_client_data_set(Ecore_Con_Client *cl,
|
|
|
|
const void *data);
|
|
|
|
EAPI void * ecore_con_client_data_get(Ecore_Con_Client *cl);
|
2010-07-28 15:32:39 -07:00
|
|
|
EAPI const char * ecore_con_client_ip_get(Ecore_Con_Client *cl);
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_client_flush(Ecore_Con_Client *cl);
|
2010-09-21 21:48:09 -07:00
|
|
|
EAPI double ecore_con_client_uptime_get(Ecore_Con_Client *cl);
|
|
|
|
EAPI double ecore_con_client_timeout_get(Ecore_Con_Client *cl);
|
|
|
|
EAPI void ecore_con_client_timeout_set(Ecore_Con_Client *cl, double timeout);
|
2010-11-05 17:17:04 -07:00
|
|
|
EAPI Eina_Bool ecore_con_client_connected_get(Ecore_Con_Client *cl);
|
2011-02-10 23:38:27 -08:00
|
|
|
EAPI int ecore_con_client_port_get(Ecore_Con_Client *cl);
|
2010-10-11 23:34:31 -07:00
|
|
|
|
2010-09-20 23:49:07 -07:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
|
2010-09-20 23:49:07 -07:00
|
|
|
/**
|
|
|
|
* @defgroup Ecore_Con_Url_Group Ecore URL Connection Functions
|
|
|
|
*
|
2011-07-08 11:06:04 -07:00
|
|
|
* Utility functions that set up, use and shut down the Ecore URL
|
|
|
|
* Connection library.
|
|
|
|
*
|
|
|
|
* @todo write detailed description of Ecore_Con_Url
|
|
|
|
*
|
2010-09-20 23:49:07 -07:00
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @typedef Ecore_Con_Url_Time
|
|
|
|
* @enum _Ecore_Con_Url_Time
|
2010-10-18 09:39:12 -07:00
|
|
|
* The type of condition to use when making an HTTP request dependent on time,
|
|
|
|
* so that headers such as "If-Modified-Since" are used.
|
2010-09-20 23:49:07 -07:00
|
|
|
*/
|
|
|
|
typedef enum _Ecore_Con_Url_Time
|
|
|
|
{
|
2010-10-18 09:39:12 -07:00
|
|
|
/**
|
|
|
|
* Do not place time restrictions on the HTTP requests.
|
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
ECORE_CON_URL_TIME_NONE = 0,
|
2010-10-18 09:39:12 -07:00
|
|
|
/**
|
|
|
|
* Add the "If-Modified-Since" HTTP header, so that the request is performed
|
|
|
|
* by the server only if the target has been modified since the time value
|
|
|
|
* passed to it in the request.
|
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
ECORE_CON_URL_TIME_IFMODSINCE,
|
2010-10-18 09:39:12 -07:00
|
|
|
/**
|
|
|
|
* Add the "If-Unmodified-Since" HTTP header, so that the request is
|
|
|
|
* performed by the server only if the target has NOT been modified since
|
|
|
|
* the time value passed to it in the request.
|
|
|
|
*/
|
|
|
|
ECORE_CON_URL_TIME_IFUNMODSINCE
|
2010-09-20 23:49:07 -07:00
|
|
|
} Ecore_Con_Url_Time;
|
2010-07-26 23:30:27 -07:00
|
|
|
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Initialises the Ecore_Con_Url library.
|
|
|
|
* @return Number of times the library has been initialised without being
|
|
|
|
* shut down.
|
|
|
|
*
|
|
|
|
* @note This function doesn't call ecore_con_init(). You still need to call it
|
|
|
|
* explicitly before calling this one.
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_url_init(void);
|
2011-07-08 11:06:04 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Shuts down the Ecore_Con_Url library.
|
|
|
|
* @return Number of calls that still uses Ecore_Con_Url
|
|
|
|
*
|
|
|
|
* @note This function doesn't call ecore_con_shutdown(). You still need to call
|
|
|
|
* it explicitly after calling this one.
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_url_shutdown(void);
|
2011-04-01 09:37:55 -07:00
|
|
|
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Enable or disable HTTP 1.1 pipelining.
|
|
|
|
* @param enable EINA_TRUE will turn it on, EINA_FALSE will disable it.
|
|
|
|
*/
|
2011-04-01 09:37:55 -07:00
|
|
|
EAPI void ecore_con_url_pipeline_set(Eina_Bool enable);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Is HTTP 1.1 pipelining enable ?
|
|
|
|
* @return EINA_TRUE if it is enable.
|
|
|
|
*/
|
2011-04-01 09:37:55 -07:00
|
|
|
EAPI Eina_Bool ecore_con_url_pipeline_get(void);
|
|
|
|
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Creates and initializes a new Ecore_Con_Url connection object.
|
|
|
|
*
|
|
|
|
* Creates and initializes a new Ecore_Con_Url connection object that can be
|
|
|
|
* uesd for sending requests.
|
|
|
|
*
|
|
|
|
* @param url URL that will receive requests. Can be changed using
|
|
|
|
* ecore_con_url_url_set.
|
|
|
|
*
|
|
|
|
* @return NULL on error, a new Ecore_Con_Url on success.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_custom_new()
|
|
|
|
* @see ecore_con_url_url_set()
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI Ecore_Con_Url * ecore_con_url_new(const char *url);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Creates a custom connection object.
|
|
|
|
*
|
|
|
|
* Creates and initializes a new Ecore_Con_Url for a custom request (e.g. HEAD,
|
|
|
|
* SUBSCRIBE and other obscure HTTP requests). This object should be used like
|
|
|
|
* one created with ecore_con_url_new().
|
|
|
|
*
|
|
|
|
* @param url URL that will receive requests
|
|
|
|
* @param custom_request Custom request (e.g. GET, POST, HEAD, PUT, etc)
|
|
|
|
*
|
|
|
|
* @return NULL on error, a new Ecore_Con_Url on success.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_new()
|
|
|
|
* @see ecore_con_url_url_set()
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI Ecore_Con_Url * ecore_con_url_custom_new(const char *url,
|
|
|
|
const char *custom_request);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Destroys a Ecore_Con_Url connection object.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to free.
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_new()
|
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
EAPI void ecore_con_url_free(Ecore_Con_Url *url_con);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Sets the URL to send the request to.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object through which the request will be sent.
|
|
|
|
* @param url URL that will receive the request
|
|
|
|
*
|
|
|
|
* @return EINA_TRUE on success, EINA_FALSE on error.
|
|
|
|
*
|
|
|
|
*/
|
2010-09-20 23:49:07 -07:00
|
|
|
EAPI Eina_Bool ecore_con_url_url_set(Ecore_Con_Url *url_con,
|
|
|
|
const char *url);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Associates data with a connection object.
|
|
|
|
*
|
|
|
|
* Associates data with a connection object, which can be retrieved later with
|
|
|
|
* ecore_con_url_data_get()).
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to associate data.
|
|
|
|
* @param data Data to be set.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_data_get()
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_url_data_set(Ecore_Con_Url *url_con,
|
|
|
|
void *data);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Retrieves data associated with a Ecore_Con_Url connection object.
|
|
|
|
*
|
|
|
|
* Retrieves data associated with a Ecore_Con_Url connection object (previously
|
|
|
|
* set with ecore_con_url_data_set()).
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to retrieve data from.
|
|
|
|
*
|
|
|
|
* @return Data associated with the given object.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_data_set()
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void * ecore_con_url_data_get(Ecore_Con_Url *url_con);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Adds an additional header to the request connection object.
|
|
|
|
*
|
|
|
|
* Adds an additional header to the request connection object. This addition
|
|
|
|
* will be valid for only one ecore_con_url_get() or ecore_con_url_post() call.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object
|
|
|
|
* @param key Header key
|
|
|
|
* @param value Header value
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_get()
|
|
|
|
* @see ecore_con_url_post()
|
|
|
|
* @see ecore_con_url_additional_headers_clear()
|
|
|
|
*/
|
2010-09-20 20:08:35 -07:00
|
|
|
EAPI void ecore_con_url_additional_header_add(Ecore_Con_Url *url_con,
|
|
|
|
const char *key,
|
|
|
|
const char *value);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Cleans additional headers.
|
|
|
|
*
|
|
|
|
* Cleans additional headers associated with a connection object (previously
|
|
|
|
* added with ecore_con_url_additional_header_add()).
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to clean additional headers.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_additional_header_add()
|
|
|
|
* @see ecore_con_url_get()
|
|
|
|
* @see ecore_con_url_post()
|
|
|
|
*/
|
2010-09-20 20:08:35 -07:00
|
|
|
EAPI void ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_con);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Retrieves headers from last request sent.
|
|
|
|
*
|
|
|
|
* Retrieves a list containing the response headers. This function should be
|
|
|
|
* used after an ECORE_CON_EVENT_URL_COMPLETE event (headers should normally be
|
|
|
|
* ready at that time).
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to retrieve response headers from.
|
|
|
|
*
|
|
|
|
* @return List of response headers. This list must not be modified by the user.
|
|
|
|
*
|
|
|
|
*/
|
2010-09-20 20:08:35 -07:00
|
|
|
EAPI const Eina_List * ecore_con_url_response_headers_get(Ecore_Con_Url *url_con);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Setup a file for receiving response data.
|
|
|
|
*
|
|
|
|
* Sets up a file to have response data written into. Note that
|
|
|
|
* ECORE_CON_EVENT_URL_DATA events will not be emitted if a file has been set to
|
|
|
|
* receive the response data.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to set file
|
|
|
|
* @param fd File descriptor associated with the file. A negative value will
|
|
|
|
* unset any previously set fd.
|
|
|
|
*
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Retrieves the number of bytes received.
|
|
|
|
*
|
|
|
|
* Retrieves the number of bytes received on the last request of the given
|
|
|
|
* connection object.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object which the request was sent on.
|
|
|
|
*
|
|
|
|
* @return Number of bytes received on request.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_get()
|
|
|
|
* @see ecore_con_url_post()
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI int ecore_con_url_received_bytes_get(Ecore_Con_Url *url_con);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Sets url_con to use http auth, with given username and password, "safely" or not.
|
|
|
|
* ATTENTION: requires libcurl >= 7.19.1 to work, otherwise will always return 0.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to perform a request on, previously created
|
|
|
|
* with ecore_con_url_new() or ecore_con_url_custom_new().
|
|
|
|
* @param username Username to use in authentication
|
|
|
|
* @param password Password to use in authentication
|
|
|
|
* @param safe Whether to use "safer" methods (eg, NOT http basic auth)
|
|
|
|
*
|
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE on error.
|
|
|
|
*
|
|
|
|
*/
|
2010-09-20 20:14:46 -07:00
|
|
|
EAPI Eina_Bool ecore_con_url_httpauth_set(Ecore_Con_Url *url_con,
|
2010-07-26 23:30:27 -07:00
|
|
|
const char *username,
|
|
|
|
const char *password,
|
|
|
|
Eina_Bool safe);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Sends a request.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to perform a request on, previously created
|
|
|
|
* with ecore_con_url_new() or ecore_con_url_custom_new().
|
|
|
|
* @param data Payload (data sent on the request)
|
|
|
|
* @param length Payload length. If @c -1, rely on automatic length
|
|
|
|
* calculation via @c strlen() on @p data.
|
|
|
|
* @param content_type Content type of the payload (e.g. text/xml)
|
|
|
|
*
|
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE on error.
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_custom_new()
|
|
|
|
* @see ecore_con_url_additional_headers_clear()
|
|
|
|
* @see ecore_con_url_additional_header_add()
|
|
|
|
* @see ecore_con_url_data_set()
|
|
|
|
* @see ecore_con_url_data_get()
|
|
|
|
* @see ecore_con_url_response_headers_get()
|
|
|
|
* @see ecore_con_url_time()
|
|
|
|
* @see ecore_con_url_get()
|
|
|
|
* @see ecore_con_url_post()
|
|
|
|
*
|
|
|
|
* @deprecated Use ecore_con_url_post() instead of this.
|
|
|
|
*/
|
2011-01-05 22:33:25 -08:00
|
|
|
EINA_DEPRECATED EAPI Eina_Bool ecore_con_url_send(Ecore_Con_Url *url_con,
|
|
|
|
const void *data, long length,
|
|
|
|
const char *content_type);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Sends a get request.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to perform a request on, previously created
|
|
|
|
*
|
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE on error.
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_custom_new()
|
|
|
|
* @see ecore_con_url_additional_headers_clear()
|
|
|
|
* @see ecore_con_url_additional_header_add()
|
|
|
|
* @see ecore_con_url_data_set()
|
|
|
|
* @see ecore_con_url_data_get()
|
|
|
|
* @see ecore_con_url_response_headers_get()
|
|
|
|
* @see ecore_con_url_time()
|
|
|
|
* @see ecore_con_url_post()
|
|
|
|
*/
|
2011-01-27 18:24:24 -08:00
|
|
|
EAPI Eina_Bool ecore_con_url_get(Ecore_Con_Url *url_con);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Sends a post request.
|
|
|
|
*
|
|
|
|
* @param url_con Connection object to perform a request on, previously created
|
|
|
|
* with ecore_con_url_new() or ecore_con_url_custom_new().
|
|
|
|
* @param data Payload (data sent on the request)
|
|
|
|
* @param length Payload length. If @c -1, rely on automatic length
|
|
|
|
* calculation via @c strlen() on @p data.
|
|
|
|
* @param content_type Content type of the payload (e.g. text/xml)
|
|
|
|
*
|
|
|
|
* @return #EINA_TRUE on success, #EINA_FALSE on error.
|
|
|
|
*
|
|
|
|
* @see ecore_con_url_custom_new()
|
|
|
|
* @see ecore_con_url_additional_headers_clear()
|
|
|
|
* @see ecore_con_url_additional_header_add()
|
|
|
|
* @see ecore_con_url_data_set()
|
|
|
|
* @see ecore_con_url_data_get()
|
|
|
|
* @see ecore_con_url_response_headers_get()
|
|
|
|
* @see ecore_con_url_time()
|
|
|
|
* @see ecore_con_url_get()
|
|
|
|
*/
|
2011-01-05 22:33:25 -08:00
|
|
|
EAPI Eina_Bool ecore_con_url_post(Ecore_Con_Url *url_con,
|
2010-10-24 19:53:06 -07:00
|
|
|
const void *data, long length,
|
2010-07-26 23:30:27 -07:00
|
|
|
const char *content_type);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Sets whether HTTP requests should be conditional, dependent on
|
|
|
|
* modification time.
|
|
|
|
*
|
|
|
|
* @param url_con Ecore_Con_Url to act upon.
|
|
|
|
* @param condition Condition to use for HTTP requests.
|
|
|
|
* @param timestamp Time since 1 Jan 1970 to use in the condition.
|
|
|
|
*
|
|
|
|
* @sa ecore_con_url_get()
|
|
|
|
* @sa ecore_con_url_post()
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_url_time(Ecore_Con_Url *url_con,
|
2010-10-18 09:39:12 -07:00
|
|
|
Ecore_Con_Url_Time time_condition,
|
|
|
|
double timestamp);
|
2010-07-26 23:30:27 -07:00
|
|
|
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* @brief Uploads a file to an ftp site.
|
|
|
|
* @param url_con The Ecore_Con_Url object to send with
|
|
|
|
* @param filename The path to the file to send
|
|
|
|
* @param user The username to log in with
|
|
|
|
* @param pass The password to log in with
|
|
|
|
* @param upload_dir The directory to which the file should be uploaded
|
|
|
|
* @return #EINA_TRUE on success, else #EINA_FALSE.
|
|
|
|
* Upload @p filename to an ftp server set in @p url_con using @p user
|
|
|
|
* and @p pass to directory @p upload_dir
|
|
|
|
*/
|
2010-09-20 20:14:46 -07:00
|
|
|
EAPI Eina_Bool ecore_con_url_ftp_upload(Ecore_Con_Url *url_con,
|
2010-07-26 23:30:27 -07:00
|
|
|
const char *filename,
|
|
|
|
const char *user,
|
|
|
|
const char *pass,
|
|
|
|
const char *upload_dir);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Toggle libcurl's verbose output.
|
|
|
|
*
|
|
|
|
* If @p verbose is @c EINA_TRUE, libcurl will output a lot of verbose
|
|
|
|
* information about its operations, which is useful for
|
|
|
|
* debugging. The verbose information will be sent to stderr.
|
|
|
|
*
|
|
|
|
* @param url_con Ecore_Con_Url instance which will be acted upon.
|
|
|
|
* @param verbose Whether or not to enable libcurl's verbose output.
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_url_verbose_set(Ecore_Con_Url *url_con,
|
2010-10-08 08:17:01 -07:00
|
|
|
Eina_Bool verbose);
|
2011-07-08 11:06:04 -07:00
|
|
|
/**
|
|
|
|
* Enable or disable EPSV extension
|
|
|
|
* @return FIXME: To be more documented.
|
|
|
|
*/
|
2010-07-26 23:30:27 -07:00
|
|
|
EAPI void ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_con,
|
2010-10-08 11:41:49 -07:00
|
|
|
Eina_Bool use_epsv);
|
2005-08-16 02:25:02 -07:00
|
|
|
|
2011-01-06 08:10:38 -08:00
|
|
|
EAPI void ecore_con_url_cookies_init(Ecore_Con_Url *url_con);
|
|
|
|
EAPI void ecore_con_url_cookies_ignore_old_session_set(Ecore_Con_Url *url_con,
|
|
|
|
Eina_Bool ignore);
|
|
|
|
EAPI void ecore_con_url_cookies_clear(Ecore_Con_Url *url_con);
|
|
|
|
EAPI void ecore_con_url_cookies_session_clear(Ecore_Con_Url *url_con);
|
|
|
|
EAPI void ecore_con_url_cookies_file_add(Ecore_Con_Url *url_con,
|
|
|
|
const char * const file_name);
|
|
|
|
EAPI Eina_Bool ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *url_con,
|
|
|
|
const char * const cookiejar_file);
|
|
|
|
EAPI void ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_con);
|
|
|
|
|
2011-03-01 01:51:51 -08:00
|
|
|
EAPI void ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url_con,
|
|
|
|
Eina_Bool verify);
|
2011-03-30 02:15:24 -07:00
|
|
|
EAPI int ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_con,
|
|
|
|
const char *ca_path);
|
2011-03-01 01:51:51 -08:00
|
|
|
|
2010-09-20 23:49:07 -07:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|