Merge branch 'nm-gtk4'
[strongswan.git] / src / libcharon / encoding / generator.h
index 90a43de..63d55f4 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2005-2009 Martin Willi
  * Copyright (C) 2005 Jan Hutter
- * Hochschule fuer Technik Rapperswil
+ * HSR Hochschule fuer Technik Rapperswil
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -35,8 +35,8 @@ typedef struct generator_t generator_t;
  * method. The generated bytes are appended. After all payloads are added,
  * the write_to_chunk method writes out all generated data since
  * the creation of the generator.
- * The generater uses a set of encoding rules, which it can get from
- * the supplied payload. With this rules, the generater can generate
+ * The generator uses a set of encoding rules, which it can get from
+ * the supplied payload. With this rules, the generator can generate
  * the payload and all substructures automatically.
  */
 struct generator_t {
@@ -44,18 +44,20 @@ struct generator_t {
        /**
         * Generates a specific payload from given payload object.
         *
-        * Remember: Header and substructures are also handled as payloads.
-        *
         * @param payload               interface payload_t implementing object
         */
        void (*generate_payload) (generator_t *this,payload_t *payload);
 
        /**
-        * Writes all generated data of the generator to a chunk.
+        * Return a chunk for the currently generated data.
+        *
+        * The returned length pointer must be filled in with the length of
+        * the generated chunk (in network order).
         *
-        * @param data          chunk to write the data to
+        * @param lenpos                receives a pointer to fill in length value
+        * @param return                chunk to internal buffer.
         */
-       void (*write_to_chunk) (generator_t *this,chunk_t *data);
+       chunk_t (*get_chunk) (generator_t *this, uint32_t **lenpos);
 
        /**
         * Destroys a generator_t object.
@@ -70,4 +72,12 @@ struct generator_t {
  */
 generator_t *generator_create(void);
 
+/**
+ * Constructor to create a generator that does not log any debug messages > 1.
+ *
+ * @return generator_t object.
+ */
+generator_t *generator_create_no_dbg(void);
+
+
 #endif /** GENERATOR_H_ @}*/