00001 #ifndef PROTON_SOURCE_OPTIONS_HPP
00002 #define PROTON_SOURCE_OPTIONS_HPP
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "./internal/export.hpp"
00026 #include "./internal/pn_unique_ptr.hpp"
00027 #include "./duration.hpp"
00028 #include "./source.hpp"
00029
00030 #include <string>
00031
00034
00035 namespace proton {
00036
00044 class source_options {
00045 public:
00047 PN_CPP_EXTERN source_options();
00048
00050 PN_CPP_EXTERN source_options(const source_options&);
00051
00052 PN_CPP_EXTERN ~source_options();
00053
00055 PN_CPP_EXTERN source_options& operator=(const source_options&);
00056
00059 PN_CPP_EXTERN source_options& address(const std::string&);
00060
00064 PN_CPP_EXTERN source_options& dynamic(bool);
00065
00068 PN_CPP_EXTERN source_options& distribution_mode(enum source::distribution_mode);
00069
00072 PN_CPP_EXTERN source_options& durability_mode(enum source::durability_mode);
00073
00076 PN_CPP_EXTERN source_options& timeout(duration);
00077
00080 PN_CPP_EXTERN source_options& expiry_policy(enum source::expiry_policy);
00081
00085 PN_CPP_EXTERN source_options& filters(const source::filter_map&);
00086
00087 private:
00088 void apply(source&) const;
00089
00090 class impl;
00091 internal::pn_unique_ptr<impl> impl_;
00092
00094 friend class source;
00095 friend class sender_options;
00096 friend class receiver_options;
00098 };
00099
00100 }
00101
00102 #endif // PROTON_SOURCE_OPTIONS_HPP