00001 #ifndef PROTON_SOURCE_HPP
00002 #define PROTON_SOURCE_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 "./value.hpp"
00026 #include "./terminus.hpp"
00027 #include "./codec/map.hpp"
00028
00029 #include "./internal/cached_map.hpp"
00030 #include "./internal/export.hpp"
00031 #include "./internal/object.hpp"
00032
00033 #include <string>
00034
00035 namespace proton {
00036
00037 class sender;
00038 class receiver;
00039
00043 class source : public terminus {
00044 public:
00047 class filter_map : public internal::cached_map<symbol, value> {};
00048
00050 source() : terminus() {}
00051
00053 enum distribution_mode {
00054
00055
00057 UNSPECIFIED = PN_DIST_MODE_UNSPECIFIED,
00059 COPY = PN_DIST_MODE_COPY,
00061 MOVE = PN_DIST_MODE_MOVE
00062 };
00063
00064 using terminus::durability_mode;
00065 using terminus::expiry_policy;
00066
00068 PN_CPP_EXTERN std::string address() const;
00069
00071 PN_CPP_EXTERN enum distribution_mode distribution_mode() const;
00072
00074 PN_CPP_EXTERN filter_map filters() const;
00075
00076 private:
00077 source(pn_terminus_t* t);
00078 source(const sender&);
00079 source(const receiver&);
00080
00082 friend class proton::internal::factory<source>;
00083 friend class sender;
00084 friend class receiver;
00086 };
00087
00088 }
00089
00090 #endif // PROTON_SOURCE_HPP