2014-08-22 09:31:33 -07:00
|
|
|
abstract Ecore.Con.Base (Eo.Base) {
|
|
|
|
legacy_prefix: ecore_con;
|
2014-08-22 03:11:41 -07:00
|
|
|
eo_prefix: ecore_con_obj;
|
|
|
|
data: null;
|
2015-05-07 08:36:45 -07:00
|
|
|
methods {
|
|
|
|
@property ip {
|
2015-05-11 07:16:17 -07:00
|
|
|
/*@
|
2014-08-22 03:11:41 -07:00
|
|
|
* Control the IP address of a server that has been connected to.
|
|
|
|
*
|
|
|
|
* The param is a pointer to an internal string that contains the IP address of
|
|
|
|
* the connected server in the form "XXX.YYY.ZZZ.AAA" IP notation.
|
|
|
|
* This string should not be modified or trusted to stay valid after
|
|
|
|
* deletion for the @p svr object. If no IP is known @c NULL is
|
|
|
|
* returned.
|
|
|
|
*/
|
|
|
|
get {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
values {
|
2015-05-18 08:13:08 -07:00
|
|
|
ip: const(char)*; /*@ The IP address */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
}
|
2015-05-07 08:36:45 -07:00
|
|
|
@property uptime {
|
2014-08-22 03:11:41 -07:00
|
|
|
/*@
|
|
|
|
* @brief Check how long the object has been connected
|
|
|
|
*
|
|
|
|
* This function is used to find out how long a client has been connected for.
|
|
|
|
*/
|
|
|
|
get {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
values {
|
2015-05-18 08:13:08 -07:00
|
|
|
uptime: double; /*@ The total time, in seconds, that the object has been connected. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
}
|
2015-05-07 08:36:45 -07:00
|
|
|
@property port {
|
2014-08-22 03:11:41 -07:00
|
|
|
/*@
|
|
|
|
* @brief Return the port that the obj is connected to
|
|
|
|
*
|
|
|
|
*/
|
2014-08-28 06:17:16 -07:00
|
|
|
set {
|
|
|
|
legacy: null;
|
|
|
|
}
|
2014-08-22 03:11:41 -07:00
|
|
|
get {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
values {
|
2015-05-18 08:13:08 -07:00
|
|
|
port: int; /*@ The The port that obj is connected to, or -1 on error. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
}
|
2015-05-07 08:36:45 -07:00
|
|
|
@property fd {
|
2014-08-22 03:11:41 -07:00
|
|
|
/*@
|
|
|
|
* Get the fd that the server is connected to
|
|
|
|
*
|
|
|
|
* This function returns the fd which is used by the underlying server connection.
|
|
|
|
* It should not be tampered with unless you REALLY know what you are doing.
|
|
|
|
* @note This function is only valid for servers created with ecore_con_server_connect()
|
|
|
|
* @warning Seriously. Don't use this unless you know what you are doing.
|
|
|
|
* @since 1.1
|
|
|
|
*/
|
|
|
|
get {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
values {
|
2015-05-18 08:13:08 -07:00
|
|
|
fd: int; /*@ The fd, or -1 on failure. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
}
|
2015-05-07 08:36:45 -07:00
|
|
|
@property connected {
|
2014-08-22 03:11:41 -07:00
|
|
|
/*@
|
|
|
|
* Returns whether the client is still connected
|
|
|
|
*/
|
|
|
|
get {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
values {
|
2015-05-18 08:13:08 -07:00
|
|
|
connected: bool; /*@ Returns True if connected, False otherwise. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
}
|
2015-05-07 08:36:45 -07:00
|
|
|
@property timeout {
|
2014-08-22 03:11:41 -07:00
|
|
|
/*@
|
|
|
|
* Control the default time after which an inactive client will be disconnected
|
|
|
|
*
|
|
|
|
* This function is used by the server to set the default idle timeout on
|
|
|
|
* clients. If the any of the clients becomes idle for a time higher than this
|
|
|
|
* value, it will be disconnected. A value of < 1 disables the idle timeout.
|
|
|
|
*
|
|
|
|
* This timeout is not affected by the one set by
|
|
|
|
* ecore_con_client_timeout_set(). A client will be disconnected whenever the
|
|
|
|
* client or the server timeout is reached. That means, the lower timeout value
|
|
|
|
* will be used for that client if ecore_con_client_timeout_set() is used on it.
|
|
|
|
*/
|
|
|
|
set {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
get {
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
values {
|
2015-05-18 08:13:08 -07:00
|
|
|
timeout: double; /*@ The timeout, in seconds, to disconnect after. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
flush {
|
|
|
|
/*@
|
|
|
|
* Flushes all pending data to the given server.
|
|
|
|
*
|
|
|
|
* This function will block until all data is sent to the server.
|
|
|
|
*/
|
|
|
|
legacy: null;
|
|
|
|
}
|
|
|
|
send {
|
2015-05-11 07:16:17 -07:00
|
|
|
/*@
|
2014-08-22 03:11:41 -07:00
|
|
|
* Sends the given data to the given server.
|
|
|
|
*
|
|
|
|
* This function will send the given data to the server as soon as the program
|
|
|
|
* is back to the main loop. Thus, this function returns immediately
|
|
|
|
* (non-blocking). If the data needs to be sent @b now, call
|
|
|
|
* ecore_con_server_flush() after this one.
|
|
|
|
*
|
|
|
|
* @see ecore_con_client_send()
|
|
|
|
* @see ecore_con_server_flush()
|
|
|
|
*/
|
|
|
|
legacy: null;
|
|
|
|
|
|
|
|
params {
|
2015-05-18 08:13:08 -07:00
|
|
|
data: const(void)*; /*@ The given data */
|
|
|
|
size: int; /*@ Length of the data, in bytes. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
return: int; /*@ The number of bytes sent. @c 0 will be returned if there is an error. */
|
|
|
|
}
|
|
|
|
lookup @class {
|
|
|
|
/*@
|
|
|
|
* 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 @c EINA_TRUE if the request did not fail to be set up, @c 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()
|
|
|
|
*/
|
|
|
|
params {
|
2015-05-18 08:13:08 -07:00
|
|
|
name: const(char)* @nonull; /*@ Hostname to lookup. */
|
|
|
|
done_cb: Ecore_Con_Dns_Cb; /*@ The callback to be called wehn lookup is done. */
|
|
|
|
data: const(void)*; /*@ User data for the callback. */
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
|
|
|
return: bool;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
implements {
|
2014-08-29 03:40:29 -07:00
|
|
|
@virtual .ip.get;
|
|
|
|
@virtual .uptime.get;
|
|
|
|
@virtual .port.set;
|
|
|
|
@virtual .port.get;
|
|
|
|
@virtual .fd.get;
|
|
|
|
@virtual .connected.get;
|
|
|
|
@virtual .timeout.set;
|
|
|
|
@virtual .timeout.get;
|
|
|
|
@virtual .flush;
|
|
|
|
@virtual .send;
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
2014-08-22 06:33:26 -07:00
|
|
|
events {
|
|
|
|
data,received: Ecore_Con_Event_Data_Received;
|
|
|
|
connection,upgraded;
|
|
|
|
connection,error: const(char) *;
|
|
|
|
}
|
2014-08-22 03:11:41 -07:00
|
|
|
}
|
2014-08-22 05:14:59 -07:00
|
|
|
|
2014-08-22 06:33:26 -07:00
|
|
|
/* FIXME: Should actually be a binbuf. */
|
2015-05-12 08:15:29 -07:00
|
|
|
struct Ecore_Con_Event_Data_Received {
|
2015-06-11 08:51:43 -07:00
|
|
|
data: void *; [[The data thet got sent.]]
|
|
|
|
size: int; [[The length of the data sent.]]
|
2015-05-12 08:15:29 -07:00
|
|
|
}
|
2014-08-22 06:33:26 -07:00
|
|
|
|
2014-11-27 09:13:20 -08:00
|
|
|
/* TODO
|
2014-08-28 04:00:31 -07:00
|
|
|
* Add events (to all of the ecore con stuff, e.g url).
|
|
|
|
* Make server the father of the client - make sure I don't leak references.
|
|
|
|
*
|
2014-08-28 06:17:16 -07:00
|
|
|
* Still need to add constructor client, and most likely migrate ecore_con_eet.
|
2014-08-28 04:00:31 -07:00
|
|
|
*
|
|
|
|
* Split server to two classes, listener and connector (or w/e).
|
2014-08-28 06:17:16 -07:00
|
|
|
*
|
|
|
|
* Mark the constructing properties all around.
|
2014-08-22 05:14:59 -07:00
|
|
|
*/
|