00001 #ifndef _IT_BUS_PDK_WSRM_CONFIG_CONTEXT_H_
00002 #define _IT_BUS_PDK_WSRM_CONFIG_CONTEXT_H_
00003
00004
00005
00006 #ifndef IT_MINIMISE_INCLUDES
00007 #include <it_bus_pdk/context.h>
00008 #endif
00009
00010 #include <it_bus/api_defines.h>
00011 #include <it_bus_pdk/context_base.h>
00012 #include <it_bus_pdk/context_attrs/wsaddressing_2004_xsdTypes.h>
00013
00014 namespace IT_Bus
00015 {
00016 enum DeliveryAssurancePolicy
00017 {
00018 ExactlyOnceInOrder,
00019 ExactlyOnceConcurrent,
00020 ExactlyOnceReceivedOrder
00021 };
00022
00023 class IT_CONTEXT_ATTRIBUTE_API WSRMConfigurationContext
00024 : public IT_Bus::Context
00025 {
00026 public:
00027
00028 void
00029 set_wsrm_acknowledgement_uri(
00030 const WS_Addressing_2004::AttributedURI& wsrm_acknowledgement_uri
00031 );
00032
00033 const WS_Addressing_2004::AttributedURI&
00034 get_wsrm_acknowledgement_uri();
00035
00036 void
00037 use_wsa_replyto_endpoint_for_wsrm_acknowledgement();
00038
00039 bool
00040 need_use_wsa_replyto_endpoint_for_wsrm_acknowledgement();
00041
00042 void
00043 use_server_endpoint_for_wsrm_acknowledgement();
00044
00045 bool
00046 need_use_server_endpoint_for_wsrm_acknowledgement();
00047
00048 void
00049 set_base_retransmission_interval(
00050 unsigned long base_retransmission_interval
00051 );
00052
00053 unsigned long
00054 get_base_retransmission_interval();
00055
00056 void
00057 disable_exponential_backoff();
00058
00059 bool
00060 is_exponential_backoff_disabled();
00061
00062 void
00063 set_max_unacked_messages_threshold(
00064 long threshold
00065 );
00066
00067 long
00068 get_max_unacked_messages_threshold();
00069
00070 void
00071 set_acknowledgement_interval(
00072 unsigned long acknowledgement_interval
00073 );
00074
00075 unsigned long
00076 get_acknowledgement_interval();
00077
00078 void
00079 set_max_messages_per_sequence(
00080 long max_messages_per_sequence
00081 );
00082
00083 long
00084 get_max_messages_per_sequence();
00085
00086 void
00087 set_delivery_assurance_policy(
00088 DeliveryAssurancePolicy delivery_policy
00089 );
00090
00091 DeliveryAssurancePolicy
00092 get_delivery_assurance_policy();
00093
00094 void
00095 enable_per_thread_sequence_scope();
00096
00097 bool
00098 is_per_thread_sequence_scope_enabled();
00099
00100 void
00101 enable_manual_persistent_message_eviction();
00102
00103 bool
00104 is_manual_persistent_message_eviction_enabled();
00105
00106 void
00107 set_max_retransmission_attempts(
00108 long max_retransmission_attempts
00109 );
00110
00111 long
00112 get_max_retransmission_attempts();
00113
00114 WSRMConfigurationContext();
00115
00116 WSRMConfigurationContext&
00117 operator =(
00118 const WSRMConfigurationContext& rhs
00119 );
00120
00121 WSRMConfigurationContext(
00122 const WSRMConfigurationContext& rhs
00123 );
00124
00125 ~WSRMConfigurationContext();
00126
00127 private:
00128
00129 WS_Addressing_2004::AttributedURI m_wsrm_acknowledgement_uri;
00130 bool m_acksto_sameas_wsa_replyto;
00131 bool m_use_server_endpoint_for_acksto;
00132 unsigned long m_base_retransmission_interval;
00133 bool m_exponential_backoff_enabled;
00134 long m_max_unacked_messages_threshold;
00135 unsigned long m_acknowledgement_interval;
00136 long m_max_messages_per_sequence;
00137 DeliveryAssurancePolicy m_delivery_assurance_policy;
00138 bool m_per_thread_sequence_scope_enabled;
00139 bool m_manual_message_eviction_enabled;
00140 long m_max_retransmission_attempts;
00141 };
00142
00143 class IT_CONTEXT_ATTRIBUTE_API WSRMIncomingMessageContext
00144 : public IT_Bus::Context
00145 {
00146 public:
00147
00148 virtual void
00149 evict_from_persistent_store() = 0;
00150 };
00151 }
00152
00153 #endif
00154