--- 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
};