diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/ouroboros/CMakeLists.txt | 18 | ||||
-rw-r--r-- | include/ouroboros/cdap.h | 184 | ||||
-rw-r--r-- | include/ouroboros/common.h | 16 | ||||
-rw-r--r-- | include/ouroboros/dev.h | 1 | ||||
-rw-r--r-- | include/ouroboros/ipcp.h | 2 | ||||
-rw-r--r-- | include/ouroboros/shared.h | 38 | ||||
-rw-r--r-- | include/ouroboros/shm_du_map.h | 4 |
7 files changed, 108 insertions, 155 deletions
diff --git a/include/ouroboros/CMakeLists.txt b/include/ouroboros/CMakeLists.txt index 68c88a18..ee339294 100644 --- a/include/ouroboros/CMakeLists.txt +++ b/include/ouroboros/CMakeLists.txt @@ -3,14 +3,14 @@ configure_file( "${CMAKE_CURRENT_BINARY_DIR}/config.h") set(HEADER_FILES - cdap.h - dev.h - errno.h - flow.h - irm.h - irm_config.h - nsm.h - qos.h -) + cdap.h + common.h + dev.h + errno.h + flow.h + irm.h + irm_config.h + nsm.h + qos.h) install(FILES ${HEADER_FILES} DESTINATION usr/include/ouroboros) diff --git a/include/ouroboros/cdap.h b/include/ouroboros/cdap.h index 72788ad6..e26f192b 100644 --- a/include/ouroboros/cdap.h +++ b/include/ouroboros/cdap.h @@ -3,7 +3,8 @@ * * The Common Distributed Application Protocol * - * Sander Vrijders <sander.vrijders@intec.ugent.be> + * Sander Vrijders <sander.vrijders@intec.ugent.be> + * Dimitri Staessens <dimitri.staessens@intec.ugent.be> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,148 +24,75 @@ #ifndef OUROBOROS_CDAP_H #define OUROBOROS_CDAP_H +#include <ouroboros/common.h> + #include <stdbool.h> +#include <stdint.h> +#include <unistd.h> + +#define F_SYNC 0x0001 struct cdap; +/* Callback functions that work on the application's RIB */ struct cdap_ops { - /* Sender related callbacks */ - int (* handle_connect_r)(int fd, - int invoke_id, - int result); - int (* handle_release_r)(int fd, - int invoke_id, - int result); - int (* handle_read_r)(int fd, - int invoke_id, - int result, - char * reason, - char * obj_val, - bool complete); - int (* handle_cancelread_r)(int fd, - int invoke_id, - int result); - int (* handle_write_r)(int fd, - int invoke_id, - int result, - char * reason, - char * obj_val); - int (* handle_create_r)(int fd, - int invoke_id, - int result); - int (* handle_delete_r)(int fd, - int invoke_id, - int result); - int (* handle_start_r)(int fd, - int invoke_id, - int result); - int (* handle_stop_r)(int fd, - int invoke_id, - int result); + int (* cdap_reply)(struct cdap * instance, + int invoke_id, + int result, + buffer_t * val, + size_t len); + + int (* cdap_read)(struct cdap * instance, + char * name); + int (* cdap_write)(struct cdap * instance, + char * name, + buffer_t * val, + size_t len, + uint32_t flags); - /* Receiver related callbacks */ - int (* handle_connect)(int fd, - int invoke_id, - rina_name_t src, - rina_name_t dst, - char * auth_mech, - char * auth_val); - int (* handle_release)(int fd, - int invoke_id); - int (* handle_cancelread)(int fd, - int invoke_id); - int (* handle_write)(int fd, - int invoke_id, - char * obj_name, - char * obj_val); - int (* handle_create)(int fd, - int invoke_id, - char * obj_class, - char * obj_name, - char * obj_val); - int (* handle_delete)(int fd, - int invoke_id, - char * obj_name); - int (* handle_start)(int fd, - int invoke_id, - char * obj_name, - char * obj_val); - int (* handle_stop)(int fd, - int invoke_id, - char * obj_name, - char * obj_val); + int (* cdap_create)(struct cdap * instance, + char * name, + buffer_t val); + int (* cdap_delete)(struct cdap * instance, + char * name, + buffer_t val); + + int (* cdap_start)(struct cdap * instance, + char * name); + int (* cdap_stop)(struct cdap * instance, + char * name); }; -struct cdap * cdap_create(struct cdap_ops ops, - int fd); +/* Assumes flow is blocking */ +struct cdap * cdap_create(struct cdap_ops * ops, + int fd); int cdap_destroy(struct cdap * instance); -/* Sender related functions */ -int cdap_send_connect(struct cdap * instance, - int invoke_id, - rina_name_t src, - rina_name_t dst, - char * auth_mech, - char * auth_val); -int cdap_send_release(struct cdap * instance, - int invoke_id); +/* Returns a positive invoke-id on success to be used in the callback */ int cdap_send_read(struct cdap * instance, - int invoke_id, - char * obj_name); -int cdap_send_cancelread(struct cdap * instance, - int invoke_id, - char * obj_name); + char * name); int cdap_send_write(struct cdap * instance, - int invoke_id, - char * obj_name, - char * obj_val); + char * name, + buffer_t * val, + size_t len, + uint32_t flags); + int cdap_send_create(struct cdap * instance, - int invoke_id, - char * obj_name, - char * obj_val); + char * name, + buffer_t val); int cdap_send_delete(struct cdap * instance, - int invoke_id, - char * obj_name); + char * name, + buffer_t val); + int cdap_send_start(struct cdap * instance, - int invoke_id, - char * obj_name, - char * obj_val); + char * name); int cdap_send_stop(struct cdap * instance, - int invoke_id, - char * obj_name, - char * obj_val); + char * name); -/* Receiver related functions */ -int cdap_send_connect_r(struct cdap * instance, - int invoke_id, - int result); -int cdap_send_release_r(struct cdap * instance, - int invoke_id, - int result); -int cdap_send_read_r(struct cdap * instance, - int invoke_id, - int result, - char * reason, - char * obj_val, - bool complete); -int cdap_send_cancelread_r(struct cdap * instance, - int invoke_id, - int result); -int cdap_send_write_r(struct cdap * instance, - int invoke_id, - int result, - char * obj_name, - char * obj_val); -int cdap_send_create_r(struct cdap * instance, - int invoke_id, - int result); -int cdap_send_delete_r(struct cdap * instance, - int invoke_id, - int result); -int cdap_send_start_r(struct cdap * instance, - int invoke_id, - int result); -int cdap_send_stop_r(struct cdap * instance, - int invoke_id, - int result); +/* Can only be called following a callback function */ +int cdap_send_reply(struct cdap * instance, + int invoke_id, + int result, + buffer_t * val, + size_t len); #endif diff --git a/include/ouroboros/common.h b/include/ouroboros/common.h index 039e1a83..dbd050f1 100644 --- a/include/ouroboros/common.h +++ b/include/ouroboros/common.h @@ -25,24 +25,10 @@ #include <stdint.h> #include <unistd.h> -#include <stdbool.h> -#include <errno.h> typedef struct { uint8_t * data; - size_t size; + size_t len; } buffer_t; -/* FIXME: To be decided which QoS cubes we support */ -enum qos_cube { - QOS_CUBE_BE = 0, - QOS_CUBE_VIDEO -}; - -enum flow_state { - FLOW_NULL = 0, - FLOW_PENDING, - FLOW_ALLOCATED -}; - #endif /* OUROBOROS_COMMON_H */ diff --git a/include/ouroboros/dev.h b/include/ouroboros/dev.h index 897bc124..699973a3 100644 --- a/include/ouroboros/dev.h +++ b/include/ouroboros/dev.h @@ -48,7 +48,6 @@ int flow_alloc(char * dst_name, int flow_alloc_res(int fd); int flow_dealloc(int fd); -/* Wraps around fnctl */ int flow_cntl(int fd, int cmd, int oflags); ssize_t flow_write(int fd, void * buf, size_t count); ssize_t flow_read(int fd, void * buf, size_t count); diff --git a/include/ouroboros/ipcp.h b/include/ouroboros/ipcp.h index f5657b64..c1aa452b 100644 --- a/include/ouroboros/ipcp.h +++ b/include/ouroboros/ipcp.h @@ -22,7 +22,7 @@ #include <ouroboros/irm_config.h> #include <ouroboros/sockets.h> -#include <ouroboros/common.h> +#include <ouroboros/shared.h> #include <sys/types.h> diff --git a/include/ouroboros/shared.h b/include/ouroboros/shared.h new file mode 100644 index 00000000..f5e34dc8 --- /dev/null +++ b/include/ouroboros/shared.h @@ -0,0 +1,38 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Shared definitions between IRMd and IPCPs + * + * Sander Vrijders <sander.vrijders@intec.ugent.be> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef OUROBOROS_SHARED_H +#define OUROBOROS_SHARED_H + +/* FIXME: To be decided which QoS cubes we support */ +enum qos_cube { + QOS_CUBE_BE = 0, + QOS_CUBE_VIDEO +}; + +enum flow_state { + FLOW_NULL = 0, + FLOW_PENDING, + FLOW_ALLOCATED +}; + +#endif /* OUROBOROS_SHARED_H */ diff --git a/include/ouroboros/shm_du_map.h b/include/ouroboros/shm_du_map.h index e8934bae..9d6d7aaf 100644 --- a/include/ouroboros/shm_du_map.h +++ b/include/ouroboros/shm_du_map.h @@ -24,7 +24,9 @@ #ifndef OUROBOROS_SHM_DU_MAP_H #define OUROBOROS_SHM_DU_MAP_H -#include "common.h" +#include <errno.h> +#include <unistd.h> +#include <stdint.h> #include <sys/types.h> #include <pthread.h> |