/*-
 * $Id: rr-message.h,v 1.13 2002/12/12 14:59:53 jonas Exp $
 *
 * See the file LICENSE for redistribution information. 
 * If you have not received a copy of the license, please contact CodeFactory
 * by email at info@codefactory.se, or on the web at http://www.codefactory.se/
 * You may also write to: CodeFactory AB, SE-903 47, Umeå, Sweden.
 *
 * Copyright (c) 2002 Jonas Borgström <jonas@codefactory.se>
 * Copyright (c) 2002 Daniel Lundin   <daniel@codefactory.se>
 * Copyright (c) 2002 CodeFactory AB.  All rights reserved.
 */

#ifndef __RR_MESSAGE_H__
#define __RR_MESSAGE_H__

typedef struct _RRMessage RRMessage;
typedef struct _RRMessageClass RRMessageClass;

#include <librr/rr-channel.h>
#include <librr/rr-frame.h>

G_BEGIN_DECLS

#define RR_TYPE_MESSAGE (rr_message_get_type ())
#define RR_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), RR_TYPE_MESSAGE, RRMessage))
#define RR_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RR_TYPE_MESSAGE, RRMessageClass))
#define RR_IS_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), RR_TYPE_MESSAGE))
#define RR_IS_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RR_TYPE_MESSAGE))
#define RR_MESSAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RR_TYPE_MESSAGE, RRMessageClass))

struct _RRMessage {
	GObject parent_object;
	RRChannel *channel;

	RRFrameType type;
	/* <private> */
	GSList *frame_list;
	gboolean aggregate_frames;

	gint32 msgno, ansno;
};

struct _RRMessageClass {
	GObjectClass parent_class;

	RRFrame *(* get_frame)     (RRMessage *message, gsize max_size);
	gboolean (* process_frame) (RRMessage *message, RRFrame *frame, 
				    GError **error);
};

GType    rr_message_get_type      (void);

void     rr_message_set_aggregate (RRMessage *message, gboolean aggregate);
gboolean rr_message_get_aggregate (RRMessage *message);

RRFrame *rr_message_get_frame     (RRMessage *message, gsize max_size);

gboolean rr_message_process_frame (RRMessage *message, RRFrame *frame, 
				   GError **error);

void rr_message_set_channel       (RRMessage *message, RRChannel *channel);

G_END_DECLS

#endif /* __RR_MESSAGE_H__ */


syntax highlighted by Code2HTML, v. 0.9.1