Home | History | Annotate | Download | only in corby
      1 #ifndef _corby_orb_h
      2 #define _corby_orb_h
      3 
      4 /*
      5  * Copyright 2003, 2004 Porchdog Software. 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.
     30  */
     31 
     32 #include <salt/salt.h>
     33 #include <salt/address.h>
     34 #include <salt/socket.h>
     35 #include <corby/corby.h>
     36 
     37 
     38 #ifdef __cplusplus
     39 extern "C"
     40 {
     41 #endif
     42 
     43 
     44 struct									_sw_corby_orb;
     45 typedef struct _sw_corby_orb	*	sw_corby_orb;
     46 typedef sw_opaque						sw_corby_orb_observer;
     47 typedef sw_opaque						sw_corby_servant;
     48 struct									_sw_corby_object;
     49 struct									_sw_corby_channel;
     50 struct									_sw_corby_message;
     51 struct									_sw_corby_buffer;
     52 
     53 typedef sw_result
     54 (HOWL_API *sw_corby_orb_accept_channel_func)(
     55 								sw_corby_orb						orb,
     56 								struct _sw_corby_channel	*	channel);
     57 
     58 
     59 typedef struct _sw_corby_orb_delegate
     60 {
     61 	sw_opaque								m_delegate;
     62 	sw_corby_orb_accept_channel_func	m_accept_channel_func;
     63 	sw_opaque								m_extra;
     64 } * sw_corby_orb_delegate;
     65 
     66 
     67 typedef struct _sw_corby_orb_config
     68 {
     69 	sw_string	m_name;
     70 	sw_uint32	m_tag;
     71 	sw_string	m_host;
     72 	sw_port	m_port;
     73 	sw_string	m_options;
     74 } sw_corby_orb_config;
     75 
     76 
     77 typedef sw_result
     78 (HOWL_API *sw_corby_servant_cb)(
     79 				sw_corby_servant					servant,
     80 				sw_salt								salt,
     81 				sw_corby_orb						orb,
     82 				struct _sw_corby_channel	*	channel,
     83 				struct _sw_corby_message	*	message,
     84 				struct _sw_corby_buffer		*	buffer,
     85 				sw_const_string					op,
     86 				sw_uint32							op_len,
     87 				sw_uint32							request_id,
     88 				sw_uint8							endian);
     89 
     90 
     91 typedef sw_result
     92 (HOWL_API *sw_corby_orb_observer_func)(
     93 				sw_corby_orb_observer			handler,
     94 				sw_salt								salt,
     95 				sw_corby_orb						orb,
     96 				struct _sw_corby_channel	*	channel,
     97 				sw_opaque_t							extra);
     98 
     99 
    100 sw_result HOWL_API
    101 sw_corby_orb_init(
    102 				sw_corby_orb						*	self,
    103 				sw_salt									salt,
    104 				const sw_corby_orb_config		*	config,
    105             sw_corby_orb_observer				observer,
    106             sw_corby_orb_observer_func			func,
    107             sw_opaque_t								extra);
    108 
    109 
    110 sw_result HOWL_API
    111 sw_corby_orb_fina(
    112 				sw_corby_orb	self);
    113 
    114 
    115 sw_result HOWL_API
    116 sw_corby_orb_register_servant(
    117 				sw_corby_orb					self,
    118 				sw_corby_servant				servant,
    119             sw_corby_servant_cb			cb,
    120 				sw_const_string				oid,
    121 				struct _sw_corby_object	**	object,
    122 				sw_const_string				protocol_name);
    123 
    124 
    125 sw_result HOWL_API
    126 sw_corby_orb_unregister_servant(
    127 				sw_corby_orb		self,
    128 				sw_const_string	oid);
    129 
    130 
    131 sw_result HOWL_API
    132 sw_corby_orb_register_bidirectional_object(
    133 				sw_corby_orb					self,
    134 				struct _sw_corby_object	*	object);
    135 
    136 
    137 sw_result HOWL_API
    138 sw_corby_orb_register_channel(
    139 				sw_corby_orb						self,
    140 				struct _sw_corby_channel	*	channel);
    141 
    142 
    143 sw_corby_orb_delegate HOWL_API
    144 sw_corby_orb_get_delegate(
    145 				sw_corby_orb						self);
    146 
    147 
    148 sw_result HOWL_API
    149 sw_corby_orb_set_delegate(
    150 				sw_corby_orb						self,
    151 				sw_corby_orb_delegate			delegate);
    152 
    153 
    154 sw_result HOWL_API
    155 sw_corby_orb_set_observer(
    156 				sw_corby_orb						self,
    157 				sw_corby_orb_observer			observer,
    158 				sw_corby_orb_observer_func		func,
    159 				sw_opaque_t							extra);
    160 
    161 
    162 sw_result HOWL_API
    163 sw_corby_orb_protocol_to_address(
    164 				sw_corby_orb		self,
    165 				sw_const_string	tag,
    166 				sw_string			addr,
    167 				sw_port		*	port);
    168 
    169 
    170 sw_result HOWL_API
    171 sw_corby_orb_protocol_to_url(
    172 				sw_corby_orb		self,
    173 				sw_const_string	tag,
    174 				sw_const_string	name,
    175 				sw_string			url,
    176 				sw_size_t			url_len);
    177 
    178 
    179 sw_result HOWL_API
    180 sw_corby_orb_read_channel(
    181 				sw_corby_orb						self,
    182 				struct _sw_corby_channel	*	channel);
    183 
    184 
    185 sw_result HOWL_API
    186 sw_corby_orb_dispatch_message(
    187 				sw_corby_orb						self,
    188 				struct _sw_corby_channel	*	channel,
    189 				struct _sw_corby_message	*	message,
    190 				struct _sw_corby_buffer		*	buffer,
    191 				sw_uint8							endian);
    192 
    193 
    194 #ifdef __cplusplus
    195 }
    196 #endif
    197 
    198 
    199 #endif
    200