Home | History | Annotate | Download | only in salt
      1 #ifndef _sw_salt_h
      2 #define _sw_salt_h
      3 
      4 /*
      5  * Copyright 2003, 2004 Porchdog Software, Inc. All rights reserved.
      6  *
      7  *	Redistribution and use in source and binary forms, with or without modification,
      8  *	are permitted provided that the following conditions are met:
      9  *
     10  *		1. Redistributions of source code must retain the above copyright notice,
     11  *		   this list of conditions and the following disclaimer.
     12  *		2. Redistributions in binary form must reproduce the above copyright notice,
     13  *		   this list of conditions and the following disclaimer in the documentation
     14  *		   and/or other materials provided with the distribution.
     15  *
     16  *	THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY
     17  *	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     18  *	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     19  *	IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     20  *	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     21  *	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     22  *	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     23  *	OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     24  *	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
     25  *	OF THE POSSIBILITY OF SUCH DAMAGE.
     26  *
     27  *	The views and conclusions contained in the software and documentation are those
     28  *	of the authors and should not be interpreted as representing official policies,
     29  *	either expressed or implied, of Porchdog Software, Inc.
     30  */
     31 
     32 #include <salt/platform.h>
     33 #include <salt/time.h>
     34 
     35 
     36 #ifdef __cplusplus
     37 extern "C"
     38 {
     39 #endif
     40 
     41 
     42 typedef enum _sw_socket_event
     43 {
     44 	SW_SOCKET_READ		=	(1 << 0),
     45 	SW_SOCKET_WRITE	=	(1 << 1),
     46 	SW_SOCKET_OOB		=	(1 << 2)
     47 } sw_socket_event;
     48 
     49 
     50 struct							_sw_salt;
     51 typedef struct _sw_salt	*	sw_salt;
     52 struct							_sw_socket;
     53 struct							_sw_timer;
     54 struct							_sw_network_interface;
     55 struct							_sw_signal;
     56 
     57 typedef sw_opaque				sw_socket_handler;
     58 typedef sw_result
     59 (HOWL_API *sw_socket_handler_func)(
     60 									sw_socket_handler		handler,
     61 									sw_salt					salt,
     62 									struct _sw_socket	*	socket,
     63 									sw_socket_event		events,
     64 									sw_opaque				extra);
     65 
     66 
     67 typedef sw_opaque				sw_timer_handler;
     68 typedef sw_result
     69 (HOWL_API *sw_timer_handler_func)(
     70 									sw_timer_handler		handler,
     71 									sw_salt					salt,
     72 									struct _sw_timer	*	timer,
     73 									sw_time					timeout,
     74 									sw_opaque				extra);
     75 
     76 typedef sw_opaque				sw_network_interface_handler;
     77 typedef sw_result
     78 (HOWL_API *sw_network_interface_handler_func)(
     79 									sw_network_interface_handler		handler,
     80 									sw_salt									salt,
     81 									struct _sw_network_interface	*	netif,
     82 									sw_opaque								extra);
     83 
     84 typedef sw_opaque				sw_signal_handler;
     85 typedef sw_result
     86 (HOWL_API *sw_signal_handler_func)(
     87 									sw_signal_handler		handler,
     88 									sw_salt					salt,
     89 									struct _sw_signal	*	signal,
     90 									sw_opaque				extra);
     91 
     92 
     93 sw_result HOWL_API
     94 sw_salt_init(
     95 				sw_salt		*	self,
     96 				int				argc,
     97 				char			**	argv);
     98 
     99 
    100 sw_result HOWL_API
    101 sw_salt_fina(
    102 				sw_salt	self);
    103 
    104 
    105 sw_result HOWL_API
    106 sw_salt_register_socket(
    107 				sw_salt						self,
    108 				struct _sw_socket		*	socket,
    109 				sw_socket_event			events,
    110 				sw_socket_handler			handler,
    111 				sw_socket_handler_func	func,
    112 				sw_opaque					extra);
    113 
    114 
    115 sw_result HOWL_API
    116 sw_salt_unregister_socket(
    117 				sw_salt						self,
    118 				struct _sw_socket		*	socket);
    119 
    120 
    121 sw_result HOWL_API
    122 sw_salt_register_timer(
    123 				sw_salt						self,
    124 				struct _sw_timer		*	timer,
    125 				sw_time						timeout,
    126 				sw_timer_handler			handler,
    127 				sw_timer_handler_func	func,
    128 				sw_opaque					extra);
    129 
    130 
    131 sw_result HOWL_API
    132 sw_salt_unregister_timer(
    133 				sw_salt						self,
    134 				struct _sw_timer		*	timer);
    135 
    136 
    137 sw_result HOWL_API
    138 sw_salt_register_network_interface(
    139 				sw_salt										self,
    140 				struct _sw_network_interface		*	netif,
    141 				sw_network_interface_handler			handler,
    142 				sw_network_interface_handler_func	func,
    143 				sw_opaque									extra);
    144 
    145 
    146 sw_result HOWL_API
    147 sw_salt_unregister_network_interface_handler(
    148 				sw_salt						self);
    149 
    150 
    151 sw_result HOWL_API
    152 sw_salt_register_signal(
    153 				sw_salt						self,
    154 				struct _sw_signal	*		signal,
    155 				sw_signal_handler			handler,
    156 				sw_signal_handler_func	func,
    157 				sw_opaque					extra);
    158 
    159 
    160 sw_result HOWL_API
    161 sw_salt_unregister_signal(
    162 				sw_salt						self,
    163 				struct _sw_signal	*		signal);
    164 
    165 
    166 sw_result HOWL_API
    167 sw_salt_lock(
    168 				sw_salt	self);
    169 
    170 
    171 sw_result HOWL_API
    172 sw_salt_unlock(
    173 				sw_salt	self);
    174 
    175 
    176 sw_result HOWL_API
    177 sw_salt_step(
    178 				sw_salt		self,
    179 				sw_uint32	*	msec);
    180 
    181 
    182 sw_result HOWL_API
    183 sw_salt_run(
    184 				sw_salt	self);
    185 
    186 
    187 sw_result HOWL_API
    188 sw_salt_stop_run(
    189 				sw_salt	self);
    190 
    191 
    192 #define SW_FALSE		0
    193 #define SW_TRUE		1
    194 #define SW_OKAY		0
    195 
    196 
    197 /*
    198  * error codes
    199  */
    200 #define	SW_E_CORE_BASE					0x80000000
    201 #define	SW_E_UNKNOWN					(SW_E_CORE_BASE) + 1
    202 #define	SW_E_INIT						(SW_E_CORE_BASE) + 2
    203 #define	SW_E_MEM							(SW_E_CORE_BASE) + 3
    204 #define	SW_E_EOF							(SW_E_CORE_BASE) + 4
    205 #define	SW_E_NO_IMPL					(SW_E_CORE_BASE) + 5
    206 #define	SW_E_FILE_LOCKED				(SW_E_CORE_BASE) + 6
    207 #define	SW_E_PROTOCOL_NOT_FOUND		(SW_E_CORE_BASE) + 7
    208 
    209 
    210 #ifdef __cplusplus
    211 }
    212 #endif
    213 
    214 
    215 #endif
    216