aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/generator.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/generator.h')
-rw-r--r--Source/charon/generator.h55
1 files changed, 49 insertions, 6 deletions
diff --git a/Source/charon/generator.h b/Source/charon/generator.h
index cfd47ae7a..cf643fc5f 100644
--- a/Source/charon/generator.h
+++ b/Source/charon/generator.h
@@ -38,32 +38,75 @@
#define GENERATOR_DATA_BUFFER_INCREASE_VALUE 1000
/**
+ * Used for generator operations internaly to store a generator context.
+ */
+typedef struct generator_context_s generator_context_t;
+
+struct generator_context_s {
+ /**
+ * @brief Destroys a generator_infos_t object and its containing buffer
+ *
+ * @param generator_infos_t generator_infos_t object
+ * @return always SUCCESSFUL
+ */
+ status_t (*destroy) (generator_context_t *this);
+};
+
+
+
+/**
*A generator_t object which generates payloads of specific type.
*/
typedef struct generator_s generator_t;
struct generator_s {
+
+ /**
+ * Creates a generator_context_t object holding necessary informations
+ * for generating (buffer, data_struct, etc).
+ *
+ * After using, this context has to get destroyed!
+ *
+ * @param data_struct data struct where the specific payload informations are stored
+ * @return
+ * - pointer to created generator_infos_t object
+ * - NULL if memory allocation failed
+ */
+ generator_context_t * (*create_context) (generator_t *this);
/**
* @brief Generates a specific payload from given data struct.
*
* Remember: Header and substructures are also handled as payloads.
*
- * @param generator generator_t object
- * @param payload_type payload type to generate using the given data struct
- * @param[in] data_struct data struct where the needed data for generating are stored
- * @param[out] output pointer to a chunk_t where the data are generated to
+ * @param this generator_t object
+ * @param payload_type payload type to generate using the given data struct
+ * @param[in] data_struct data struct where the needed data for generating are stored
+ * @param generator_context generator context to use when generating
* @return
* - SUCCESSFUL if succeeded
* - NOT_SUPPORTED if payload_type is not supported
* - OUT_OF_RES if out of ressources
*/
- status_t (*generate_payload) (generator_t *this,payload_type_t payload_type,void * data_struct, chunk_t *data);
+ status_t (*generate_payload) (generator_t *this,payload_type_t payload_type,void * data_struct,generator_context_t *generator_context);
+
+ /**
+ * Writes all generated data of current context to a chunk
+ *
+ * @param this generator_t object
+ * @param generator_context generator context to use when generating
+ * * @param[out] data chunk to write the data to
+ * @return
+ * @return
+ * - SUCCESSFUL if succeeded
+ * - OUT_OF_RES otherwise
+ */
+ status_t (*write_to_chunk) (generator_t *this,generator_context_t *generator_context, chunk_t *data);
/**
* @brief Destroys a generator_t object.
*
- * @param generator generator_t object
+ * @param this generator_t object
*
* @return always success
*/