1 #ifndef __GSK_STREAM_LISTENER_H_ 2 #define __GSK_STREAM_LISTENER_H_ 3 4 #include "gskstream.h" 5 6 G_BEGIN_DECLS 7 8 typedef struct _GskStreamListener GskStreamListener; 9 typedef struct _GskStreamListenerClass GskStreamListenerClass; 10 11 GType gsk_stream_listener_get_type(void) G_GNUC_CONST; 12 #define GSK_TYPE_STREAM_LISTENER (gsk_stream_listener_get_type ()) 13 #define GSK_STREAM_LISTENER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSK_TYPE_STREAM_LISTENER, GskStreamListener)) 14 #define GSK_STREAM_LISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSK_TYPE_STREAM_LISTENER, GskStreamListenerClass)) 15 #define GSK_STREAM_LISTENER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSK_TYPE_STREAM_LISTENER, GskStreamListenerClass)) 16 #define GSK_IS_STREAM_LISTENER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSK_TYPE_STREAM_LISTENER)) 17 #define GSK_IS_STREAM_LISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSK_TYPE_STREAM_LISTENER)) 18 19 /* try and handle a newly opened stream socket (is_open) */ 20 typedef gboolean (*GskStreamListenerAcceptFunc)(GskStream *stream, 21 gpointer data, 22 GError **error); 23 24 /* handle an error accepting the latest connection */ 25 typedef void (*GskStreamListenerErrorFunc) (GError *err, 26 gpointer data); 27 28 /* --- structures --- */ 29 struct _GskStreamListenerClass 30 { 31 GObjectClass object_class; 32 }; 33 struct _GskStreamListener 34 { 35 GObject object; 36 37 GskStreamListenerAcceptFunc accept_func; 38 GskStreamListenerErrorFunc error_func; 39 gpointer data; 40 GDestroyNotify destroy; 41 42 GError *last_error; 43 }; 44 45 /* --- prototypes --- */ 46 void gsk_stream_listener_handle_accept (GskStreamListener *listener, 47 GskStreamListenerAcceptFunc func, 48 GskStreamListenerErrorFunc err_func, 49 gpointer data, 50 GDestroyNotify destroy); 51 52 /* protected */ 53 void gsk_stream_listener_notify_accepted (GskStreamListener *stream_listener, 54 GskStream *new_stream); 55 void gsk_stream_listener_notify_error (GskStreamListener *stream_listener, 56 GError *error); 57 58 G_END_DECLS 59 60 #endif 61