summaryrefslogtreecommitdiffstats
path: root/avahi-compat-howl/include/corby/channel.h
blob: 9c91fbba0cf137708b73d214731a38caedbb88b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#ifndef _sw_corby_channel_h
#define _sw_corby_channel_h

/*
 * Copyright 2003, 2004 Porchdog Software. All rights reserved.
 *
 *	Redistribution and use in source and binary forms, with or without modification,
 *	are permitted provided that the following conditions are met:
 *
 *		1. Redistributions of source code must retain the above copyright notice,
 *		   this list of conditions and the following disclaimer.
 *		2. Redistributions in binary form must reproduce the above copyright notice,
 *		   this list of conditions and the following disclaimer in the documentation
 *		   and/or other materials provided with the distribution.
 *
 *	THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY
 *	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 *	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 *	IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 *	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 *	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 *	OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 *	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 *	OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *	The views and conclusions contained in the software and documentation are those
 *	of the authors and should not be interpreted as representing official policies,
 *	either expressed or implied, of Porchdog Software.
 */

#include <salt/salt.h>
#include <salt/socket.h>
#include <corby/corby.h>
#include <corby/buffer.h>


#ifdef __cplusplus
extern "C"
{
#endif

struct												_sw_corby_channel;
typedef struct _sw_corby_channel			*	sw_corby_channel;
struct												_sw_corby_message;
struct												_sw_corby_profile;
typedef struct _sw_corby_profile			*	sw_corby_profile;
typedef struct _sw_corby_profile const	*	sw_const_corby_profile;


typedef enum _sw_corby_reply_status
{
   SW_CORBY_NO_EXCEPTION		=	0,
   SW_CORBY_SYSTEM_EXCEPTION	=	1,
   SW_CORBY_USER_EXCEPTION		=	2,
   SW_CORBY_LOCATION_FORWARD	=	3
} sw_corby_reply_status;


typedef sw_result
(HOWL_API *sw_corby_channel_will_send_func)(
						sw_corby_channel			channel,
						sw_octets					bytes,
						sw_size_t					len,
						sw_opaque_t					extra);


typedef sw_result
(HOWL_API *sw_corby_channel_did_read_func)(
						sw_corby_channel			channel,
						sw_octets					bytes,
						sw_size_t					len,
						sw_opaque_t					extra);


typedef void
(HOWL_API *sw_corby_channel_cleanup_func)(
						sw_corby_channel			channel);


typedef struct _sw_corby_channel_delegate
{
	sw_opaque_t								m_delegate;
	sw_corby_channel_will_send_func	m_will_send_func;
	sw_corby_channel_did_read_func	m_did_read_func;
	sw_corby_channel_cleanup_func		m_cleanup_func;
	sw_opaque_t								m_extra;
} * sw_corby_channel_delegate;


sw_result HOWL_API
sw_corby_channel_start_request(
							sw_corby_channel				self,
							sw_const_corby_profile		profile,
							struct _sw_corby_buffer	**	buffer,
							sw_const_string				op,
							sw_uint32						oplen,
							sw_bool						reply_expected);


sw_result HOWL_API
sw_corby_channel_start_reply(
							sw_corby_channel				self,
							struct _sw_corby_buffer	**	buffer,
							sw_uint32						request_id,
							sw_corby_reply_status		status);


sw_result HOWL_API
sw_corby_channel_send(
							sw_corby_channel					self,
							struct _sw_corby_buffer		*	buffer,
							sw_corby_buffer_observer		observer,
							sw_corby_buffer_written_func	func,
							sw_opaque_t							extra);


sw_result HOWL_API
sw_corby_channel_recv(
							sw_corby_channel					self,
							sw_salt							*	salt,
							struct _sw_corby_message	**	message,
							sw_uint32						*	request_id,
							sw_string						*	op,
							sw_uint32						*	op_len,
							struct _sw_corby_buffer		**	buffer,
							sw_uint8						*	endian,
							sw_bool							block);


sw_result HOWL_API
sw_corby_channel_last_recv_from(
							sw_corby_channel					self,
							sw_ipv4_address				*	from,
							sw_port						*	from_port);


sw_result HOWL_API
sw_corby_channel_ff(
							sw_corby_channel					self,
							struct _sw_corby_buffer		*	buffer);


sw_socket HOWL_API
sw_corby_channel_socket(
							sw_corby_channel				self);


sw_result HOWL_API
sw_corby_channel_retain(
							sw_corby_channel				self);


sw_result HOWL_API
sw_corby_channel_set_delegate(
							sw_corby_channel				self,
							sw_corby_channel_delegate	delegate);


sw_corby_channel_delegate HOWL_API
sw_corby_channel_get_delegate(
							sw_corby_channel				self);


void HOWL_API
sw_corby_channel_set_app_data(
							sw_corby_channel				self,
							sw_opaque						app_data);


sw_opaque HOWL_API
sw_corby_channel_get_app_data(
							sw_corby_channel				self);


sw_result HOWL_API
sw_corby_channel_fina(
							sw_corby_channel				self);


#ifdef __cplusplus
}
#endif


#endif