diff options
Diffstat (limited to 'Source/charon/generator.h')
-rw-r--r-- | Source/charon/generator.h | 55 |
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 */ |