#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <unistd.h>
#include "gras_private.h"
#include "transport_private.h"
-GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(trp_file,transport);
+GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(trp_file,transport,
+ "Pseudo-transport to write to/read from a file");
/***
*** Prototypes
void gras_trp_file_close(gras_socket_t *sd);
gras_error_t gras_trp_file_chunk_send(gras_socket_t *sd,
- char *data,
- size_t size);
+ const char *data,
+ long int size);
gras_error_t gras_trp_file_chunk_recv(gras_socket_t *sd,
char *data,
- size_t size);
+ long int size);
/***
gras_error_t
gras_trp_file_setup(gras_trp_plugin_t *plug) {
- gras_trp_file_plug_data_t *file = malloc(sizeof(gras_trp_file_plug_data_t));
+ gras_trp_file_plug_data_t *file = gras_new(gras_trp_file_plug_data_t,1);
if (!file)
RAISE_MALLOC;
(*dst)->incoming?'y':'n',
(*dst)->outgoing?'y':'n',
(*dst)->accepting?'y':'n');
- /* register socket */
- errcode = gras_dynar_push(gras_socketset_get(),dst);
- if (errcode != no_error) {
- free(*dst);
- *dst = NULL;
- return errcode;
- }
-
+
return no_error;
}
(*dst)->outgoing?'y':'n',
(*dst)->accepting?'y':'n');
- /* register socket */
- errcode = gras_dynar_push(gras_socketset_get(),dst);
- if (errcode != no_error) {
- free(*dst);
- *dst = NULL;
- return errcode;
- }
-
return no_error;
}
*/
gras_error_t
gras_trp_file_chunk_send(gras_socket_t *sock,
- char *data,
- size_t size) {
+ const char *data,
+ long int size) {
gras_assert0(sock->outgoing, "Cannot write on client file socket");
gras_assert0(size >= 0, "Cannot send a negative amount of data");
while (size) {
int status = 0;
- DEBUG3("write(%d, %p, %ld);", sock->sd, data, (size_t)size);
- status = write(sock->sd, data, (size_t)size);
+ DEBUG3("write(%d, %p, %ld);", sock->sd, data, (long int)size);
+ status = write(sock->sd, data, (long int)size);
if (status == -1) {
RAISE4(system_error,"write(%d,%p,%d) failed: %s",
gras_error_t
gras_trp_file_chunk_recv(gras_socket_t *sock,
char *data,
- size_t size) {
+ long int size) {
gras_assert0(sock, "Cannot recv on an NULL socket");
gras_assert0(sock->incoming, "Cannot recv on client file socket");
while (size) {
int status = 0;
- status = read(sock->sd, data, (size_t)size);
+ status = read(sock->sd, data, (long int)size);
DEBUG3("read(%d, %p, %ld);", sock->sd, data, size);
if (status == -1) {