Basic Comm Interface Stuff (pipes)
authorPhilipp Dunkel <Philipp Dunkel@d4452222-2f33-11de-9270-010000000000>
Fri, 24 Apr 2009 18:04:08 +0000 (18:04 +0000)
committerPhilipp Dunkel <Philipp Dunkel@d4452222-2f33-11de-9270-010000000000>
Fri, 24 Apr 2009 18:04:08 +0000 (18:04 +0000)
git-svn-id: http://svn.cacert.cl/Software/BirdShack@15 d4452222-2f33-11de-9270-010000000000

TailFeather/trunk/src/comm.c
TailFeather/trunk/src/comm.h

index 23c0474..24f7131 100644 (file)
@@ -5,6 +5,38 @@
 
 #include "comm.h"
 
-struct comm_interface *create_comm_interface(const char *module, void *settings) {
+#include <stdlib.h>
+#include <strings.h>
+
+#ifdef COMM_PIPE
+#include "comm/pipe.h"
+#endif
+
+struct comm_interface *comm_interface_create(const char *module, void *settings) {
+       if (NULL == module) {
+               return NULL;
+       }
+#ifdef COMM_PIPE
+       if (strcmp(COMM_PIPE,module) == 0) {
+               if (NULL == settings) {
+                       return NULL;
+               }
+               const char *pipes[2] = (const char *[2])settings;
+               return pipe_create_comm_interface(pipes[0],pipes[1]);
+       }
+#endif
        return NULL;
 }
+int comm_interface_open(struct comm_interface *interface) {
+       return (interface->open)(interface);
+}
+int comm_interface_close(struct comm_interface *interface) {
+       return (interface->close)(interface);
+}
+int comm_interface_read(struct comm_interface *interface, char *data, int length) {
+       return (interface->read)(interface, data, length);
+}
+int comm_interface_write(struct comm_interface *interface, const char *data, const int length) {
+       return (interface->write)(interface, data, length);
+}
+
index f616417..b005005 100644 (file)
@@ -6,21 +6,29 @@
 #ifndef comm_h
 #define comm_h
 
-typedef struct comm_interface;
+#ifdef HAVE_COMM_PIPES
+#define COMM_PIPE "pipe-module"
+#endif
+
+struct comm_interface;
 
 typedef int (*comm_open_function)(struct comm_interface *interface);
 typedef int (*comm_close_function)(struct comm_interface *interface);
-typedef int (*comm_read_function)(struct comm_interface *interface, char* data, size_t length);
-typedef int (*comm_read_function)(struct comm_interface *interface, const char* data, const size_t length);
+typedef int (*comm_read_function)(struct comm_interface *interface, char *data, int length);
+typedef int (*comm_write_function)(struct comm_interface *interface, const char *data, const int length);
 
-typedef struct {
-       comm_open_function *open;
-       comm_close_function *close;
-       comm_read_function *read;
-       comm_write_function *write;
+struct comm_interface {
+       comm_open_function open;
+       comm_close_function close;
+       comm_read_function read;
+       comm_write_function write;
        void *data;
-} comm_interface;
+};
 
-struct comm_interface *create_comm_interface(const char *module, void *settings);
+struct comm_interface *comm_interface_create(const char *module, void *settings);
+int comm_interface_open(struct comm_interface *interface);
+int comm_interface_close(struct comm_interface *interface);
+int comm_interface_read(struct comm_interface *interface, char *data, int length);
+int comm_interface_write(struct comm_interface *interface, const char *data, const int length);
 
 #endif