Annotation of embedaddon/strongswan/src/libstrongswan/networking/streams/stream_manager.h, revision 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>