- HopByHop getHopByHop() const throw();
- EndToEnd getEndToEnd() const throw();
- HopByHop getRequestHopByHop() const throw() { return a_requestHopByHop; }
- EndToEnd getRequestEndToEnd() const throw() { return a_requestEndToEnd; }
- void setRequestHopByHop(HopByHop hbh) throw() { a_requestHopByHop = hbh; }
- void setRequestEndToEnd(EndToEnd ete) throw() { a_requestEndToEnd = ete; }
- CommandId getCommandId(bool &isRequest) const throw();
- CommandId getCommandId() const throw() { bool dummy; return getCommandId(dummy); }
+ HopByHop getHopByHop() const ;
+ EndToEnd getEndToEnd() const ;
+ HopByHop getRequestHopByHop() const { return a_requestHopByHop; }
+ EndToEnd getRequestEndToEnd() const { return a_requestEndToEnd; }
+ void setRequestHopByHop(HopByHop hbh) { a_requestHopByHop = hbh; }
+ void setRequestEndToEnd(EndToEnd ete) { a_requestEndToEnd = ete; }
+ CommandId getCommandId(bool &isRequest) const ;
+ CommandId getCommandId() const { bool dummy; return getCommandId(dummy); }
+ ApplicationId getApplicationId() const ;
+
+ bool fixRequestSequence(HopByHop hbh, EndToEnd ete) ;
+
+ // http://diameter-protocol.blogspot.com.es/2011/05/diameter-message-structure-and-message.html
+
+ /**
+ * In general, diameter nodes will sequence the End-To-End value when sending new requests.
+ * A 'false' value stands for intermediate agents (must keep end-to-end during 4 minutes even upon reboots).
+ */
+ bool endToEndSequenced() const { return a_endToEndSequenced; }
+
+ /**
+ * By default, the diameter::comm message will sequence the end-to-end increasing the initial value created
+ * during session establishment. Anyway you could change this behaviour with this method.
+ *
+ * @see sequenceEndToEnd
+ */
+ void forwardEndToEnd() { a_endToEndSequenced = false; }
+
+ /**
+ * By default, the diameter::comm message will sequence the end-to-end increasing the initial value created
+ * during session establishment. Anyway you could set again this behaviour with this method.
+ *
+ * @see forwardEndToEnd
+ */
+ void sequenceEndToEnd() { a_endToEndSequenced = true; }