Partially synchronized with TCP code
This commit is contained in:
parent
09a113a3b1
commit
06ec462cc7
|
@ -15,6 +15,12 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
#include <System.h>
|
#include <System.h>
|
||||||
#include "App/apptransport.h"
|
#include "App/apptransport.h"
|
||||||
|
|
||||||
|
@ -38,6 +44,9 @@ static UDP * _udp_init(AppTransportPluginHelper * helper,
|
||||||
AppTransportMode mode, char const * name);
|
AppTransportMode mode, char const * name);
|
||||||
static void _udp_destroy(UDP * udp);
|
static void _udp_destroy(UDP * udp);
|
||||||
|
|
||||||
|
/* useful */
|
||||||
|
static int _udp_error(char const * message, int code);
|
||||||
|
|
||||||
|
|
||||||
/* public */
|
/* public */
|
||||||
/* constants */
|
/* constants */
|
||||||
|
@ -56,19 +65,53 @@ AppTransportPluginDefinition definition =
|
||||||
/* functions */
|
/* functions */
|
||||||
/* plug-in */
|
/* plug-in */
|
||||||
/* udp_init */
|
/* udp_init */
|
||||||
|
static int _init_client(UDP * udp, char const * name);
|
||||||
|
static int _init_server(UDP * udp, char const * name);
|
||||||
|
|
||||||
static UDP * _udp_init(AppTransportPluginHelper * helper,
|
static UDP * _udp_init(AppTransportPluginHelper * helper,
|
||||||
AppTransportMode mode, char const * name)
|
AppTransportMode mode, char const * name)
|
||||||
{
|
{
|
||||||
UDP * udp;
|
UDP * udp;
|
||||||
|
int res = -1;
|
||||||
|
|
||||||
if((udp = object_new(sizeof(*udp))) == NULL)
|
if((udp = object_new(sizeof(*udp))) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
udp->helper = helper;
|
udp->helper = helper;
|
||||||
udp->fd = -1;
|
udp->fd = -1;
|
||||||
/* FIXME really implement */
|
switch(mode)
|
||||||
|
{
|
||||||
|
case ATM_CLIENT:
|
||||||
|
res = _init_client(udp, name);
|
||||||
|
break;
|
||||||
|
case ATM_SERVER:
|
||||||
|
res = _init_server(udp, name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* check for errors */
|
||||||
|
if(res != 0)
|
||||||
|
{
|
||||||
|
_udp_destroy(udp);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return udp;
|
return udp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _init_client(UDP * udp, char const * name)
|
||||||
|
{
|
||||||
|
if((udp->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
|
||||||
|
return -_udp_error("socket", 1);
|
||||||
|
/* FIXME really implement */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int _init_server(UDP * udp, char const * name)
|
||||||
|
{
|
||||||
|
if((udp->fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
|
||||||
|
return -_udp_error("socket", 1);
|
||||||
|
/* FIXME really implement */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* udp_destroy */
|
/* udp_destroy */
|
||||||
static void _udp_destroy(UDP * udp)
|
static void _udp_destroy(UDP * udp)
|
||||||
|
@ -76,3 +119,10 @@ static void _udp_destroy(UDP * udp)
|
||||||
/* FIXME really implement */
|
/* FIXME really implement */
|
||||||
object_delete(udp);
|
object_delete(udp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* useful */
|
||||||
|
static int _udp_error(char const * message, int code)
|
||||||
|
{
|
||||||
|
return error_set_code(code, "%s%s%s", (message != NULL) ? message : "",
|
||||||
|
(message != NULL) ? ": " : "", strerror(errno));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user