- gras_error_t (*chunk_send)(gras_socket_t *sd,
- char *data,
- size_t size);
- gras_error_t (*chunk_recv)(gras_socket_t *sd,
- char *Data,
- size_t size);
-
- void *data;
+ /* send/recv may be buffered */
+ void (*send)(gras_socket_t sd,
+ const char *data,
+ unsigned long int size,
+ int stable /* storage will survive until flush*/);
+ int (*recv)(gras_socket_t sd,
+ char *data,
+ unsigned long int size);
+ /* raw_send/raw_recv is never buffered (use it for measurement stuff) */
+ void (*raw_send)(gras_socket_t sd,
+ const char *data,
+ unsigned long int size);
+ int (*raw_recv)(gras_socket_t sd,
+ char *data,
+ unsigned long int size);
+
+ /* flush has to make sure that the pending communications are achieved */
+ void (*flush)(gras_socket_t sd);
+
+ void *data; /* plugin-specific data */