int raw,
unsigned int bufSize,
/* OUT */ gras_socket_t **dst);
-void gras_trp_sg_socket_close(gras_trp_sock_t **sd);
+void gras_trp_sg_socket_close(gras_socket_t **sd);
gras_error_t gras_trp_sg_select(double timeOut,
gras_socket_t **sd);
***/
gras_error_t
-gras_trp_sg_init(void) {
+gras_trp_sg_init(gras_trp_plugin_t **dst) {
gras_trp_sg_specific_t *specific = malloc(sizeof(gras_trp_sg_specific_t));
if (!specific)
unsigned short port,
int raw,
unsigned int bufSize,
- /* OUT */ gras_trp_sock_t **dst){
+ /* OUT */ gras_socket_t **dst){
RAISE_UNIMPLEMENTED;
}
gras_error_t gras_trp_sg_socket_server(unsigned short port,
int raw,
unsigned int bufSize,
- /* OUT */ gras_trp_sock_t **dst){
+ /* OUT */ gras_socket_t **dst){
RAISE_UNIMPLEMENTED;
}
-void gras_trp_sg_socket_close(gras_trp_sock_t **sd){
+void gras_trp_sg_socket_close(gras_socket_t **sd){
ERROR1("%s not implemented",__FUNCTION__);
abort();
}
gras_error_t gras_trp_sg_select(double timeOut,
- gras_trp_sock_t **sd){
+ gras_socket_t **sd){
RAISE_UNIMPLEMENTED;
}
-gras_error_t gras_trp_sg_bloc_send(gras_trp_sock_t *sd,
+gras_error_t gras_trp_sg_bloc_send(gras_socket_t *sd,
void *data,
size_t size,
double timeOut){
RAISE_UNIMPLEMENTED;
}
-gras_error_t gras_trp_sg_bloc_recv(gras_trp_sock_t *sd,
+gras_error_t gras_trp_sg_bloc_recv(gras_socket_t *sd,
void *data,
size_t size,
double timeOut){
RAISE_UNIMPLEMENTED;
}
-gras_error_t gras_trp_sg_flush(gras_trp_sock_t *sd){
+gras_error_t gras_trp_sg_flush(gras_socket_t *sd){
RAISE_UNIMPLEMENTED;
}
res->socket_accept = gras_trp_tcp_socket_accept;
res->socket_close = gras_trp_tcp_socket_close;
- res->bloc_send = gras_trp_tcp_bloc_send;
- res->bloc_recv = gras_trp_tcp_bloc_recv;
-
res->specific = (void*)tcp;
res->free_specific = gras_trp_tcp_free_specific;
unsigned short port,
unsigned int bufSize,
/* OUT */ gras_socket_t **dst){
- /*
+
int addrCount;
IPAddress addresses[10];
int i;
int sd;
- if (!(*sock=malloc(sizeof(gras_socket_t)))) {
- fprintf(stderr,"Malloc error\n");
- return malloc_error;
- }
+ if (!(*sock=malloc(sizeof(gras_socket_t))))
+ RAISE_MALLOC;
+
(*sock)->peer_addr=NULL;
if (!(addrCount = IPAddressValues(host, addresses, 10))) {
- fprintf(stderr,"grasOpenClientSocket: address retrieval of '%s' failed\n",host);
- return system_error;
+ RAISE2(system_error,
+ "tcp address retrieval of '%s' failed: %s",
+ host,strerror(errno));
}
for(i = 0; i < addrCount && i<10 ; i++) {
}
}
free(*sock);
- fprintf(stderr,"grasOpenClientSocket: something wicked happenned while connecting to %s:%d",
+ RAISE2(system_error,"Something wicked happenned while connecting to %s:%d",
host,port);
- return system_error;
- */
- RAISE_UNIMPLEMENTED;
}
/**
server.sin_family = AF_INET;
if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
free(res);
- RAISE0(system_error,"socket allocation failed");
+ RAISE1(system_error,"socket allocation failed: %s", strerror(errno));
}
(void)setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on));
if (bind(sd, (struct sockaddr *)&server, sizeof(server)) == -1) {
free(res);
close(sd);
- RAISE1(system_error,"Cannot bind to port %d",port);
+ RAISE2(system_error,"Cannot bind to port %d: %s",port, strerror(errno));
}
if (listen(sd, 5) != -1) {
free(res);
close(sd);
- RAISE1(system_error,"Cannot listen to port %d",port);
+ RAISE2(system_error,"Cannot listen to port %d: %s",port,strerror(errno));
}
FD_SET(sd, &(data->incoming_socks));
}
-gras_error_t gras_trp_tcp_bloc_send(gras_socket_t *sock,
- char *data,
- size_t size){
-
- gras_assert0(sock && !sock->incoming, "Ascked to send stuff on an incomming socket");
+/**
+ * gras_trp_tcp_chunk_send:
+ *
+ * Send data on a TCP socket
+ */
+gras_error_t
+gras_trp_tcp_chunk_send(gras_socket_t *sock,
+ char *data,
+ size_t size) {
+
+ /* gras_assert0(sock && !sock->incoming,
+ "Asked to send stuff on an incomming socket");*/
gras_assert0(size >= 0, "Cannot send a negative amount of data");
while (size) {
return no_error;
}
-
-gras_error_t gras_trp_tcp_bloc_recv(gras_socket_t *sock,
- char *data,
- size_t size){
-
- gras_assert0(sock && !sock->incoming, "Ascked to receive stuff on an outcomming socket");
+/**
+ * gras_trp_tcp_chunk_recv:
+ *
+ * Receive data on a TCP socket.
+ */
+gras_error_t
+gras_trp_tcp_chunk_recv(gras_socket_t *sock,
+ char *data,
+ size_t size) {
+ gras_assert0(sock && !sock->incoming,
+ "Ascked to receive stuff on an outcomming socket");
gras_assert0(size >= 0, "Cannot receive a negative amount of data");
while (size) {