meanwhile  1.1.0
mw_channel.h
Go to the documentation of this file.
1 
2 /*
3  Meanwhile - Unofficial Lotus Sametime Community Client Library
4  Copyright (C) 2004 Christopher (siege) O'Brien
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Library General Public License for more details.
15 
16  You should have received a copy of the GNU Library General Public
17  License along with this library; if not, write to the Free
18  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20 
21 #ifndef _MW_CHANNEL_H
22 #define _MW_CHANNEL_H
23 
24 
79 #include <time.h>
80 #include "mw_common.h"
81 
82 
83 #ifdef __cplusplus
84 extern "C" {
85 #endif
86 
87 
88 /* place-holders */
89 struct mwCipherInstance;
90 struct mwMsgChannelAccept;
91 struct mwMsgChannelCreate;
92 struct mwMsgChannelDestroy;
93 struct mwMsgChannelSend;
94 struct mwService;
95 struct mwSession;
96 
97 
98 
101 struct mwChannel;
102 
103 
106 struct mwChannelSet;
107 
108 
110 #define MW_MASTER_CHANNEL_ID 0x00000000
111 
112 
114 #define mwChannel_idIsOutgoing(id) \
115  (! (0x80000000 & (id)))
116 
118 #define mwChannel_idIsIncoming(id) \
119  (! mwChannel_idIsOutgoing(id))
120 
122 #define mwChannel_isOutgoing(chan) \
123  mwChannel_idIsOutgoing(mwChannel_getId(chan))
124 
126 #define mwChannel_isIncoming(chan) \
127  mwChannel_idIsIncoming(mwChannel_getId(chan))
128 
129 
139 };
140 
141 
142 #define mwChannel_isState(chan, state) \
143  (mwChannel_getState(chan) == (state))
144 
145 
155 };
156 
157 
164  mwEncrypt_NONE = 0x0000,
166  mwEncrypt_ALL = 0x0002,
167  mwEncrypt_RC2_40 = 0x1000,
168  mwEncrypt_RC2_128 = 0x2000,
169 };
170 
171 
173 struct mwChannelSet *mwChannelSet_new(struct mwSession *);
174 
175 
178 void mwChannelSet_free(struct mwChannelSet *);
179 
180 
183 struct mwChannel *mwChannel_newIncoming(struct mwChannelSet *, guint32 id);
184 
185 
189 
190 
193 struct mwChannel *mwChannel_find(struct mwChannelSet *cs, guint32 chan);
194 
195 
198 guint32 mwChannel_getId(struct mwChannel *);
199 
200 
202 struct mwSession *mwChannel_getSession(struct mwChannel *);
203 
204 
207 guint32 mwChannel_getServiceId(struct mwChannel *);
208 
209 
212 struct mwService *mwChannel_getService(struct mwChannel *);
213 
214 
216 void mwChannel_setService(struct mwChannel *chan, struct mwService *srvc);
217 
218 
222 gpointer mwChannel_getServiceData(struct mwChannel *chan);
223 
224 
228 void mwChannel_setServiceData(struct mwChannel *chan,
229  gpointer data, GDestroyNotify clean);
230 
231 
232 void mwChannel_removeServiceData(struct mwChannel *chan);
233 
234 
235 guint32 mwChannel_getProtoType(struct mwChannel *chan);
236 
237 
238 void mwChannel_setProtoType(struct mwChannel *chan, guint32 proto_type);
239 
240 
241 guint32 mwChannel_getProtoVer(struct mwChannel *chan);
242 
243 
244 void mwChannel_setProtoVer(struct mwChannel *chan, guint32 proto_ver);
245 
246 
255 guint16 mwChannel_getEncryptPolicy(struct mwChannel *chan);
256 
257 
258 guint32 mwChannel_getOptions(struct mwChannel *chan);
259 
260 
261 void mwChannel_setOptions(struct mwChannel *chan, guint32 options);
262 
263 
266 struct mwLoginInfo *mwChannel_getUser(struct mwChannel *chan);
267 
268 
271 
272 
275 
276 
280 
281 
285  struct mwCipherInstance *ci);
286 
287 
291 
292 
295 void mwChannel_selectCipherInstance(struct mwChannel *chan,
296  struct mwCipherInstance *ci);
297 
298 
299 struct mwCipherInstance *
301 
302 
305 
306 
308 gpointer mwChannel_getStatistic(struct mwChannel *chan,
309  enum mwChannelStatField stat);
310 
311 
322 int mwChannel_create(struct mwChannel *chan);
323 
324 
328 int mwChannel_accept(struct mwChannel *chan);
329 
330 
338 int mwChannel_destroy(struct mwChannel *chan, guint32 reason,
339  struct mwOpaque *data);
340 
341 
344 int mwChannel_send(struct mwChannel *chan, guint32 msg_type,
345  struct mwOpaque *msg);
346 
347 
350 int mwChannel_sendEncrypted(struct mwChannel *chan,
351  guint32 msg_type, struct mwOpaque *msg,
352  gboolean encrypt);
353 
354 
356 void mwChannel_recvCreate(struct mwChannel *chan,
357  struct mwMsgChannelCreate *msg);
358 
359 
361 void mwChannel_recvAccept(struct mwChannel *chan,
362  struct mwMsgChannelAccept *msg);
363 
364 
366 void mwChannel_recvDestroy(struct mwChannel *chan,
367  struct mwMsgChannelDestroy *msg);
368 
369 
371 void mwChannel_recv(struct mwChannel *chan, struct mwMsgChannelSend *msg);
372 
373 
374 #ifdef __cplusplus
375 }
376 #endif
377 
378 
379 #endif /* _MW_CHANNEL_H */
380 
Definition: mw_common.h:123
struct mwOpaque * mwChannel_getAddtlAccept(struct mwChannel *)
direct reference to the accept addtl information for a channel
void mwChannel_removeServiceData(struct mwChannel *chan)
guint16 mwChannel_getEncryptPolicy(struct mwChannel *chan)
Channel encryption policy.
void mwChannel_recvCreate(struct mwChannel *chan, struct mwMsgChannelCreate *msg)
pass a create message to a channel for handling
guint32 mwChannel_getServiceId(struct mwChannel *)
get the ID of the service for a channel.
void mwChannel_addSupportedCipherInstance(struct mwChannel *chan, struct mwCipherInstance *ci)
add a cipher instance to a channel's list of supported ciphers.
struct mwCipherInstance * mwChannel_getCipherInstance(struct mwChannel *chan)
Definition: mw_message.h:183
mwEncryptPolicy
Policy for a channel, dictating what sort of encryption should be used, if any, and when...
Definition: mw_channel.h:163
total send-on-chan messages received
Definition: mw_channel.h:150
int mwChannel_create(struct mwChannel *chan)
Formally open a channel.
Definition: mw_message.h:210
void mwChannel_selectCipherInstance(struct mwChannel *chan, struct mwCipherInstance *ci)
select a cipher instance for a channel.
encrypt whatever you want
Definition: mw_channel.h:165
unknown state, or error determining state
Definition: mw_channel.h:138
mwChannelStatField
channel statistic fields.
Definition: mw_channel.h:148
int mwChannel_sendEncrypted(struct mwChannel *chan, guint32 msg_type, struct mwOpaque *msg, gboolean encrypt)
Compose a send-on-channel message, and if encrypt is TRUE, encrypt it as per the channel's specificat...
encrypt all, any cipher
Definition: mw_channel.h:166
encrypt none
Definition: mw_channel.h:164
struct mwLoginInfo * mwChannel_getUser(struct mwChannel *chan)
User at the other end of the channel.
An instance of a cipher.
Definition: mw_cipher.h:105
encrypt all, RC2/40 cipher
Definition: mw_channel.h:167
struct mwOpaque * mwChannel_getAddtlCreate(struct mwChannel *)
direct reference to the create addtl information for a channel
Collection of channels.
Definition: mw_channel.h:101
GList * mwChannel_getSupportedCipherInstances(struct mwChannel *chan)
the list of supported ciphers for a channel.
struct mwChannel * mwChannel_newIncoming(struct mwChannelSet *, guint32 id)
Create an incoming channel with the given channel id.
enum mwChannelState mwChannel_getState(struct mwChannel *)
get the state of a channel
int mwChannel_accept(struct mwChannel *chan)
Formally accept an incoming channel.
guint32 mwChannel_getOptions(struct mwChannel *chan)
total bytes received, post-decryption
Definition: mw_channel.h:152
Represents a Sametime client session.
guint32 mwChannel_getProtoVer(struct mwChannel *chan)
guint32 mwChannel_getId(struct mwChannel *)
get the ID for a channel.
encrypt all, RC2/128 cipher
Definition: mw_channel.h:168
int mwChannel_destroy(struct mwChannel *chan, guint32 reason, struct mwOpaque *data)
Destroy a channel.
Common data types and functions for handling those types.
time when channel was closed
Definition: mw_channel.h:154
int mwChannel_send(struct mwChannel *chan, guint32 msg_type, struct mwOpaque *msg)
Compose a send-on-channel message, encrypt it as per the channel's specification, and send it...
void mwChannel_populateSupportedCipherInstances(struct mwChannel *chan)
automatically adds instances of all ciphers in the session to the list of supported ciphers for a cha...
gpointer mwChannel_getServiceData(struct mwChannel *chan)
get service-specific data.
struct mwChannel * mwChannel_newOutgoing(struct mwChannelSet *)
Create an outgoing channel.
Definition: mw_message.h:238
A service is the recipient of sendOnCnl messages sent over channels marked with the corresponding ser...
Definition: mw_service.h:123
channel is waiting for accept
Definition: mw_channel.h:134
total send-on-chan messages sent
Definition: mw_channel.h:149
Represents a channel to a service.
Definition: mw_channel.h:95
channel is being destroyed
Definition: mw_channel.h:136
channel is accepted and open
Definition: mw_channel.h:135
guint32 mwChannel_getProtoType(struct mwChannel *chan)
mwChannelState
channel status
Definition: mw_channel.h:131
void mwChannel_setOptions(struct mwChannel *chan, guint32 options)
struct mwChannelSet * mwChannelSet_new(struct mwSession *)
Allocate and initialize a channel set for a session.
A length of binary data, not null-terminated.
Definition: mw_common.h:79
void mwChannel_recvAccept(struct mwChannel *chan, struct mwMsgChannelAccept *msg)
pass an accept message to a channel for handling
Definition: mw_message.h:224
void mwChannel_setServiceData(struct mwChannel *chan, gpointer data, GDestroyNotify clean)
set service-specific data.
struct mwSession * mwChannel_getSession(struct mwChannel *)
get the session for a channel.
void mwChannel_recvDestroy(struct mwChannel *chan, struct mwMsgChannelDestroy *msg)
pass a destroy message to a channel for handling
channel is newly allocated, in the pool
Definition: mw_channel.h:132
void mwChannel_setProtoType(struct mwChannel *chan, guint32 proto_type)
void mwChannelSet_free(struct mwChannelSet *)
Clear and deallocate a channel set.
total bytes sent, pre-encryption
Definition: mw_channel.h:151
void mwChannel_recv(struct mwChannel *chan, struct mwMsgChannelSend *msg)
Feed data into a channel.
channel is being prepared, out of the pool
Definition: mw_channel.h:133
gpointer mwChannel_getStatistic(struct mwChannel *chan, enum mwChannelStatField stat)
obtain the value for a statistic field as a gpointer
channel is being destroyed due to error
Definition: mw_channel.h:137
time when channel was opened
Definition: mw_channel.h:153
void mwChannel_setProtoVer(struct mwChannel *chan, guint32 proto_ver)
struct mwChannel * mwChannel_find(struct mwChannelSet *cs, guint32 chan)
Obtain a reference to a channel by its id.
void mwChannel_setService(struct mwChannel *chan, struct mwService *srvc)
associate a channel with an owning service
struct mwService * mwChannel_getService(struct mwChannel *)
get the service for a channel.