libpurple/xfer.h

changeset 39672
9bcf5ddff885
parent 39659
e4dfb99b0cef
parent 39669
bab07ecb9330
child 39823
36acf9e724a5
--- a/libpurple/xfer.h	Fri Jul 05 02:22:57 2019 +0000
+++ b/libpurple/xfer.h	Wed Jul 10 06:30:05 2019 +0000
@@ -29,13 +29,6 @@
  * @see_also: <link linkend="chapter-signals-xfer">File Transfer signals</link>
  */
 
-#define PURPLE_TYPE_XFER             (purple_xfer_get_type())
-#define PURPLE_XFER(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_XFER, PurpleXfer))
-#define PURPLE_XFER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_XFER, PurpleXferClass))
-#define PURPLE_IS_XFER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_XFER))
-#define PURPLE_IS_XFER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_XFER))
-#define PURPLE_XFER_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_XFER, PurpleXferClass))
-
 #define PURPLE_TYPE_XFER_UI_OPS      (purple_xfer_ui_ops_get_type())
 
 #define PURPLE_TYPE_PROTOCOL_XFER           (purple_protocol_xfer_get_type())
@@ -46,9 +39,6 @@
 /**************************************************************************/
 /* Data Structures                                                        */
 /**************************************************************************/
-typedef struct _PurpleXfer PurpleXfer;
-typedef struct _PurpleXferClass PurpleXferClass;
-
 typedef struct _PurpleXferUiOps PurpleXferUiOps;
 
 typedef struct _PurpleProtocolXfer PurpleProtocolXfer;
@@ -73,7 +63,6 @@
 	PURPLE_XFER_TYPE_UNKNOWN = 0,
 	PURPLE_XFER_TYPE_SEND,
 	PURPLE_XFER_TYPE_RECEIVE
-
 } PurpleXferType;
 
 /**
@@ -101,6 +90,12 @@
 	PURPLE_XFER_STATUS_CANCEL_REMOTE
 } PurpleXferStatus;
 
+G_BEGIN_DECLS
+
+#define PURPLE_TYPE_XFER             (purple_xfer_get_type())
+
+G_DECLARE_DERIVABLE_TYPE(PurpleXfer, purple_xfer, PURPLE, XFER, GObject)
+
 /**
  * PurpleXferUiOps:
  * @new_xfer: UI op that's called after a new transfer is created.
@@ -160,23 +155,17 @@
 };
 
 /**
- * PurpleXfer:
- * @ui_data: The UI data associated with this file transfer. This is a
- *           convenience field provided to the UIs -- it is not used by the
- *           libpurple core.
- *
- * A core representation of a file transfer.
- */
-struct _PurpleXfer
-{
-	GObject gparent;
-
-	/*< public >*/
-	gpointer ui_data;
-};
-
-/**
  * PurpleXferClass:
+ * @init: Called when the file transfer is accepted by the user.  Must call
+ *   purple_xfer_start() and must be implemented.
+ * @request_denied: Called when the file transfer is denied by the other side.
+ * @start: Called to start the file transfer.
+ * @end: Called when the file transfer should end.
+ * @cancel_send: Handler for cancelling a sending file transfer.
+ * @cancel_recv: Handler for cancelling a receiving file transfer.
+ * @read: Called when reading data from the file transfer.
+ * @write: Called when writing data to the file transfer.
+ * @ack: Called when a file transfer is acknowledged.
  *
  * Base class for all #PurpleXfer's
  */
@@ -184,11 +173,18 @@
 {
 	GObjectClass parent_class;
 
+	void (*init)(PurpleXfer *xfer);
+	void (*request_denied)(PurpleXfer *xfer);
+	void (*start)(PurpleXfer *xfer);
+	void (*end)(PurpleXfer *xfer);
+	void (*cancel_send)(PurpleXfer *xfer);
+	void (*cancel_recv)(PurpleXfer *xfer);
+	gssize (*read)(PurpleXfer *xfer, guchar **buffer, gsize size);
+	gssize (*write)(PurpleXfer *xfer, const guchar *buffer, gsize size);
+	void (*ack)(PurpleXfer *xfer, const guchar *buffer, gsize size);
+
 	/*< private >*/
-	void (*_purple_reserved1)(void);
-	void (*_purple_reserved2)(void);
-	void (*_purple_reserved3)(void);
-	void (*_purple_reserved4)(void);
+	gpointer reserved[4];
 };
 
 /**
@@ -218,20 +214,11 @@
 			PurpleConnection *connection, const gchar *who);
 };
 
-G_BEGIN_DECLS
-
 /**************************************************************************/
 /* File Transfer API                                                      */
 /**************************************************************************/
 
 /**
- * purple_xfer_get_type:
- *
- * Returns: The #GType for the #PurpleXfer object.
- */
-GType purple_xfer_get_type(void);
-
-/**
  * purple_xfer_new:
  * @account: The account sending or receiving the file.
  * @type:    The type of file transfer.
@@ -264,7 +251,7 @@
  *
  * Called if the user accepts the file transfer request.
  */
