1 #ifndef _sw_corby_channel_h
2 #define _sw_corby_channel_h
5 * Copyright 2003, 2004 Porchdog Software. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without modification,
8 * are permitted provided that the following conditions are met:
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.
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.
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.
32 #include <salt/salt.h>
33 #include <salt/socket.h>
34 #include <corby/corby.h>
35 #include <corby/buffer.h>
43 struct _sw_corby_channel;
44 typedef struct _sw_corby_channel * sw_corby_channel;
45 struct _sw_corby_message;
46 struct _sw_corby_profile;
47 typedef struct _sw_corby_profile * sw_corby_profile;
48 typedef struct _sw_corby_profile const * sw_const_corby_profile;
51 typedef enum _sw_corby_reply_status
53 SW_CORBY_NO_EXCEPTION = 0,
54 SW_CORBY_SYSTEM_EXCEPTION = 1,
55 SW_CORBY_USER_EXCEPTION = 2,
56 SW_CORBY_LOCATION_FORWARD = 3
57 } sw_corby_reply_status;
61 (HOWL_API *sw_corby_channel_will_send_func)(
62 sw_corby_channel channel,
69 (HOWL_API *sw_corby_channel_did_read_func)(
70 sw_corby_channel channel,
77 (HOWL_API *sw_corby_channel_cleanup_func)(
78 sw_corby_channel channel);
81 typedef struct _sw_corby_channel_delegate
83 sw_opaque_t m_delegate;
84 sw_corby_channel_will_send_func m_will_send_func;
85 sw_corby_channel_did_read_func m_did_read_func;
86 sw_corby_channel_cleanup_func m_cleanup_func;
88 } * sw_corby_channel_delegate;
92 sw_corby_channel_start_request(
93 sw_corby_channel self,
94 sw_const_corby_profile profile,
95 struct _sw_corby_buffer ** buffer,
98 sw_bool reply_expected);
102 sw_corby_channel_start_reply(
103 sw_corby_channel self,
104 struct _sw_corby_buffer ** buffer,
105 sw_uint32 request_id,
106 sw_corby_reply_status status);
110 sw_corby_channel_send(
111 sw_corby_channel self,
112 struct _sw_corby_buffer * buffer,
113 sw_corby_buffer_observer observer,
114 sw_corby_buffer_written_func func,
119 sw_corby_channel_recv(
120 sw_corby_channel self,
122 struct _sw_corby_message ** message,
123 sw_uint32 * request_id,
126 struct _sw_corby_buffer ** buffer,
132 sw_corby_channel_last_recv_from(
133 sw_corby_channel self,
134 sw_ipv4_address * from,
135 sw_port * from_port);
140 sw_corby_channel self,
141 struct _sw_corby_buffer * buffer);
145 sw_corby_channel_socket(
146 sw_corby_channel self);
150 sw_corby_channel_retain(
151 sw_corby_channel self);
155 sw_corby_channel_set_delegate(
156 sw_corby_channel self,
157 sw_corby_channel_delegate delegate);
160 sw_corby_channel_delegate HOWL_API
161 sw_corby_channel_get_delegate(
162 sw_corby_channel self);
166 sw_corby_channel_set_app_data(
167 sw_corby_channel self,
172 sw_corby_channel_get_app_data(
173 sw_corby_channel self);
177 sw_corby_channel_fina(
178 sw_corby_channel self);