servlib/bundling/BPQBlock.h
changeset 5 1849bf57d910
parent 4 c02ca5a6ab82
child 6 d1f220643814
--- a/servlib/bundling/BPQBlock.h	Wed May 04 15:44:40 2011 +0100
+++ b/servlib/bundling/BPQBlock.h	Fri May 27 18:33:25 2011 +0100
@@ -41,16 +41,30 @@
 
 class BPQBlock {
 public:
+    BPQBlock(Bundle* bundle);
     BPQBlock(BlockInfo* block);
     ~BPQBlock();
 
+    int write_to_buffer(u_char* buf, size_t len);
+
+    /**
+     * 
+     */
+    typedef enum {
+        KIND_QUERY          = 0x00,
+        KIND_RESPONSE       = 0x01,
+    } kind_t;
+
     /// @{ Accessors
-    u_int       kind()          const { return kind_; }
-    u_int       matching_rule() const { return matching_rule_; }
-    u_int       query_len()     const { return query_len_; }
-    const char* query_val()     const { return query_val_; }
+    kind_t          kind()          const { return kind_; }
+    u_int           matching_rule() const { return matching_rule_; }
+    u_int           query_len()     const { return query_len_; }
+    u_char*         query_val()     const { return query_val_; }   
+    u_int           length()        const;
     /// @}
 
+    bool    match(BPQBlock* other)  const;
+
     /// @{ Typedefs and wrappers for the BPQFragment vector and iterators
     typedef std::vector<BPQFragment> BPQFragmentVec;
     typedef BPQFragmentVec::iterator iterator;
@@ -63,12 +77,13 @@
     BPQFragmentVec::const_iterator end()   const { return fragments_.end();   }
     /// @}
 
+private:
+    int initialise(BlockInfo* block);       ///< Wrapper function called by constructors
 
-private:
-    u_int kind_;                ///< Query || Response 
+    kind_t kind_;               ///< Query || Response 
     u_int matching_rule_;       ///< Exact
     u_int query_len_;           ///< Length of the query value
-    char* query_val_;           ///< Query value
+    u_char* query_val_;         ///< Query value
     BPQFragmentVec fragments_;  ///< List of fragments returned
 };