-void purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename);
+void purple_xfer_request_accepted(PurpleXfer *xfer, const gchar *filename);
 
 /**
  * purple_xfer_request_denied:
@@ -593,94 +580,6 @@
 PurpleXferUiOps *purple_xfer_get_ui_ops(PurpleXfer *xfer);
 
 /**
- * purple_xfer_set_read_fnc:
- * @xfer: The file transfer.
- * @fnc:  The read function.
- *
- * Sets the read function for the file transfer.
- */
-void purple_xfer_set_read_fnc(PurpleXfer *xfer,
-		gssize (*fnc)(guchar **, size_t, PurpleXfer *));
-
-/**
- * purple_xfer_set_write_fnc:
- * @xfer: The file transfer.
- * @fnc:  The write function.
- *
- * Sets the write function for the file transfer.
- */
-void purple_xfer_set_write_fnc(PurpleXfer *xfer,
-		gssize (*fnc)(const guchar *, size_t, PurpleXfer *));
-
-/**
- * purple_xfer_set_ack_fnc:
- * @xfer: The file transfer.
- * @fnc:  The acknowledge function.
- *
- * Sets the acknowledge function for the file transfer.
- */
-void purple_xfer_set_ack_fnc(PurpleXfer *xfer,
-		void (*fnc)(PurpleXfer *, const guchar *, size_t));
-
-/**
- * purple_xfer_set_request_denied_fnc:
- * @xfer: The file transfer.
- * @fnc: The request denied protocol callback.
- *
- * Sets the function to be called if the request is denied.
- */
-void purple_xfer_set_request_denied_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
-
-/**
- * purple_xfer_set_init_fnc:
- * @xfer: The file transfer.
- * @fnc:  The transfer initialization function.
- *
- * Sets the transfer initialization function for the file transfer.
- *
- * This function is required, and must call purple_xfer_start() with
- * the necessary parameters. This will be called if the file transfer
- * is accepted by the user.
- */
-void purple_xfer_set_init_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
-
-/**
- * purple_xfer_set_start_fnc:
- * @xfer: The file transfer.
- * @fnc:  The start transfer function.
- *
- * Sets the start transfer function for the file transfer.
- */
-void purple_xfer_set_start_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
-
-/**
- * purple_xfer_set_end_fnc:
- * @xfer: The file transfer.
- * @fnc:  The end transfer function.
- *
- * Sets the end transfer function for the file transfer.
- */
-void purple_xfer_set_end_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
-
-/**
- * purple_xfer_set_cancel_send_fnc:
- * @xfer: The file transfer.
- * @fnc:  The cancel send function.
- *
- * Sets the cancel send function for the file transfer.
- */
-void purple_xfer_set_cancel_send_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
-
-/**
- * purple_xfer_set_cancel_recv_fnc:
- * @xfer: The file transfer.
- * @fnc:  The cancel receive function.
- *
- * Sets the cancel receive function for the file transfer.
- */
-void purple_xfer_set_cancel_recv_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *));
-
-/**
  * purple_xfer_read:
  * @xfer:   The file transfer.
  * @buffer: The buffer that will be created to contain the data.
@@ -883,25 +782,6 @@
 void purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats);
 
 /**
- * purple_xfer_set_protocol_data:
- * @xfer:			The file transfer.
- * @proto_data:	The protocol data to set for the file transfer.
- *
- * Sets the protocol data for a file transfer.
- */
-void purple_xfer_set_protocol_data(PurpleXfer *xfer, gpointer proto_data);
- 
-/**
- * purple_xfer_get_protocol_data:
- * @xfer:			The file transfer.
- *
- * Gets the protocol data for a file transfer.
- *
- * Returns: The protocol data for the file transfer.
- */
-gpointer purple_xfer_get_protocol_data(PurpleXfer *xfer);
-
-/**
  * purple_xfer_set_ui_data:
  * @xfer:			The file transfer.
  * @ui_data:		A pointer to associate with this file transfer.

mercurial