Base protocol codec for comm::Engine. Supported retransmissions
[anna.git] / include / anna / diameter / codec / functions.hpp
index df544e0..770fcc1 100644 (file)
@@ -68,13 +68,19 @@ struct functions {
   static HopByHop getHopByHop(const anna::DataBlock &) throw(anna::RuntimeException);
   static EndToEnd getEndToEnd(const anna::DataBlock &) throw(anna::RuntimeException);
 
+  static bool requestBit(const anna::DataBlock &) throw(anna::RuntimeException);
+  static bool proxiableBit(const anna::DataBlock &) throw(anna::RuntimeException);
+  static bool errorBit(const anna::DataBlock &) throw(anna::RuntimeException);
+  static bool potentiallyReTransmittedMessageBit(const anna::DataBlock &) throw(anna::RuntimeException);
+
   static bool isRequest(const CommandId & cid) throw() { return (cid.second); }
-  static bool isRequest(const anna::DataBlock &) throw(anna::RuntimeException);
+  static bool isRequest(const anna::DataBlock & db) throw(anna::RuntimeException) { return requestBit(db); }
 
   static bool isAnswer(const CommandId & cid) throw() { return (!isRequest(cid)); }
   static bool isAnswer(const anna::DataBlock & db) throw(anna::RuntimeException) { return (!isRequest(db)); }
 
 
+
   /**
   * Decodes a Command Header. This helper cannot check boundaries. start pointer must be a valid command context.
   *
@@ -127,6 +133,7 @@ struct functions {
   // modifiers
   static void setHopByHop(anna::DataBlock &, HopByHop) throw(anna::RuntimeException);
   static void setEndToEnd(anna::DataBlock &, EndToEnd) throw(anna::RuntimeException);
+  static void setPotentiallyReTransmittedMessageBit(const anna::DataBlock & db, bool activate = true) throw(anna::RuntimeException);
 };