CatalinaTransform

CatalinaTransform — buffer transforms

Synopsis

#define             CATALINA_TRANSFORM_GET_INTERFACE    (obj)
                    CatalinaTransform;
                    CatalinaTransformIface;
gboolean            catalina_transform_read             (CatalinaTransform *transform,
                                                         const gchar *input,
                                                         gsize input_length,
                                                         gchar **output,
                                                         gsize *output_length,
                                                         GError **error);
gboolean            catalina_transform_write            (CatalinaTransform *transform,
                                                         const gchar *input,
                                                         gsize input_length,
                                                         gchar **output,
                                                         gsize *output_length,
                                                         GError **error);

Object Hierarchy

  GInterface
   +----CatalinaTransform

Prerequisites

CatalinaTransform requires GObject.

Known Implementations

CatalinaTransform is implemented by CatalinaZlibTransform.

Description

CatalinaTransform provides a way to transform data buffers on the way to and from storage. A common use-case for this would be to add either compression or encryption.

You can add a transform to a CatalinaStorage for transparent transformations of data to storage.

CatalinaTransform implementations must be thread safe for the interface methods.

CatalinaStorage *storage = catalina_storage_new ();
g_object_set (storage, "transform", catalina_zlib_transform_new (), NULL);

Details

CATALINA_TRANSFORM_GET_INTERFACE()

#define CATALINA_TRANSFORM_GET_INTERFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj),  CATALINA_TYPE_TRANSFORM, CatalinaTransformIface))

obj :


CatalinaTransform

typedef struct _CatalinaTransform CatalinaTransform;


CatalinaTransformIface

typedef struct {
	GTypeInterface parent;

	gboolean (*read)  (CatalinaTransform  *transform,
	                   const gchar        *input,
	                   gsize               input_length,
	                   gchar             **output,
	                   gsize              *output_length,
	                   GError            **error);

	gboolean (*write) (CatalinaTransform  *transform,
	                   const gchar        *input,
	                   gsize               input_length,
	                   gchar             **output,
	                   gsize              *output_length,
	                   GError            **error);
} CatalinaTransformIface;


catalina_transform_read ()

gboolean            catalina_transform_read             (CatalinaTransform *transform,
                                                         const gchar *input,
                                                         gsize input_length,
                                                         gchar **output,
                                                         gsize *output_length,
                                                         GError **error);

Transforms the input buffer into a new stream. If TRUE is returned and output_length is set to zero, then the input buffer should continue to be used.

This method is typically used for operations such as inflating compressed data back into its original form.

Upon failure, FALSE is returned and error is set.

transform :

A CatalinaTransform

input :

A buffer to transform

input_length :

The length of input in bytes

output :

A location to store the resulting buffer

output_length :

A location to store the resulting buffer length

error :

A location for a GError or NULL

Returns :

TRUE on success

catalina_transform_write ()

gboolean            catalina_transform_write            (CatalinaTransform *transform,
                                                         const gchar *input,
                                                         gsize input_length,
                                                         gchar **output,
                                                         gsize *output_length,
                                                         GError **error);

Transforms the input buffer into a new stream. If TRUE is returned and output_length is set to zero, then the input buffer should continue to be used.

This method is typically used for operations such as deflating cleartext into a compressed format.

Upon failure, FALSE is returned and error is set.

transform :

A CatalinaTransform

input :

A buffer to transform

input_length :

The length of input in bytes

output :

A location to store the resulting buffer

output_length :

A location to store the resulting buffer length

error :

A location for a GError or NULL

Returns :

TRUE on success