Annotation of embedaddon/strongswan/src/libstrongswan/networking/streams/stream_manager.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2013 Martin Willi
                      3:  * Copyright (C) 2013 revosec AG
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup stream_manager stream_manager
                     18:  * @{ @ingroup streams
                     19:  */
                     20: 
                     21: #ifndef STREAM_MANAGER_H_
                     22: #define STREAM_MANAGER_H_
                     23: 
                     24: typedef struct stream_manager_t stream_manager_t;
                     25: 
                     26: #include <library.h>
                     27: #include <networking/streams/stream_service.h>
                     28: 
                     29: /**
                     30:  * Manages client-server connections and services using stream_t backends.
                     31:  */
                     32: struct stream_manager_t {
                     33: 
                     34:        /**
                     35:         * Create a client-server connection to a service.
                     36:         *
                     37:         * @param uri           URI of service to connect to
                     38:         * @return                      stream instance, NULL on error
                     39:         */
                     40:        stream_t* (*connect)(stream_manager_t *this, char *uri);
                     41: 
                     42:        /**
                     43:         * Create a new service under an URI to accept() client connections.
                     44:         *
                     45:         * @param uri           URI of service to provide
                     46:         * @param backlog       size of the backlog queue, as passed to listen()
                     47:         * @return                      service, NULL on error
                     48:         */
                     49:        stream_service_t* (*create_service)(stream_manager_t *this, char *uri,
                     50:                                                                                int backlog);
                     51: 
                     52:        /**
                     53:         * Register a stream backend to the manager.
                     54:         *
                     55:         * @param prefix        prefix of URIs to use the backend for
                     56:         * @param create        constructor function for the stream
                     57:         */
                     58:        void (*add_stream)(stream_manager_t *this, char *prefix,
                     59:                                           stream_constructor_t create);
                     60: 
                     61:        /**
                     62:         * Unregister stream backends from the manager.
                     63:         *
                     64:         * @param create        constructor function passed to add_stream()
                     65:         */
                     66:        void (*remove_stream)(stream_manager_t *this, stream_constructor_t create);
                     67: 
                     68:        /**
                     69:         * Register a stream service backend to the manager.
                     70:         *
                     71:         * @param prefix        prefix of URIs to use the backend for
                     72:         * @param create        constructor function for the stream service
                     73:         */
                     74:        void (*add_service)(stream_manager_t *this, char *prefix,
                     75:                                                stream_service_constructor_t create);
                     76: 
                     77:        /**
                     78:         * Unregister stream service backends from the manager.
                     79:         *
                     80:         * @param create        constructor function passed to add_service()
                     81:         */
                     82:        void (*remove_service)(stream_manager_t *this,
                     83:                                                   stream_service_constructor_t create);
                     84: 
                     85:        /**
                     86:         * Destroy a stream_manager_t.
                     87:         */
                     88:        void (*destroy)(stream_manager_t *this);
                     89: };
                     90: 
                     91: /**
                     92:  * Create a stream_manager instance.
                     93:  */
                     94: stream_manager_t *stream_manager_create();
                     95: 
                     96: #endif /** STREAM_MANAGER_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>