generator now has its generator_context which is used to generate more

then one payload in sequence...
This commit is contained in:
Jan Hutter
2005-11-10 17:17:46 +00:00
parent c64d7032fe
commit 110dc83a3c
7 changed files with 417 additions and 126 deletions
+49 -6
View File
@@ -37,33 +37,76 @@
*/
#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
*/