summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen D. Huston <shuston@apache.org>2009-02-27 18:34:26 +0000
committerStephen D. Huston <shuston@apache.org>2009-02-27 18:34:26 +0000
commita2ff4d04c0958a19859f7a621d641aa10e2bdea7 (patch)
treeb69d1955de0482b52aea3d260c30ae49ba00d6b3
parentf977ae07c2770e59a30bcd7b6b632c0c34492754 (diff)
downloadqpid-python-a2ff4d04c0958a19859f7a621d641aa10e2bdea7.tar.gz
Apply code and generator patches from QPID-1673. Adds import/export decl to allow building DLLs on Windows.
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qpid-1673@748631 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-xqpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb3
-rwxr-xr-xqpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb3
-rwxr-xr-xqpid/cpp/rubygen/framing.0-10/Proxy.rb6
-rw-r--r--qpid/cpp/rubygen/framing.0-10/Session.rb10
-rwxr-xr-xqpid/cpp/rubygen/framing.0-10/constants.rb3
-rw-r--r--qpid/cpp/rubygen/framing.0-10/structs.rb27
-rw-r--r--qpid/cpp/src/Makefile.am4
-rwxr-xr-xqpid/cpp/src/qpid/Address.h6
-rw-r--r--qpid/cpp/src/qpid/CommonImportExport.h33
-rw-r--r--qpid/cpp/src/qpid/DataDir.h5
-rw-r--r--qpid/cpp/src/qpid/Exception.h16
-rw-r--r--qpid/cpp/src/qpid/Modules.h7
-rw-r--r--qpid/cpp/src/qpid/Options.h14
-rw-r--r--qpid/cpp/src/qpid/Plugin.h19
-rw-r--r--qpid/cpp/src/qpid/SessionId.h9
-rw-r--r--qpid/cpp/src/qpid/SessionState.h59
-rw-r--r--qpid/cpp/src/qpid/StringUtils.h6
-rw-r--r--qpid/cpp/src/qpid/Url.h17
-rw-r--r--qpid/cpp/src/qpid/amqp_0_10/Connection.h5
-rw-r--r--qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h55
-rw-r--r--qpid/cpp/src/qpid/client/ClientImportExport.h33
-rw-r--r--qpid/cpp/src/qpid/client/Connection.h27
-rw-r--r--qpid/cpp/src/qpid/client/ConnectionSettings.h7
-rw-r--r--qpid/cpp/src/qpid/client/FailoverManager.h11
-rw-r--r--qpid/cpp/src/qpid/client/Handle.h20
-rw-r--r--qpid/cpp/src/qpid/client/Message.h19
-rw-r--r--qpid/cpp/src/qpid/client/MessageListener.h3
-rw-r--r--qpid/cpp/src/qpid/client/MessageReplayTracker.h16
-rw-r--r--qpid/cpp/src/qpid/client/SessionBase_0_10.h31
-rw-r--r--qpid/cpp/src/qpid/client/Subscription.h39
-rw-r--r--qpid/cpp/src/qpid/client/SubscriptionImpl.h37
-rw-r--r--qpid/cpp/src/qpid/client/SubscriptionManager.h49
-rw-r--r--qpid/cpp/src/qpid/framing/AMQBody.h5
-rw-r--r--qpid/cpp/src/qpid/framing/AMQContentBody.h23
-rw-r--r--qpid/cpp/src/qpid/framing/AMQFrame.h21
-rw-r--r--qpid/cpp/src/qpid/framing/AMQHeaderBody.h13
-rw-r--r--qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h5
-rw-r--r--qpid/cpp/src/qpid/framing/AMQMethodBody.h4
-rw-r--r--qpid/cpp/src/qpid/framing/AccumulatedAck.h5
-rw-r--r--qpid/cpp/src/qpid/framing/Array.h47
-rw-r--r--qpid/cpp/src/qpid/framing/Buffer.h91
-rw-r--r--qpid/cpp/src/qpid/framing/FieldTable.h67
-rw-r--r--qpid/cpp/src/qpid/framing/FieldValue.h9
-rw-r--r--qpid/cpp/src/qpid/framing/FrameSet.h19
-rw-r--r--qpid/cpp/src/qpid/framing/ProtocolInitiation.h15
-rw-r--r--qpid/cpp/src/qpid/framing/ProtocolVersion.h17
-rw-r--r--qpid/cpp/src/qpid/framing/Proxy.h18
-rw-r--r--qpid/cpp/src/qpid/framing/SendContent.h5
-rw-r--r--qpid/cpp/src/qpid/framing/SequenceNumber.h27
-rw-r--r--qpid/cpp/src/qpid/framing/SequenceNumberSet.h3
-rw-r--r--qpid/cpp/src/qpid/framing/SequenceSet.h15
-rw-r--r--qpid/cpp/src/qpid/framing/StructHelper.h1
-rw-r--r--qpid/cpp/src/qpid/framing/TransferContent.h27
-rw-r--r--qpid/cpp/src/qpid/framing/Uuid.h13
-rw-r--r--qpid/cpp/src/qpid/log/Logger.h27
-rw-r--r--qpid/cpp/src/qpid/log/Options.h7
-rw-r--r--qpid/cpp/src/qpid/log/Statement.h6
-rw-r--r--qpid/cpp/src/qpid/management/Manageable.h5
-rw-r--r--qpid/cpp/src/qpid/management/ManagementObject.h27
-rw-r--r--qpid/cpp/src/qpid/sys/AggregateOutput.h15
-rw-r--r--qpid/cpp/src/qpid/sys/AsynchIO.h12
-rw-r--r--qpid/cpp/src/qpid/sys/AsynchIOHandler.h27
-rw-r--r--qpid/cpp/src/qpid/sys/DispatchHandle.h28
-rw-r--r--qpid/cpp/src/qpid/sys/Dispatcher.h7
-rw-r--r--qpid/cpp/src/qpid/sys/IOHandle.h6
-rw-r--r--qpid/cpp/src/qpid/sys/PollableCondition.h13
-rw-r--r--qpid/cpp/src/qpid/sys/Poller.h28
-rw-r--r--qpid/cpp/src/qpid/sys/Runnable.h3
-rw-r--r--qpid/cpp/src/qpid/sys/Socket.h18
-rw-r--r--qpid/cpp/src/qpid/sys/StrError.h3
-rw-r--r--qpid/cpp/src/qpid/sys/SystemInfo.h15
-rw-r--r--qpid/cpp/src/qpid/sys/Thread.h13
-rw-r--r--qpid/cpp/src/qpid/sys/Time.h22
-rw-r--r--qpid/cpp/src/qpid/sys/Timer.h28
-rw-r--r--qpid/cpp/src/qpid/sys/windows/uuid.h13
75 files changed, 752 insertions, 620 deletions
diff --git a/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb b/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb
index 92bd10c9dd..3bacdbd812 100755
--- a/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb
+++ b/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb
@@ -30,13 +30,14 @@ class MethodBodyDefaultVisitorGen < CppGen
def generate()
h_file(@filename) {
include "qpid/framing/MethodBodyConstVisitor"
+ include "qpid/CommonImportExport.h"
namespace(@namespace) {
genl "class AMQMethodBody;"
cpp_class(@classname, "public MethodBodyConstVisitor") {
genl "public:"
genl "virtual void defaultVisit(const AMQMethodBody&) = 0;"
@amqp.methods_.each { |m|
- genl "virtual void visit(const #{m.body_name}&);" }
+ genl "QPID_COMMON_EXTERN virtual void visit(const #{m.body_name}&);" }
}}}
cpp_file(@filename) {
diff --git a/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb b/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb
index b751f61d36..6e3b79e51e 100755
--- a/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb
+++ b/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb
@@ -74,7 +74,7 @@ class OperationsInvokerGen < CppGen
public
genl("Invoker(#{target}& target_) : target(target_) {}")
genl "using MethodBodyDefaultVisitor::visit;"
- methods.each { |m| genl "void visit(const #{m.body_name}& body);" }
+ methods.each { |m| genl "QPID_COMMON_EXTERN void visit(const #{m.body_name}& body);" }
}
end
@@ -82,6 +82,7 @@ class OperationsInvokerGen < CppGen
h_file(@filename) {
include "qpid/framing/#{@ops}"
include "qpid/framing/Invoker.h"
+ include "qpid/CommonImportExport.h"
namespace("qpid::framing") {
# AMQP_*Operations invoker.
methods=@amqp.classes.map { |c| visit_methods(c).to_a }.flatten
diff --git a/qpid/cpp/rubygen/framing.0-10/Proxy.rb b/qpid/cpp/rubygen/framing.0-10/Proxy.rb
index 97d0df7c58..7e11d62d9b 100755
--- a/qpid/cpp/rubygen/framing.0-10/Proxy.rb
+++ b/qpid/cpp/rubygen/framing.0-10/Proxy.rb
@@ -44,7 +44,7 @@ public:
static #{cname}& get(#{@classname}& proxy) { return proxy.get#{cname}(); }
EOS
methods_on(c, @chassis).each { |m|
- genl "virtual void #{m.cppname}(#{m.signature.join(",\n ")});"
+ genl "QPID_COMMON_EXTERN virtual void #{m.cppname}(#{m.signature.join(",\n ")});"
genl
}}
end
@@ -66,10 +66,12 @@ EOS
include "qpid/framing/Array.h"
include "qpid/framing/amqp_types.h"
include "qpid/framing/amqp_structs.h"
+ include "qpid/CommonImportExport.h"
+
namespace("qpid::framing") {
cpp_class(@classname, "public Proxy") {
public
- genl "#{@classname}(FrameHandler& out);"
+ genl "QPID_COMMON_EXTERN #{@classname}(FrameHandler& out);"
genl
@amqp.classes.each { |c|
inner_class_decl(c)
diff --git a/qpid/cpp/rubygen/framing.0-10/Session.rb b/qpid/cpp/rubygen/framing.0-10/Session.rb
index 5dd2a91a56..709491e42e 100644
--- a/qpid/cpp/rubygen/framing.0-10/Session.rb
+++ b/qpid/cpp/rubygen/framing.0-10/Session.rb
@@ -55,9 +55,9 @@ module SyncAsync
def decl_ctor_opeq()
genl
- genl "#{@classname}();"
- genl "#{@classname}(const #{@version_base}& other);"
- genl "#{@classname}& operator=(const #{@version_base}& other);"
+ genl "QPID_CLIENT_EXTERN #{@classname}();"
+ genl "QPID_CLIENT_EXTERN #{@classname}(const #{@version_base}& other);"
+ genl "QPID_CLIENT_EXTERN #{@classname}& operator=(const #{@version_base}& other);"
end
def defn_ctor_opeq(inline="")
@@ -138,6 +138,7 @@ class SessionNoKeywordGen < CppGen
def generate()
h_file(@file) {
include "qpid/client/#{@version_base}.h"
+ include "qpid/client/ClientImportExport.h"
namespace(@namespace) {
doxygen_comment {
genl "AMQP #{@amqp.version} #{sync_adjective} session API."
@@ -151,7 +152,7 @@ class SessionNoKeywordGen < CppGen
genl
doxygen(m)
args=m.sig_c_default.join(", ")
- genl "#{m.return_type(@async)} #{m.session_function}(#{args});"
+ genl "QPID_CLIENT_EXTERN #{m.return_type(@async)} #{m.session_function}(#{args});"
}
}
}}
@@ -229,6 +230,7 @@ class SessionGen < CppGen
h_file(@fqclass.file) {
include @fqbase.file
include "qpid/client/arg"
+ include "qpid/client/ClientImportExport"
namespace("qpid::client") {
# Doxygen comment.
doxygen_comment {
diff --git a/qpid/cpp/rubygen/framing.0-10/constants.rb b/qpid/cpp/rubygen/framing.0-10/constants.rb
index d07c84e63a..fa2031b0ce 100755
--- a/qpid/cpp/rubygen/framing.0-10/constants.rb
+++ b/qpid/cpp/rubygen/framing.0-10/constants.rb
@@ -142,7 +142,7 @@ EOS
enum = @amqp.class_(class_name).domain(domain_name).enum
enum.choices.each { |c| declare_exception(c, base, class_name, enum) unless c.name == "normal" }
genl
- genl "sys::ExceptionHolder create#{base}(int code, const std::string& text);"
+ genl "QPID_COMMON_EXTERN sys::ExceptionHolder create#{base}(int code, const std::string& text);"
end
def create_exception(class_name, domain_name, base, invalid)
@@ -165,6 +165,7 @@ EOS
include "qpid/Exception"
include "qpid/sys/ExceptionHolder"
include "enum"
+ include "qpid/CommonImportExport.h"
namespace(@namespace) {
declare_exceptions("execution", "error-code", "SessionException")
declare_exceptions("connection", "close-code", "ConnectionException")
diff --git a/qpid/cpp/rubygen/framing.0-10/structs.rb b/qpid/cpp/rubygen/framing.0-10/structs.rb
index a68e1afb1e..8ea8a91172 100644
--- a/qpid/cpp/rubygen/framing.0-10/structs.rb
+++ b/qpid/cpp/rubygen/framing.0-10/structs.rb
@@ -351,15 +351,15 @@ EOS
end
def declare_packed_accessors(f)
- genl "void set#{f.name.caps}(#{f.cpptype.param} _#{f.cppname});";
- genl "#{f.cpptype.ret} get#{f.name.caps}() const;"
+ genl "QPID_COMMON_EXTERN void set#{f.name.caps}(#{f.cpptype.param} _#{f.cppname});";
+ genl "QPID_COMMON_EXTERN #{f.cpptype.ret} get#{f.name.caps}() const;"
if (f.cpptype.name == "FieldTable")
- genl "#{f.cpptype.name}& get#{f.name.caps}();"
+ genl "QPID_COMMON_EXTERN #{f.cpptype.name}& get#{f.name.caps}();"
end
if (f.type_ != "bit")
#extra 'accessors' for packed fields:
- genl "bool has#{f.name.caps}() const;"
- genl "void clear#{f.name.caps}Flag();"
+ genl "QPID_COMMON_EXTERN bool has#{f.name.caps}() const;"
+ genl "QPID_COMMON_EXTERN void clear#{f.name.caps}Flag();"
end
end
@@ -399,6 +399,7 @@ EOS
#include <ostream>
#include "qpid/framing/amqp_types_full.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -438,17 +439,17 @@ EOS
methodbody_extra_defs(s)
end
if (s.kind_of? AmqpStruct)
- indent {genl "friend std::ostream& operator<<(std::ostream&, const #{classname}&);" }
+ indent {genl "QPID_COMMON_EXTERN friend std::ostream& operator<<(std::ostream&, const #{classname}&);" }
end
gen <<EOS
- void encode(Buffer&) const;
- void decode(Buffer&, uint32_t=0);
- void encodeStructBody(Buffer&) const;
- void decodeStructBody(Buffer&, uint32_t=0);
- uint32_t encodedSize() const;
- uint32_t bodySize() const;
- void print(std::ostream& out) const;
+ QPID_COMMON_EXTERN void encode(Buffer&) const;
+ QPID_COMMON_EXTERN void decode(Buffer&, uint32_t=0);
+ QPID_COMMON_EXTERN void encodeStructBody(Buffer&) const;
+ QPID_COMMON_EXTERN void decodeStructBody(Buffer&, uint32_t=0);
+ QPID_COMMON_EXTERN uint32_t encodedSize() const;
+ QPID_COMMON_EXTERN uint32_t bodySize() const;
+ QPID_COMMON_EXTERN void print(std::ostream& out) const;
}; /* class #{classname} */
}}
diff --git a/qpid/cpp/src/Makefile.am b/qpid/cpp/src/Makefile.am
index 5d50756ec1..57c6c4cca7 100644
--- a/qpid/cpp/src/Makefile.am
+++ b/qpid/cpp/src/Makefile.am
@@ -715,7 +715,9 @@ nobase_include_HEADERS = \
qpid/sys/Time.h \
qpid/sys/Timer.h \
qpid/sys/TimeoutHandler.h \
- qpid/sys/uuid.h
+ qpid/sys/uuid.h \
+ qpid/CommonImportExport.h \
+ qpid/client/ClientImportExport.h
# Force build of qpidd during dist phase so help2man will work.
dist-hook: $(BUILT_SOURCES)
diff --git a/qpid/cpp/src/qpid/Address.h b/qpid/cpp/src/qpid/Address.h
index 9669985165..a5a4345ba3 100755
--- a/qpid/cpp/src/qpid/Address.h
+++ b/qpid/cpp/src/qpid/Address.h
@@ -20,7 +20,7 @@
*/
#include "qpid/sys/IntegerTypes.h"
-
+#include "qpid/CommonImportExport.h"
#include <boost/variant.hpp>
#include <iosfwd>
#include <string>
@@ -31,12 +31,12 @@ namespace qpid {
/** TCP address of a broker - host:port */
struct TcpAddress {
static const uint16_t DEFAULT_PORT=5672;
- explicit TcpAddress(const std::string& host_=std::string(),uint16_t port_=DEFAULT_PORT);
+ QPID_COMMON_EXTERN explicit TcpAddress(const std::string& host_=std::string(),uint16_t port_=DEFAULT_PORT);
std::string host;
uint16_t port;
};
bool operator==(const TcpAddress& x, const TcpAddress& y);
-std::ostream& operator<<(std::ostream& os, const TcpAddress& a);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& os, const TcpAddress& a);
/**@internal Not a real address type, this is a placeholder to
* demonstrate and validate multi-protocol Urls for unit tests and
diff --git a/qpid/cpp/src/qpid/CommonImportExport.h b/qpid/cpp/src/qpid/CommonImportExport.h
new file mode 100644
index 0000000000..47872646d9
--- /dev/null
+++ b/qpid/cpp/src/qpid/CommonImportExport.h
@@ -0,0 +1,33 @@
+#ifndef QPID_COMMON_IMPORT_EXPORT_H
+#define QPID_COMMON_IMPORT_EXPORT_H
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#if defined(WIN32) && !defined(QPID_DECLARE_STATIC)
+#if defined(COMMON_EXPORT)
+#define QPID_COMMON_EXTERN __declspec(dllexport)
+#else
+#define QPID_COMMON_EXTERN __declspec(dllimport)
+#endif
+#else
+#define QPID_COMMON_EXTERN
+#endif
+
+#endif
diff --git a/qpid/cpp/src/qpid/DataDir.h b/qpid/cpp/src/qpid/DataDir.h
index 6b45d8747b..dfdd498cbc 100644
--- a/qpid/cpp/src/qpid/DataDir.h
+++ b/qpid/cpp/src/qpid/DataDir.h
@@ -24,6 +24,7 @@
#include <string>
#include <memory>
#include "qpid/sys/LockFile.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
@@ -38,8 +39,8 @@ class DataDir
public:
- DataDir (std::string path);
- ~DataDir ();
+ QPID_COMMON_EXTERN DataDir (std::string path);
+ QPID_COMMON_EXTERN ~DataDir ();
bool isEnabled() { return enabled; }
const std::string& getPath() { return dirPath; }
diff --git a/qpid/cpp/src/qpid/Exception.h b/qpid/cpp/src/qpid/Exception.h
index 86bf8fbc4a..0b0bc33e93 100644
--- a/qpid/cpp/src/qpid/Exception.h
+++ b/qpid/cpp/src/qpid/Exception.h
@@ -27,7 +27,7 @@
#include "qpid/framing/enum.h"
#include "qpid/sys/StrError.h"
#include "qpid/Msg.h"
-
+#include "qpid/CommonImportExport.h"
#include <memory>
#include <string>
#include <errno.h>
@@ -41,11 +41,11 @@ namespace qpid
class Exception : public std::exception
{
public:
- explicit Exception(const std::string& message=std::string()) throw();
- virtual ~Exception() throw();
- virtual const char* what() const throw(); // prefix: message
- virtual std::string getMessage() const; // Unprefixed message
- virtual std::string getPrefix() const; // Prefix
+ QPID_COMMON_EXTERN explicit Exception(const std::string& message=std::string()) throw();
+ QPID_COMMON_EXTERN virtual ~Exception() throw();
+ QPID_COMMON_EXTERN virtual const char* what() const throw(); // prefix: message
+ QPID_COMMON_EXTERN virtual std::string getMessage() const; // Unprefixed message
+ QPID_COMMON_EXTERN virtual std::string getPrefix() const; // Prefix
private:
std::string message;
@@ -77,8 +77,8 @@ struct ConnectionException : public Exception {
};
struct ClosedException : public Exception {
- ClosedException(const std::string& msg=std::string());
- std::string getPrefix() const;
+ QPID_COMMON_EXTERN ClosedException(const std::string& msg=std::string());
+ QPID_COMMON_EXTERN std::string getPrefix() const;
};
/**
diff --git a/qpid/cpp/src/qpid/Modules.h b/qpid/cpp/src/qpid/Modules.h
index 2a3b24f359..ce06dd0ef6 100644
--- a/qpid/cpp/src/qpid/Modules.h
+++ b/qpid/cpp/src/qpid/Modules.h
@@ -25,6 +25,7 @@
#include "Options.h"
#include <string>
#include <vector>
+#include "qpid/CommonImportExport.h"
namespace qpid {
@@ -32,11 +33,11 @@ struct ModuleOptions : public qpid::Options {
std::string loadDir;
std::vector<std::string> load;
bool noLoad;
- ModuleOptions(const std::string& defaultModuleDir);
+ QPID_COMMON_EXTERN ModuleOptions(const std::string& defaultModuleDir);
};
-void tryShlib(const char* libname, bool noThrow);
-void loadModuleDir (std::string dirname, bool isDefault);
+QPID_COMMON_EXTERN void tryShlib(const char* libname, bool noThrow);
+QPID_COMMON_EXTERN void loadModuleDir (std::string dirname, bool isDefault);
} // namespace qpid
diff --git a/qpid/cpp/src/qpid/Options.h b/qpid/cpp/src/qpid/Options.h
index cb86d27241..aa55f6ecea 100644
--- a/qpid/cpp/src/qpid/Options.h
+++ b/qpid/cpp/src/qpid/Options.h
@@ -29,7 +29,7 @@
#include <iterator>
#include <algorithm>
#include <string>
-
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace po=boost::program_options;
@@ -37,7 +37,7 @@ namespace po=boost::program_options;
///@internal
-std::string prettyArg(const std::string&, const std::string&);
+QPID_COMMON_EXTERN std::string prettyArg(const std::string&, const std::string&);
/** @internal Normally only constructed by optValue() */
template <class T>
@@ -192,24 +192,20 @@ options_description_less_easy_init
#endif
-
-
-
-
struct Options : public po::options_description {
struct Exception : public qpid::Exception {
Exception(const std::string& msg) : qpid::Exception(msg) {}
};
- Options(const std::string& name=std::string());
+ QPID_COMMON_EXTERN Options(const std::string& name=std::string());
/**
* Parses options from argc/argv, environment variables and config file.
* Note the filename argument can reference an options variable that
* is updated by argc/argv or environment variable parsing.
*/
- void parse(int argc, char const* const* argv,
+ QPID_COMMON_EXTERN void parse(int argc, char const* const* argv,
const std::string& configfile=std::string(),
bool allowUnknown = false);
@@ -242,7 +238,7 @@ struct Options : public po::options_description {
* Standard options for configuration
*/
struct CommonOptions : public Options {
- CommonOptions(const std::string& name=std::string(),
+ QPID_COMMON_EXTERN CommonOptions(const std::string& name=std::string(),
const std::string& configfile=std::string());
bool help;
bool version;
diff --git a/qpid/cpp/src/qpid/Plugin.h b/qpid/cpp/src/qpid/Plugin.h
index 50d8e01227..913152f9e1 100644
--- a/qpid/cpp/src/qpid/Plugin.h
+++ b/qpid/cpp/src/qpid/Plugin.h
@@ -24,6 +24,7 @@
#include <boost/noncopyable.hpp>
#include <boost/function.hpp>
#include <vector>
+#include "qpid/CommonImportExport.h"
/**@file Generic plug-in framework. */
@@ -46,10 +47,10 @@ class Plugin : private boost::noncopyable {
{
public:
/** Calls finalize() if not already called. */
- virtual ~Target();
+ QPID_COMMON_EXTERN virtual ~Target();
/** Run all the finalizers */
- void finalize();
+ QPID_COMMON_EXTERN void finalize();
/** Add a function to run when finalize() is called */
void addFinalizer(const boost::function<void()>&);
@@ -65,9 +66,9 @@ class Plugin : private boost::noncopyable {
* member variable in a library so it is registered during
* initialization when the library is loaded.
*/
- Plugin();
+ QPID_COMMON_EXTERN Plugin();
- virtual ~Plugin();
+ QPID_COMMON_EXTERN virtual ~Plugin();
/**
* Configuration options for the plugin.
@@ -76,7 +77,7 @@ class Plugin : private boost::noncopyable {
* @return An options group or 0 for no options. Default returns 0.
* Plugin retains ownership of return value.
*/
- virtual Options* getOptions();
+ QPID_COMMON_EXTERN virtual Options* getOptions();
/**
* Initialize Plugin functionality on a Target, called before
@@ -101,16 +102,16 @@ class Plugin : private boost::noncopyable {
/** List of registered Plugin objects.
* Caller must not delete plugin pointers.
*/
- static const Plugins& getPlugins();
+ QPID_COMMON_EXTERN static const Plugins& getPlugins();
/** Call earlyInitialize() on all registered plugins */
- static void earlyInitAll(Target&);
+ QPID_COMMON_EXTERN static void earlyInitAll(Target&);
/** Call initialize() on all registered plugins */
- static void initializeAll(Target&);
+ QPID_COMMON_EXTERN static void initializeAll(Target&);
/** For each registered plugin, add plugin.getOptions() to opts. */
- static void addOptions(Options& opts);
+ QPID_COMMON_EXTERN static void addOptions(Options& opts);
};
} // namespace qpid
diff --git a/qpid/cpp/src/qpid/SessionId.h b/qpid/cpp/src/qpid/SessionId.h
index 291c42a2bb..318782ecd3 100644
--- a/qpid/cpp/src/qpid/SessionId.h
+++ b/qpid/cpp/src/qpid/SessionId.h
@@ -24,6 +24,7 @@
#include <boost/operators.hpp>
#include <string>
+#include <qpid/CommonImportExport.h>
namespace qpid {
@@ -42,16 +43,16 @@ class SessionId : boost::totally_ordered1<SessionId> {
std::string userId;
std::string name;
public:
- SessionId(const std::string& userId=std::string(), const std::string& name=std::string());
+ QPID_COMMON_EXTERN SessionId(const std::string& userId=std::string(), const std::string& name=std::string());
std::string getUserId() const { return userId; }
std::string getName() const { return name; }
- bool operator<(const SessionId&) const ;
- bool operator==(const SessionId& id) const;
+ QPID_COMMON_EXTERN bool operator<(const SessionId&) const ;
+ QPID_COMMON_EXTERN bool operator==(const SessionId& id) const;
// Convert to a string
std::string str() const;
};
-std::ostream& operator<<(std::ostream&, const SessionId&);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const SessionId&);
} // namespace qpid
diff --git a/qpid/cpp/src/qpid/SessionState.h b/qpid/cpp/src/qpid/SessionState.h
index bf4ff6d326..f12cc7b4d8 100644
--- a/qpid/cpp/src/qpid/SessionState.h
+++ b/qpid/cpp/src/qpid/SessionState.h
@@ -31,6 +31,7 @@
#include <boost/range/iterator_range.hpp>
#include <vector>
#include <iosfwd>
+#include <qpid/CommonImportExport.h>
namespace qpid {
using framing::SequenceNumber;
@@ -38,16 +39,16 @@ using framing::SequenceSet;
/** A point in the session. Points to command id + offset */
struct SessionPoint : boost::totally_ordered1<SessionPoint> {
- SessionPoint(SequenceNumber command = 0, uint64_t offset = 0);
+ QPID_COMMON_EXTERN SessionPoint(SequenceNumber command = 0, uint64_t offset = 0);
SequenceNumber command;
uint64_t offset;
/** Advance past frame f */
- void advance(const framing::AMQFrame& f);
+ QPID_COMMON_EXTERN void advance(const framing::AMQFrame& f);
- bool operator<(const SessionPoint&) const;
- bool operator==(const SessionPoint&) const;
+ QPID_COMMON_EXTERN bool operator<(const SessionPoint&) const;
+ QPID_COMMON_EXTERN bool operator==(const SessionPoint&) const;
};
std::ostream& operator<<(std::ostream&, const SessionPoint&);
@@ -78,14 +79,14 @@ class SessionState {
typedef boost::iterator_range<ReplayList::iterator> ReplayRange;
struct Configuration {
- Configuration(size_t flush=1024*1024, size_t hard=0);
+ QPID_COMMON_EXTERN Configuration(size_t flush=1024*1024, size_t hard=0);
size_t replayFlushLimit; // Flush when the replay list >= N bytes. 0 disables.
size_t replayHardLimit; // Kill session if replay list > N bytes. 0 disables.
};
- SessionState(const SessionId& =SessionId(), const Configuration& =Configuration());
+ QPID_COMMON_EXTERN SessionState(const SessionId& =SessionId(), const Configuration& =Configuration());
- virtual ~SessionState();
+ QPID_COMMON_EXTERN virtual ~SessionState();
bool hasState() const;
@@ -100,78 +101,78 @@ class SessionState {
// ==== Functions for sender state.
/** Record frame f for replay. Should not be called during replay. */
- virtual void senderRecord(const framing::AMQFrame& f);
+ QPID_COMMON_EXTERN virtual void senderRecord(const framing::AMQFrame& f);
/** @return true if we should send flush for confirmed and completed commands. */
- virtual bool senderNeedFlush() const;
+ QPID_COMMON_EXTERN virtual bool senderNeedFlush() const;
/** Called when flush for confirmed and completed commands is sent to peer. */
- virtual void senderRecordFlush();
+ QPID_COMMON_EXTERN virtual void senderRecordFlush();
/** True if we should reply to the next incoming completed command */
- virtual bool senderNeedKnownCompleted() const;
+ QPID_COMMON_EXTERN virtual bool senderNeedKnownCompleted() const;
/** Called when knownCompleted is sent to peer. */
- virtual void senderRecordKnownCompleted();
+ QPID_COMMON_EXTERN virtual void senderRecordKnownCompleted();
/** Called when the peer confirms up to comfirmed. */
- virtual void senderConfirmed(const SessionPoint& confirmed);
+ QPID_COMMON_EXTERN virtual void senderConfirmed(const SessionPoint& confirmed);
/** Called when the peer indicates commands completed */
- virtual void senderCompleted(const SequenceSet& commands);
+ QPID_COMMON_EXTERN virtual void senderCompleted(const SequenceSet& commands);
/** Point from which the next new (not replayed) data will be sent. */
- virtual SessionPoint senderGetCommandPoint();
+ QPID_COMMON_EXTERN virtual SessionPoint senderGetCommandPoint();
/** Set of outstanding incomplete commands */
- virtual SequenceSet senderGetIncomplete() const;
+ QPID_COMMON_EXTERN virtual SequenceSet senderGetIncomplete() const;
/** Point from which we can replay. */
- virtual SessionPoint senderGetReplayPoint() const;
+ QPID_COMMON_EXTERN virtual SessionPoint senderGetReplayPoint() const;
/** Peer expecting commands from this point.
*@return Range of frames to be replayed.
*/
- virtual ReplayRange senderExpected(const SessionPoint& expected);
+ QPID_COMMON_EXTERN virtual ReplayRange senderExpected(const SessionPoint& expected);
// ==== Functions for receiver state
/** Set the command point. */
- virtual void receiverSetCommandPoint(const SessionPoint& point);
+ QPID_COMMON_EXTERN virtual void receiverSetCommandPoint(const SessionPoint& point);
/** Returns true if frame should be be processed, false if it is a duplicate. */
- virtual bool receiverRecord(const framing::AMQFrame& f);
+ QPID_COMMON_EXTERN virtual bool receiverRecord(const framing::AMQFrame& f);
/** Command completed locally */
- virtual void receiverCompleted(SequenceNumber command, bool cumulative=false);
+ QPID_COMMON_EXTERN virtual void receiverCompleted(SequenceNumber command, bool cumulative=false);
/** Peer has indicated commands are known completed */
- virtual void receiverKnownCompleted(const SequenceSet& commands);
+ QPID_COMMON_EXTERN virtual void receiverKnownCompleted(const SequenceSet& commands);
/** True if the next completed control should set the timely-reply argument
* to request a knonw-completed response.
*/
- virtual bool receiverNeedKnownCompleted() const;
+ QPID_COMMON_EXTERN virtual bool receiverNeedKnownCompleted() const;
/** Get the incoming command point */
- virtual const SessionPoint& receiverGetExpected() const;
+ QPID_COMMON_EXTERN virtual const SessionPoint& receiverGetExpected() const;
/** Get the received high-water-mark, may be > getExpected() during replay */
- virtual const SessionPoint& receiverGetReceived() const;
+ QPID_COMMON_EXTERN virtual const SessionPoint& receiverGetReceived() const;
/** Completed received commands that the peer may not know about. */
- virtual const SequenceSet& receiverGetUnknownComplete() const;
+ QPID_COMMON_EXTERN virtual const SequenceSet& receiverGetUnknownComplete() const;
/** Incomplete received commands. */
- virtual const SequenceSet& receiverGetIncomplete() const;
+ QPID_COMMON_EXTERN virtual const SequenceSet& receiverGetIncomplete() const;
/** ID of the command currently being handled. */
- virtual SequenceNumber receiverGetCurrent() const;
+ QPID_COMMON_EXTERN virtual SequenceNumber receiverGetCurrent() const;
/** Set the state variables, used to create a session that will resume
* from some previously established point.
*/
- virtual void setState(
+ QPID_COMMON_EXTERN virtual void setState(
const SequenceNumber& replayStart,
const SequenceNumber& sendCommandPoint,
const SequenceSet& sentIncomplete,
diff --git a/qpid/cpp/src/qpid/StringUtils.h b/qpid/cpp/src/qpid/StringUtils.h
index 3120e43334..4130fae017 100644
--- a/qpid/cpp/src/qpid/StringUtils.h
+++ b/qpid/cpp/src/qpid/StringUtils.h
@@ -22,6 +22,8 @@
*
*/
+#include "qpid/CommonImportExport.h"
+
#include <string>
#include <vector>
@@ -31,12 +33,12 @@ namespace qpid {
* Split 'in' into words using delimiters in 'delims' and put
* resulting strings into 'out' vector.
*/
-void split(std::vector<std::string>& out, const std::string& in, const std::string& delims);
+QPID_COMMON_EXTERN void split(std::vector<std::string>& out, const std::string& in, const std::string& delims);
/**
* Split 'in' into words using delimiters in 'delims' and return the
* resulting strings in a vector.
*/
-std::vector<std::string> split(const std::string& in, const std::string& delims);
+QPID_COMMON_EXTERN std::vector<std::string> split(const std::string& in, const std::string& delims);
} // namespace qpid
diff --git a/qpid/cpp/src/qpid/Url.h b/qpid/cpp/src/qpid/Url.h
index 07ca46e70c..353eac28f3 100644
--- a/qpid/cpp/src/qpid/Url.h
+++ b/qpid/cpp/src/qpid/Url.h
@@ -25,10 +25,11 @@
#include <vector>
#include <new>
#include <ostream>
+#include "qpid/CommonImportExport.h"
namespace qpid {
-std::ostream& operator<<(std::ostream& os, const TcpAddress& a);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& os, const TcpAddress& a);
/** An AMQP URL contains a list of addresses */
struct Url : public std::vector<Address> {
@@ -38,12 +39,12 @@ struct Url : public std::vector<Address> {
/** Url with local IP address(es), may be more than one address
* on a multi-homed host. */
- static Url getIpAddressesUrl(uint16_t port);
+ QPID_COMMON_EXTERN static Url getIpAddressesUrl(uint16_t port);
struct Invalid : public Exception { Invalid(const std::string& s); };
/** Convert to string form. */
- std::string str() const;
+ QPID_COMMON_EXTERN std::string str() const;
/** Empty URL. */
Url() {}
@@ -62,14 +63,14 @@ struct Url : public std::vector<Address> {
Url& operator=(const std::string& s) { parse(s); return *this; }
/** Throw Invalid if the URL does not contain any addresses. */
- void throwIfEmpty() const;
+ QPID_COMMON_EXTERN void throwIfEmpty() const;
/** Replace contents with parsed URL as defined in
* https://wiki.108.redhat.com/jira/browse/AMQP-95
*@exception Invalid if the url is invalid.
*/
- void parse(const char* url);
- void parse(const std::string& url) { parse(url.c_str()); }
+ QPID_COMMON_EXTERN void parse(const char* url);
+ QPID_COMMON_EXTERN void parse(const std::string& url) { parse(url.c_str()); }
/** Replace contesnts with parsed URL as defined in
* https://wiki.108.redhat.com/jira/browse/AMQP-95
@@ -84,8 +85,8 @@ struct Url : public std::vector<Address> {
inline bool operator==(const Url& a, const Url& b) { return a.str()==b.str(); }
inline bool operator!=(const Url& a, const Url& b) { return a.str()!=b.str(); }
-std::ostream& operator<<(std::ostream& os, const Url& url);
-std::istream& operator>>(std::istream& is, Url& url);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& os, const Url& url);
+QPID_COMMON_EXTERN std::istream& operator>>(std::istream& is, Url& url);
} // namespace qpid
diff --git a/qpid/cpp/src/qpid/amqp_0_10/Connection.h b/qpid/cpp/src/qpid/amqp_0_10/Connection.h
index 743a7de3aa..b317eed967 100644
--- a/qpid/cpp/src/qpid/amqp_0_10/Connection.h
+++ b/qpid/cpp/src/qpid/amqp_0_10/Connection.h
@@ -27,6 +27,7 @@
#include "qpid/sys/ConnectionInputHandler.h"
#include "qpid/sys/ConnectionOutputHandler.h"
#include "qpid/sys/Mutex.h"
+#include "qpid/CommonImportExport.h"
#include <boost/intrusive_ptr.hpp>
#include <memory>
#include <deque>
@@ -56,8 +57,8 @@ class Connection : public sys::ConnectionCodec,
size_t buffered;
public:
- Connection(sys::OutputControl&, const std::string& id, bool isClient);
- void setInputHandler(std::auto_ptr<sys::ConnectionInputHandler> c);
+ QPID_COMMON_EXTERN Connection(sys::OutputControl&, const std::string& id, bool isClient);
+ QPID_COMMON_EXTERN void setInputHandler(std::auto_ptr<sys::ConnectionInputHandler> c);
size_t decode(const char* buffer, size_t size);
size_t encode(const char* buffer, size_t size);
bool isClosed() const;
diff --git a/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h b/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h
index d7af7dd6c7..0b158ec2b4 100644
--- a/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h
+++ b/qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h
@@ -26,6 +26,7 @@
#include "qpid/framing/AMQP_AllProxy.h"
#include "qpid/framing/AMQP_AllOperations.h"
#include "qpid/SessionState.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
@@ -43,8 +44,8 @@ class SessionHandler : public framing::AMQP_AllOperations::SessionHandler,
public framing::FrameHandler::InOutHandler
{
public:
- SessionHandler(framing::FrameHandler* out=0, uint16_t channel=0);
- ~SessionHandler();
+ QPID_COMMON_EXTERN SessionHandler(framing::FrameHandler* out=0, uint16_t channel=0);
+ QPID_COMMON_EXTERN ~SessionHandler();
void setChannel(uint16_t ch) { channel = ch; }
uint16_t getChannel() const { return channel.get(); }
@@ -55,35 +56,35 @@ class SessionHandler : public framing::AMQP_AllOperations::SessionHandler,
virtual framing::FrameHandler* getInHandler() = 0;
// Non-protocol methods, called locally to initiate some action.
- void sendDetach();
- void sendCompletion();
- void sendAttach(bool force);
- void sendTimeout(uint32_t t);
- void sendFlush();
- void markReadyToSend();//TODO: only needed for inter-broker bridge; cleanup
+ QPID_COMMON_EXTERN void sendDetach();
+ QPID_COMMON_EXTERN void sendCompletion();
+ QPID_COMMON_EXTERN void sendAttach(bool force);
+ QPID_COMMON_EXTERN void sendTimeout(uint32_t t);
+ QPID_COMMON_EXTERN void sendFlush();
+ QPID_COMMON_EXTERN void markReadyToSend();//TODO: only needed for inter-broker bridge; cleanup
/** True if the handler is ready to send and receive */
bool ready() const;
// Protocol methods
- void attach(const std::string& name, bool force);
- void attached(const std::string& name);
- void detach(const std::string& name);
- void detached(const std::string& name, uint8_t code);
-
- void requestTimeout(uint32_t t);
- void timeout(uint32_t t);
-
- void commandPoint(const framing::SequenceNumber& id, uint64_t offset);
- void expected(const framing::SequenceSet& commands, const framing::Array& fragments);
- void confirmed(const framing::SequenceSet& commands,const framing::Array& fragments);
- void completed(const framing::SequenceSet& commands, bool timelyReply);
- void knownCompleted(const framing::SequenceSet& commands);
- void flush(bool expected, bool confirmed, bool completed);
- void gap(const framing::SequenceSet& commands);
+ QPID_COMMON_EXTERN void attach(const std::string& name, bool force);
+ QPID_COMMON_EXTERN void attached(const std::string& name);
+ QPID_COMMON_EXTERN void detach(const std::string& name);
+ QPID_COMMON_EXTERN void detached(const std::string& name, uint8_t code);
+
+ QPID_COMMON_EXTERN void requestTimeout(uint32_t t);
+ QPID_COMMON_EXTERN void timeout(uint32_t t);
+
+ QPID_COMMON_EXTERN void commandPoint(const framing::SequenceNumber& id, uint64_t offset);
+ QPID_COMMON_EXTERN void expected(const framing::SequenceSet& commands, const framing::Array& fragments);
+ QPID_COMMON_EXTERN void confirmed(const framing::SequenceSet& commands,const framing::Array& fragments);
+ QPID_COMMON_EXTERN void completed(const framing::SequenceSet& commands, bool timelyReply);
+ QPID_COMMON_EXTERN void knownCompleted(const framing::SequenceSet& commands);
+ QPID_COMMON_EXTERN void flush(bool expected, bool confirmed, bool completed);
+ QPID_COMMON_EXTERN void gap(const framing::SequenceSet& commands);
protected:
- virtual void invoke(const framing::AMQMethodBody& m);
+ QPID_COMMON_EXTERN virtual void invoke(const framing::AMQMethodBody& m);
virtual void setState(const std::string& sessionName, bool force) = 0;
virtual void channelException(framing::session::DetachCode code, const std::string& msg) = 0;
@@ -94,9 +95,9 @@ class SessionHandler : public framing::AMQP_AllOperations::SessionHandler,
virtual void readyToSend() {}
virtual void readyToReceive() {}
- virtual void handleDetach();
- virtual void handleIn(framing::AMQFrame&);
- virtual void handleOut(framing::AMQFrame&);
+ QPID_COMMON_EXTERN virtual void handleDetach();
+ QPID_COMMON_EXTERN virtual void handleIn(framing::AMQFrame&);
+ QPID_COMMON_EXTERN virtual void handleOut(framing::AMQFrame&);
framing::ChannelHandler channel;
framing::AMQP_AllProxy::Session peer;
diff --git a/qpid/cpp/src/qpid/client/ClientImportExport.h b/qpid/cpp/src/qpid/client/ClientImportExport.h
new file mode 100644
index 0000000000..0e6e5660d6
--- /dev/null
+++ b/qpid/cpp/src/qpid/client/ClientImportExport.h
@@ -0,0 +1,33 @@
+#ifndef QPID_CLIENT_IMPORT_EXPORT_H
+#define QPID_CLIENT_IMPORT_EXPORT_H
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#if defined(WIN32) && !defined(QPID_DECLARE_STATIC)
+#if defined(CLIENT_EXPORT)
+#define QPID_CLIENT_EXTERN __declspec(dllexport)
+#else
+#define QPID_CLIENT_EXTERN __declspec(dllimport)
+#endif
+#else
+#define QPID_CLIENT_EXTERN
+#endif
+
+#endif
diff --git a/qpid/cpp/src/qpid/client/Connection.h b/qpid/cpp/src/qpid/client/Connection.h
index 03631ef56f..846ac33790 100644
--- a/qpid/cpp/src/qpid/client/Connection.h
+++ b/qpid/cpp/src/qpid/client/Connection.h
@@ -24,6 +24,7 @@
#include <map>
#include <string>
#include "qpid/client/Session.h"
+#include "qpid/client/ClientImportExport.h"
namespace qpid {
@@ -58,9 +59,9 @@ class Connection
* Creates a connection object, but does not open the connection.
* @see open()
*/
- Connection();
+ QPID_CLIENT_EXTERN Connection();
- ~Connection();
+ QPID_CLIENT_EXTERN ~Connection();
/**
* Opens a connection to a broker.
@@ -79,7 +80,7 @@ class Connection
* hosts, where implemented(!), provide namespace partitioning
* within a single broker).
*/
- void open(const std::string& host, int port = 5672,
+ QPID_CLIENT_EXTERN void open(const std::string& host, int port = 5672,
const std::string& uid = "guest",
const std::string& pwd = "guest",
const std::string& virtualhost = "/", uint16_t maxFrameSize=65535);
@@ -101,7 +102,7 @@ class Connection
* hosts, where implemented(!), provide namespace partitioning
* within a single broker).
*/
- void open(const Url& url,
+ QPID_CLIENT_EXTERN void open(const Url& url,
const std::string& uid = "guest",
const std::string& pwd = "guest",
const std::string& virtualhost = "/", uint16_t maxFrameSize=65535);
@@ -116,14 +117,14 @@ class Connection
* @param settings used for any settings not provided by the URL.
* Settings provided by the url (e.g. host, port) are ignored.
*/
- void open(const Url& url, const ConnectionSettings& settings);
+ QPID_CLIENT_EXTERN void open(const Url& url, const ConnectionSettings& settings);
/**
* Opens a connection to a broker.
*
* @param the settings to use (host, port etc). @see ConnectionSettings.
*/
- void open(const ConnectionSettings& settings);
+ QPID_CLIENT_EXTERN void open(const ConnectionSettings& settings);
/**
* Close the connection.
@@ -131,7 +132,7 @@ class Connection
* Any further use of this connection (without reopening it) will
* not succeed.
*/
- void close();
+ QPID_CLIENT_EXTERN void close();
/**
* Create a new session on this connection. Sessions allow
@@ -174,23 +175,23 @@ class Connection
* If the name is empty (the default) then a unique name will be
* chosen using a Universally-unique identifier (UUID) algorithm.
*/
- Session newSession(const std::string& name=std::string(), uint32_t timeoutSeconds = 0);
+ QPID_CLIENT_EXTERN Session newSession(const std::string& name=std::string(), uint32_t timeoutSeconds = 0);
/**
* Resume a suspended session. A session may be resumed
* on a different connection to the one that created it.
*/
- void resume(Session& session);
+ QPID_CLIENT_EXTERN void resume(Session& session);
- bool isOpen() const;
+ QPID_CLIENT_EXTERN bool isOpen() const;
- std::vector<Url> getKnownBrokers();
- void registerFailureCallback ( boost::function<void ()> fn );
+ QPID_CLIENT_EXTERN std::vector<Url> getKnownBrokers();
+ QPID_CLIENT_EXTERN void registerFailureCallback ( boost::function<void ()> fn );
/**
* Return the set of client negotiated settings
*/
- const ConnectionSettings& getNegotiatedSettings();
+ QPID_CLIENT_EXTERN const ConnectionSettings& getNegotiatedSettings();
friend class ConnectionAccess; ///<@internal
friend class SessionBase_0_10; ///<@internal
diff --git a/qpid/cpp/src/qpid/client/ConnectionSettings.h b/qpid/cpp/src/qpid/client/ConnectionSettings.h
index f60b11a4ab..71fef219b4 100644
--- a/qpid/cpp/src/qpid/client/ConnectionSettings.h
+++ b/qpid/cpp/src/qpid/client/ConnectionSettings.h
@@ -25,6 +25,7 @@
#include "qpid/Options.h"
#include "qpid/log/Options.h"
#include "qpid/Url.h"
+#include "qpid/client/ClientImportExport.h"
#include <iostream>
#include <exception>
@@ -42,14 +43,14 @@ namespace client {
*/
struct ConnectionSettings {
- ConnectionSettings();
- virtual ~ConnectionSettings();
+ QPID_CLIENT_EXTERN ConnectionSettings();
+ QPID_CLIENT_EXTERN virtual ~ConnectionSettings();
/**
* Allows socket to be configured; default only sets tcp-nodelay
* based on the flag set. Can be overridden.
*/
- virtual void configureSocket(qpid::sys::Socket&) const;
+ QPID_CLIENT_EXTERN virtual void configureSocket(qpid::sys::Socket&) const;
/**
* The protocol used for the connection (defaults to 'tcp')
diff --git a/qpid/cpp/src/qpid/client/FailoverManager.h b/qpid/cpp/src/qpid/client/FailoverManager.h
index 8b6eeda8a1..bef5e18840 100644
--- a/qpid/cpp/src/qpid/client/FailoverManager.h
+++ b/qpid/cpp/src/qpid/client/FailoverManager.h
@@ -27,6 +27,7 @@
#include "qpid/Exception.h"
#include "qpid/client/AsyncSession.h"
#include "qpid/sys/Monitor.h"
+#include "qpid/client/ClientImportExport.h"
#include <vector>
namespace qpid {
@@ -84,7 +85,7 @@ class FailoverManager
* to edit or reorder the list of urls to which reconnection is
* attempted
*/
- FailoverManager(const ConnectionSettings& settings, ReconnectionStrategy* strategy = 0);
+ QPID_CLIENT_EXTERN FailoverManager(const ConnectionSettings& settings, ReconnectionStrategy* strategy = 0);
/**
* Return the current connection if open or attept to reconnect to
* the specified list of urls. If no list is specified the list of
@@ -95,15 +96,15 @@ class FailoverManager
* If the full list is tried and all attempts fail,
* CannotConnectException is thrown.
*/
- Connection& connect(std::vector<Url> brokers = std::vector<Url>());
+ QPID_CLIENT_EXTERN Connection& connect(std::vector<Url> brokers = std::vector<Url>());
/**
* Return the current connection whether open or not
*/
- Connection& getConnection();
+ QPID_CLIENT_EXTERN Connection& getConnection();
/**
* Close the current connection
*/
- void close();
+ QPID_CLIENT_EXTERN void close();
/**
* Reliably execute the specified command. This involves creating
* a session on which to carry out the work of the command,
@@ -116,7 +117,7 @@ class FailoverManager
* on failover to ensure they continue to use the same logical
* connection.
*/
- void execute(Command&);
+ QPID_CLIENT_EXTERN void execute(Command&);
private:
enum State {IDLE, CONNECTING, CANT_CONNECT};
diff --git a/qpid/cpp/src/qpid/client/Handle.h b/qpid/cpp/src/qpid/client/Handle.h
index 4fd82b7646..d8b822d0f9 100644
--- a/qpid/cpp/src/qpid/client/Handle.h
+++ b/qpid/cpp/src/qpid/client/Handle.h
@@ -22,6 +22,8 @@
*
*/
+#include "qpid/client/ClientImportExport.h"
+
namespace qpid {
namespace client {
@@ -34,23 +36,23 @@ template <class T> class HandlePrivate;
*/
template <class T> class Handle {
public:
- ~Handle();
- Handle(const Handle&);
- Handle& operator=(const Handle&);
+ QPID_CLIENT_EXTERN ~Handle();
+ QPID_CLIENT_EXTERN Handle(const Handle&);
+ QPID_CLIENT_EXTERN Handle& operator=(const Handle&);
/**@return true if handle is valid, i.e. not null. */
- bool isValid() const { return impl; }
+ QPID_CLIENT_EXTERN bool isValid() const { return impl; }
/**@return true if handle is null. It is an error to call any function on a null handle. */
- bool isNull() const { return !impl; }
+ QPID_CLIENT_EXTERN bool isNull() const { return !impl; }
- operator bool() const { return impl; }
- bool operator !() const { return impl; }
+ QPID_CLIENT_EXTERN operator bool() const { return impl; }
+ QPID_CLIENT_EXTERN bool operator !() const { return impl; }
- void swap(Handle<T>&);
+ QPID_CLIENT_EXTERN void swap(Handle<T>&);
protected:
- Handle(T* =0);
+ QPID_CLIENT_EXTERN Handle(T* =0);
T* impl;
friend class HandlePrivate<T>;
diff --git a/qpid/cpp/src/qpid/client/Message.h b/qpid/cpp/src/qpid/client/Message.h
index 3f932efd8b..235e20f97d 100644
--- a/qpid/cpp/src/qpid/client/Message.h
+++ b/qpid/cpp/src/qpid/client/Message.h
@@ -25,6 +25,7 @@
#include "qpid/client/Session.h"
#include "qpid/framing/MessageTransferBody.h"
#include "qpid/framing/TransferContent.h"
+#include "qpid/client/ClientImportExport.h"
namespace qpid {
namespace client {
@@ -111,7 +112,7 @@ public:
*@param data Data for the message body.
*@param routingKey Passed to the exchange that routes the message.
*/
- Message(const std::string& data=std::string(),
+ QPID_CLIENT_EXTERN Message(const std::string& data=std::string(),
const std::string& routingKey=std::string());
/** The destination of messages sent to the broker is the exchange
@@ -119,26 +120,26 @@ public:
* the delivery tag identifyig the local subscription (often this
* is the name of the subscribed queue.)
*/
- std::string getDestination() const;
+ QPID_CLIENT_EXTERN std::string getDestination() const;
/** Check the redelivered flag. */
- bool isRedelivered() const;
+ QPID_CLIENT_EXTERN bool isRedelivered() const;
/** Set the redelivered flag. */
- void setRedelivered(bool redelivered);
+ QPID_CLIENT_EXTERN void setRedelivered(bool redelivered);
/** Get a modifyable reference to the message headers. */
- framing::FieldTable& getHeaders();
+ QPID_CLIENT_EXTERN framing::FieldTable& getHeaders();
/** Get a non-modifyable reference to the message headers. */
- const framing::FieldTable& getHeaders() const;
+ QPID_CLIENT_EXTERN const framing::FieldTable& getHeaders() const;
///@internal
- const framing::MessageTransferBody& getMethod() const;
+ QPID_CLIENT_EXTERN const framing::MessageTransferBody& getMethod() const;
///@internal
- const framing::SequenceNumber& getId() const;
+ QPID_CLIENT_EXTERN const framing::SequenceNumber& getId() const;
/**@internal for incoming messages */
- Message(const framing::FrameSet& frameset);
+ QPID_CLIENT_EXTERN Message(const framing::FrameSet& frameset);
private:
//method and id are only set for received messages:
diff --git a/qpid/cpp/src/qpid/client/MessageListener.h b/qpid/cpp/src/qpid/client/MessageListener.h
index 75aad6521b..b86aa10c54 100644
--- a/qpid/cpp/src/qpid/client/MessageListener.h
+++ b/qpid/cpp/src/qpid/client/MessageListener.h
@@ -19,6 +19,7 @@
*
*/
#include <string>
+#include "qpid/client/ClientImportExport.h"
#ifndef _MessageListener_
#define _MessageListener_
@@ -85,7 +86,7 @@ namespace client {
class MessageListener{
public:
- virtual ~MessageListener();
+ QPID_CLIENT_EXTERN virtual ~MessageListener();
/** Called for each message arriving from the broker. Override
* in your own subclass to process messages.
diff --git a/qpid/cpp/src/qpid/client/MessageReplayTracker.h b/qpid/cpp/src/qpid/client/MessageReplayTracker.h
index 45b16fb704..280cbae4a5 100644
--- a/qpid/cpp/src/qpid/client/MessageReplayTracker.h
+++ b/qpid/cpp/src/qpid/client/MessageReplayTracker.h
@@ -23,7 +23,7 @@
*/
#include "AsyncSession.h"
#include "Message.h"
-
+#include "qpid/client/ClientImportExport.h"
#include <list>
#include <string>
@@ -37,13 +37,13 @@ namespace client {
class MessageReplayTracker
{
public:
- MessageReplayTracker(uint flushInterval);
- void send(const Message& message, const std::string& destination = "");
- void init(AsyncSession session);
- void replay(AsyncSession session);
- void setFlushInterval(uint interval);
- uint getFlushInterval();
- void checkCompletion();
+ QPID_CLIENT_EXTERN MessageReplayTracker(uint flushInterval);
+ QPID_CLIENT_EXTERN void send(const Message& message, const std::string& destination = "");
+ QPID_CLIENT_EXTERN void init(AsyncSession session);
+ QPID_CLIENT_EXTERN void replay(AsyncSession session);
+ QPID_CLIENT_EXTERN void setFlushInterval(uint interval);
+ QPID_CLIENT_EXTERN uint getFlushInterval();
+ QPID_CLIENT_EXTERN void checkCompletion();
template <class F> void foreach(F& f) {
for (std::list<ReplayRecord>::const_iterator i = buffer.begin(); i != buffer.end(); i++) {
diff --git a/qpid/cpp/src/qpid/client/SessionBase_0_10.h b/qpid/cpp/src/qpid/client/SessionBase_0_10.h
index 091c977053..3ae21936f6 100644
--- a/qpid/cpp/src/qpid/client/SessionBase_0_10.h
+++ b/qpid/cpp/src/qpid/client/SessionBase_0_10.h
@@ -33,6 +33,7 @@
#include "qpid/client/SessionImpl.h"
#include "qpid/client/TypedResult.h"
#include "qpid/shared_ptr.h"
+#include "qpid/client/ClientImportExport.h"
#include <string>
namespace qpid {
@@ -65,19 +66,19 @@ class SessionBase_0_10 {
typedef framing::TransferContent DefaultContent;
///@internal
- SessionBase_0_10();
- ~SessionBase_0_10();
+ QPID_CLIENT_EXTERN SessionBase_0_10();
+ QPID_CLIENT_EXTERN ~SessionBase_0_10();
/** Get the next message frame-set from the session. */
- framing::FrameSet::shared_ptr get();
+ QPID_CLIENT_EXTERN framing::FrameSet::shared_ptr get();
/** Get the session ID */
- SessionId getId() const;
+ QPID_CLIENT_EXTERN SessionId getId() const;
/** Close the session.
* A session is automatically closed when all handles to it are destroyed.
*/
- void close();
+ QPID_CLIENT_EXTERN void close();
/**
* Synchronize the session: sync() waits until all commands issued
@@ -88,25 +89,25 @@ class SessionBase_0_10 {
* AsyncSession::executionSync() directly in the unusual event
* that you want to do an asynchronous sync.
*/
- void sync();
+ QPID_CLIENT_EXTERN void sync();
/** Set the timeout for this session. */
- uint32_t timeout(uint32_t seconds);
+ QPID_CLIENT_EXTERN uint32_t timeout(uint32_t seconds);
/** Suspend the session - detach it from its connection */
- void suspend();
+ QPID_CLIENT_EXTERN void suspend();
/** Resume a suspended session with a new connection */
- void resume(Connection);
+ QPID_CLIENT_EXTERN void resume(Connection);
/** Get the channel associated with this session */
- uint16_t getChannel() const;
+ QPID_CLIENT_EXTERN uint16_t getChannel() const;
- Execution& getExecution();
- void flush();
- void markCompleted(const framing::SequenceSet& ids, bool notifyPeer);
- void markCompleted(const framing::SequenceNumber& id, bool cumulative, bool notifyPeer);
- void sendCompletion();
+ QPID_CLIENT_EXTERN Execution& getExecution();
+ QPID_CLIENT_EXTERN void flush();
+ QPID_CLIENT_EXTERN void markCompleted(const framing::SequenceSet& ids, bool notifyPeer);
+ QPID_CLIENT_EXTERN void markCompleted(const framing::SequenceNumber& id, bool cumulative, bool notifyPeer);
+ QPID_CLIENT_EXTERN void sendCompletion();
protected:
boost::shared_ptr<SessionImpl> impl;
diff --git a/qpid/cpp/src/qpid/client/Subscription.h b/qpid/cpp/src/qpid/client/Subscription.h
index 47bb5d42a5..4a3b9a5098 100644
--- a/qpid/cpp/src/qpid/client/Subscription.h
+++ b/qpid/cpp/src/qpid/client/Subscription.h
@@ -26,6 +26,7 @@
#include "qpid/client/SubscriptionSettings.h"
#include "qpid/client/Handle.h"
#include "qpid/client/Message.h"
+#include "qpid/client/ClientImportExport.h"
namespace qpid {
namespace client {
@@ -39,74 +40,74 @@ class SubscriptionManager;
*/
class Subscription : public Handle<SubscriptionImpl> {
public:
- Subscription(SubscriptionImpl* si=0) : Handle<SubscriptionImpl>(si) {}
+ QPID_CLIENT_EXTERN Subscription(SubscriptionImpl* si=0) : Handle<SubscriptionImpl>(si) {}
/** The name of the subsctription, used as the "destination" for messages from the broker.
* Usually the same as the queue name but can be set differently.
*/
- std::string getName() const;
+ QPID_CLIENT_EXTERN std::string getName() const;
/** Name of the queue this subscription subscribes to */
- std::string getQueue() const;
+ QPID_CLIENT_EXTERN std::string getQueue() const;
/** Get the flow control and acknowledgement settings for this subscription */
- const SubscriptionSettings& getSettings() const;
+ QPID_CLIENT_EXTERN const SubscriptionSettings& getSettings() const;
/** Set the flow control parameters */
- void setFlowControl(const FlowControl&);
+ QPID_CLIENT_EXTERN void setFlowControl(const FlowControl&);
/** Automatically acknowledge (acquire and accept) batches of n messages.
* You can disable auto-acknowledgement by setting n=0, and use acquire() and accept()
* to manually acquire and accept messages.
*/
- void setAutoAck(unsigned int n);
+ QPID_CLIENT_EXTERN void setAutoAck(unsigned int n);
/** Get the set of ID's for messages received by this subscription but not yet acquired.
* This will always be empty if getSettings().acquireMode=ACQUIRE_MODE_PRE_ACQUIRED
*/
- SequenceSet getUnacquired() const;
+ QPID_CLIENT_EXTERN SequenceSet getUnacquired() const;
/** Get the set of ID's for messages received by this subscription but not yet accepted. */
- SequenceSet getUnaccepted() const;
+ QPID_CLIENT_EXTERN SequenceSet getUnaccepted() const;
/** Acquire messageIds and remove them from the unacquired set.
* oAdd them to the unaccepted set if getSettings().acceptMode == ACCEPT_MODE_EXPLICIT.
*/
- void acquire(const SequenceSet& messageIds);
+ QPID_CLIENT_EXTERN void acquire(const SequenceSet& messageIds);
/** Accept messageIds and remove them from the unaccepted set.
*@pre messageIds is a subset of getUnaccepted()
*/
- void accept(const SequenceSet& messageIds);
+ QPID_CLIENT_EXTERN void accept(const SequenceSet& messageIds);
/** Release messageIds and remove them from the unaccepted set.
*@pre messageIds is a subset of getUnaccepted()
*/
- void release(const SequenceSet& messageIds);
+ QPID_CLIENT_EXTERN void release(const SequenceSet& messageIds);
/* Acquire a single message */
- void acquire(const Message& m) { acquire(SequenceSet(m.getId())); }
+ QPID_CLIENT_EXTERN void acquire(const Message& m) { acquire(SequenceSet(m.getId())); }
/* Accept a single message */
- void accept(const Message& m) { accept(SequenceSet(m.getId())); }
+ QPID_CLIENT_EXTERN void accept(const Message& m) { accept(SequenceSet(m.getId())); }
/* Release a single message */
- void release(const Message& m) { release(SequenceSet(m.getId())); }
+ QPID_CLIENT_EXTERN void release(const Message& m) { release(SequenceSet(m.getId())); }
/** Get the session associated with this subscription */
- Session getSession() const;
+ QPID_CLIENT_EXTERN Session getSession() const;
/** Get the subscription manager associated with this subscription */
- SubscriptionManager& getSubscriptionManager() const;
+ QPID_CLIENT_EXTERN SubscriptionManager& getSubscriptionManager() const;
/** Cancel the subscription. */
- void cancel();
+ QPID_CLIENT_EXTERN void cancel();
/** Grant the specified amount of message credit */
- void grantMessageCredit(uint32_t);
+ QPID_CLIENT_EXTERN void grantMessageCredit(uint32_t);
/** Grant the specified amount of byte credit */
- void grantByteCredit(uint32_t);
+ QPID_CLIENT_EXTERN void grantByteCredit(uint32_t);
friend class SubscriptionManager;
};
diff --git a/qpid/cpp/src/qpid/client/SubscriptionImpl.h b/qpid/cpp/src/qpid/client/SubscriptionImpl.h
index 74fbacb951..e2b970ce05 100644
--- a/qpid/cpp/src/qpid/client/SubscriptionImpl.h
+++ b/qpid/cpp/src/qpid/client/SubscriptionImpl.h
@@ -30,6 +30,7 @@
#include "qpid/framing/SequenceSet.h"
#include "qpid/sys/Mutex.h"
#include "qpid/RefCounted.h"
+#include "qpid/client/ClientImportExport.h"
#include <memory>
namespace qpid {
@@ -39,62 +40,62 @@ class SubscriptionManager;
class SubscriptionImpl : public RefCounted, public MessageListener {
public:
- SubscriptionImpl(SubscriptionManager&, const std::string& queue,
+ QPID_CLIENT_EXTERN SubscriptionImpl(SubscriptionManager&, const std::string& queue,
const SubscriptionSettings&, const std::string& name, MessageListener* =0);
/** The name of the subsctription, used as the "destination" for messages from the broker.
* Usually the same as the queue name but can be set differently.
*/
- std::string getName() const;
+ QPID_CLIENT_EXTERN std::string getName() const;
/** Name of the queue this subscription subscribes to */
- std::string getQueue() const;
+ QPID_CLIENT_EXTERN std::string getQueue() const;
/** Get the flow control and acknowledgement settings for this subscription */
- const SubscriptionSettings& getSettings() const;
+ QPID_CLIENT_EXTERN const SubscriptionSettings& getSettings() const;
/** Set the flow control parameters */
- void setFlowControl(const FlowControl&);
+ QPID_CLIENT_EXTERN void setFlowControl(const FlowControl&);
/** Automatically acknowledge (acquire and accept) batches of n messages.
* You can disable auto-acknowledgement by setting n=0, and use acquire() and accept()
* to manually acquire and accept messages.
*/
- void setAutoAck(size_t n);
+ QPID_CLIENT_EXTERN void setAutoAck(size_t n);
/** Get the set of ID's for messages received by this subscription but not yet acquired.
* This will always be empty if acquireMode=ACQUIRE_MODE_PRE_ACQUIRED
*/
- SequenceSet getUnacquired() const;
+ QPID_CLIENT_EXTERN SequenceSet getUnacquired() const;
/** Get the set of ID's for messages acquired by this subscription but not yet accepted. */
- SequenceSet getUnaccepted() const;
+ QPID_CLIENT_EXTERN SequenceSet getUnaccepted() const;
/** Acquire messageIds and remove them from the un-acquired set for the session. */
- void acquire(const SequenceSet& messageIds);
+ QPID_CLIENT_EXTERN void acquire(const SequenceSet& messageIds);
/** Accept messageIds and remove them from the un-accepted set for the session. */
- void accept(const SequenceSet& messageIds);
+ QPID_CLIENT_EXTERN void accept(const SequenceSet& messageIds);
/** Release messageIds and remove them from the un-accepted set for the session. */
- void release(const SequenceSet& messageIds);
+ QPID_CLIENT_EXTERN void release(const SequenceSet& messageIds);
/** Get the session associated with this subscription */
- Session getSession() const;
+ QPID_CLIENT_EXTERN Session getSession() const;
/** Get the subscription manager associated with this subscription */
- SubscriptionManager& getSubscriptionManager() const;
+ QPID_CLIENT_EXTERN SubscriptionManager& getSubscriptionManager() const;
/** Send subscription request and issue appropriate flow control commands. */
- void subscribe();
+ QPID_CLIENT_EXTERN void subscribe();
/** Cancel the subscription. */
- void cancel();
+ QPID_CLIENT_EXTERN void cancel();
/** Grant specified credit for this subscription **/
- void grantCredit(framing::message::CreditUnit unit, uint32_t value);
+ QPID_CLIENT_EXTERN void grantCredit(framing::message::CreditUnit unit, uint32_t value);
- void received(Message&);
+ QPID_CLIENT_EXTERN void received(Message&);
/**
* Set up demux diversion for messages sent to this subscription
@@ -104,7 +105,7 @@ class SubscriptionImpl : public RefCounted, public MessageListener {
* Cancel any demux diversion that may have been setup for this
* subscription
*/
- void cancelDiversion();
+ QPID_CLIENT_EXTERN void cancelDiversion();
private:
diff --git a/qpid/cpp/src/qpid/client/SubscriptionManager.h b/qpid/cpp/src/qpid/client/SubscriptionManager.h
index 6b45092931..91ad2b6d56 100644
--- a/qpid/cpp/src/qpid/client/SubscriptionManager.h
+++ b/qpid/cpp/src/qpid/client/SubscriptionManager.h
@@ -30,6 +30,7 @@
#include <qpid/client/LocalQueue.h>
#include <qpid/client/Subscription.h>
#include <qpid/sys/Runnable.h>
+#include <qpid/client/ClientImportExport.h>
#include <set>
#include <sstream>
@@ -97,7 +98,7 @@ class SubscriptionManager : public sys::Runnable
{
public:
/** Create a new SubscriptionManager associated with a session */
- SubscriptionManager(const Session& session);
+ QPID_CLIENT_EXTERN SubscriptionManager(const Session& session);
/**
* Subscribe a MessagesListener to receive messages from queue.
@@ -110,7 +111,7 @@ class SubscriptionManager : public sys::Runnable
*@param settings settings for the subscription.
*@param name unique destination name for the subscription, defaults to queue name.
*/
- Subscription subscribe(MessageListener& listener,
+ QPID_CLIENT_EXTERN Subscription subscribe(MessageListener& listener,
const std::string& queue,
const SubscriptionSettings& settings,
const std::string& name=std::string());
@@ -125,7 +126,7 @@ class SubscriptionManager : public sys::Runnable
*@param name unique destination name for the subscription, defaults to queue name.
* If not specified, the queue name is used.
*/
- Subscription subscribe(LocalQueue& localQueue,
+ QPID_CLIENT_EXTERN Subscription subscribe(LocalQueue& localQueue,
const std::string& queue,
const SubscriptionSettings& settings,
const std::string& name=std::string());
@@ -141,7 +142,7 @@ class SubscriptionManager : public sys::Runnable
*@param name unique destination name for the subscription, defaults to queue name.
* If not specified, the queue name is used.
*/
- Subscription subscribe(MessageListener& listener,
+ QPID_CLIENT_EXTERN Subscription subscribe(MessageListener& listener,
const std::string& queue,
const std::string& name=std::string());
@@ -154,7 +155,7 @@ class SubscriptionManager : public sys::Runnable
*@param name unique destination name for the subscription, defaults to queue name.
* If not specified, the queue name is used.
*/
- Subscription subscribe(LocalQueue& localQueue,
+ QPID_CLIENT_EXTERN Subscription subscribe(LocalQueue& localQueue,
const std::string& queue,
const std::string& name=std::string());
@@ -164,53 +165,53 @@ class SubscriptionManager : public sys::Runnable
*@param timeout wait up this timeout for a message to appear.
*@return true if result was set, false if no message available after timeout.
*/
- bool get(Message& result, const std::string& queue, sys::Duration timeout=0);
+ QPID_CLIENT_EXTERN bool get(Message& result, const std::string& queue, sys::Duration timeout=0);
/** Get a single message from a queue.
*@param timeout wait up this timeout for a message to appear.
*@return message from the queue.
*@throw Exception if the timeout is exceeded.
*/
- Message get(const std::string& queue, sys::Duration timeout=sys::TIME_INFINITE);
+ QPID_CLIENT_EXTERN Message get(const std::string& queue, sys::Duration timeout=sys::TIME_INFINITE);
/** Get a subscription by name.
*@throw Exception if not found.
*/
- Subscription getSubscription(const std::string& name) const;
+ QPID_CLIENT_EXTERN Subscription getSubscription(const std::string& name) const;
/** Cancel a subscription. See also: Subscription.cancel() */
- void cancel(const std::string& name);
+ QPID_CLIENT_EXTERN void cancel(const std::string& name);
/** Deliver messages in the current thread until stop() is called.
* Only one thread may be running in a SubscriptionManager at a time.
* @see run
*/
- void run();
+ QPID_CLIENT_EXTERN void run();
/** Start a new thread to deliver messages.
* Only one thread may be running in a SubscriptionManager at a time.
* @see start
*/
- void start();
+ QPID_CLIENT_EXTERN void start();
/**
* Wait for the thread started by a call to start() to complete.
*/
- void wait();
+ QPID_CLIENT_EXTERN void wait();
/** If set true, run() will stop when all subscriptions
* are cancelled. If false, run will only stop when stop()
* is called. True by default.
*/
- void setAutoStop(bool set=true);
+ QPID_CLIENT_EXTERN void setAutoStop(bool set=true);
/** Stop delivery. Causes run() to return, or the thread started with start() to exit. */
- void stop();
+ QPID_CLIENT_EXTERN void stop();
static const uint32_t UNLIMITED=0xFFFFFFFF;
/** Set the flow control for a subscription. */
- void setFlowControl(const std::string& name, const FlowControl& flow);
+ QPID_CLIENT_EXTERN void setFlowControl(const std::string& name, const FlowControl& flow);
/** Set the flow control for a subscription.
*@param name: name of the subscription.
@@ -218,22 +219,22 @@ class SubscriptionManager : public sys::Runnable
*@param bytes: byte credit.
*@param window: if true use window-based flow control.
*/
- void setFlowControl(const std::string& name, uint32_t messages, uint32_t bytes, bool window=true);
+ QPID_CLIENT_EXTERN void setFlowControl(const std::string& name, uint32_t messages, uint32_t bytes, bool window=true);
/** Set the default settings for subscribe() calls that don't
* include a SubscriptionSettings parameter.
*/
- void setDefaultSettings(const SubscriptionSettings& s) { defaultSettings = s; }
+ QPID_CLIENT_EXTERN void setDefaultSettings(const SubscriptionSettings& s) { defaultSettings = s; }
/** Get the default settings for subscribe() calls that don't
* include a SubscriptionSettings parameter.
*/
- const SubscriptionSettings& getDefaultSettings() const { return defaultSettings; }
+ QPID_CLIENT_EXTERN const SubscriptionSettings& getDefaultSettings() const { return defaultSettings; }
/** Get the default settings for subscribe() calls that don't
* include a SubscriptionSettings parameter.
*/
- SubscriptionSettings& getDefaultSettings() { return defaultSettings; }
+ QPID_CLIENT_EXTERN SubscriptionSettings& getDefaultSettings() { return defaultSettings; }
/**
* Set the default flow control settings for subscribe() calls
@@ -243,7 +244,7 @@ class SubscriptionManager : public sys::Runnable
*@param bytes: byte credit.
*@param window: if true use window-based flow control.
*/
- void setFlowControl(uint32_t messages, uint32_t bytes, bool window=true) {
+ QPID_CLIENT_EXTERN void setFlowControl(uint32_t messages, uint32_t bytes, bool window=true) {
defaultSettings.flowControl = FlowControl(messages, bytes, window);
}
@@ -251,16 +252,16 @@ class SubscriptionManager : public sys::Runnable
*Set the default accept-mode for subscribe() calls that don't
*include a SubscriptionSettings parameter.
*/
- void setAcceptMode(AcceptMode mode) { defaultSettings.acceptMode = mode; }
+ QPID_CLIENT_EXTERN void setAcceptMode(AcceptMode mode) { defaultSettings.acceptMode = mode; }
/**
* Set the default acquire-mode subscribe()s that don't specify SubscriptionSettings.
*/
- void setAcquireMode(AcquireMode mode) { defaultSettings.acquireMode = mode; }
+ QPID_CLIENT_EXTERN void setAcquireMode(AcquireMode mode) { defaultSettings.acquireMode = mode; }
- void registerFailoverHandler ( boost::function<void ()> fh );
+ QPID_CLIENT_EXTERN void registerFailoverHandler ( boost::function<void ()> fh );
- Session getSession() const;
+ QPID_CLIENT_EXTERN Session getSession() const;
private:
mutable sys::Mutex lock;
diff --git a/qpid/cpp/src/qpid/framing/AMQBody.h b/qpid/cpp/src/qpid/framing/AMQBody.h
index 9e66b9738f..60ac2d3b7e 100644
--- a/qpid/cpp/src/qpid/framing/AMQBody.h
+++ b/qpid/cpp/src/qpid/framing/AMQBody.h
@@ -26,6 +26,7 @@
#include "qpid/framing/BodyFactory.h"
#include <boost/intrusive_ptr.hpp>
#include <ostream>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -48,7 +49,7 @@ struct AMQBodyConstVisitor {
class AMQBody : public RefCounted {
public:
AMQBody() {}
- virtual ~AMQBody();
+ QPID_COMMON_EXTERN virtual ~AMQBody();
// Make AMQBody copyable even though RefCounted.
AMQBody(const AMQBody&) : RefCounted() {}
@@ -71,7 +72,7 @@ class AMQBody : public RefCounted {
virtual boost::intrusive_ptr<AMQBody> clone() const = 0;
};
-std::ostream& operator<<(std::ostream& out, const AMQBody& body) ;
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& out, const AMQBody& body) ;
enum BodyTypes {
METHOD_BODY = 1,
diff --git a/qpid/cpp/src/qpid/framing/AMQContentBody.h b/qpid/cpp/src/qpid/framing/AMQContentBody.h
index a81cf36168..9606ae5ec5 100644
--- a/qpid/cpp/src/qpid/framing/AMQContentBody.h
+++ b/qpid/cpp/src/qpid/framing/AMQContentBody.h
@@ -21,6 +21,7 @@
#include "amqp_types.h"
#include "AMQBody.h"
#include "Buffer.h"
+#include "qpid/CommonImportExport.h"
#ifndef _AMQContentBody_
#define _AMQContentBody_
@@ -33,18 +34,18 @@ class AMQContentBody : public AMQBody
string data;
public:
- AMQContentBody();
- AMQContentBody(const string& data);
+ QPID_COMMON_EXTERN AMQContentBody();
+ QPID_COMMON_EXTERN AMQContentBody(const string& data);
inline virtual ~AMQContentBody(){}
- inline uint8_t type() const { return CONTENT_BODY; };
- inline const string& getData() const { return data; }
- inline string& getData() { return data; }
- uint32_t encodedSize() const;
- void encode(Buffer& buffer) const;
- void decode(Buffer& buffer, uint32_t size);
- void print(std::ostream& out) const;
- void accept(AMQBodyConstVisitor& v) const { v.visit(*this); }
- boost::intrusive_ptr<AMQBody> clone() const { return BodyFactory::copy(*this); }
+ QPID_COMMON_EXTERN inline uint8_t type() const { return CONTENT_BODY; };
+ QPID_COMMON_EXTERN inline const string& getData() const { return data; }
+ QPID_COMMON_EXTERN inline string& getData() { return data; }
+ QPID_COMMON_EXTERN uint32_t encodedSize() const;
+ QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+ QPID_COMMON_EXTERN void decode(Buffer& buffer, uint32_t size);
+ QPID_COMMON_EXTERN void print(std::ostream& out) const;
+ QPID_COMMON_EXTERN void accept(AMQBodyConstVisitor& v) const { v.visit(*this); }
+ QPID_COMMON_EXTERN boost::intrusive_ptr<AMQBody> clone() const { return BodyFactory::copy(*this); }
};
}
diff --git a/qpid/cpp/src/qpid/framing/AMQFrame.h b/qpid/cpp/src/qpid/framing/AMQFrame.h
index 028d0c1d8a..cf384e61e8 100644
--- a/qpid/cpp/src/qpid/framing/AMQFrame.h
+++ b/qpid/cpp/src/qpid/framing/AMQFrame.h
@@ -29,6 +29,7 @@
#include "qpid/sys/LatencyMetric.h"
#include <boost/intrusive_ptr.hpp>
#include <boost/cast.hpp>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -36,15 +37,15 @@ namespace framing {
class AMQFrame : public AMQDataBlock, public sys::LatencyMetricTimestamp
{
public:
- AMQFrame(const boost::intrusive_ptr<AMQBody>& b=0);
- AMQFrame(const AMQBody& b);
- ~AMQFrame();
+ QPID_COMMON_EXTERN AMQFrame(const boost::intrusive_ptr<AMQBody>& b=0);
+ QPID_COMMON_EXTERN AMQFrame(const AMQBody& b);
+ QPID_COMMON_EXTERN ~AMQFrame();
ChannelId getChannel() const { return channel; }
void setChannel(ChannelId c) { channel = c; }
- AMQBody* getBody();
- const AMQBody* getBody() const;
+ QPID_COMMON_EXTERN AMQBody* getBody();
+ QPID_COMMON_EXTERN const AMQBody* getBody() const;
AMQMethodBody* getMethod() { return getBody()->getMethod(); }
const AMQMethodBody* getMethod() const { return getBody()->getMethod(); }
@@ -59,9 +60,9 @@ class AMQFrame : public AMQDataBlock, public sys::LatencyMetricTimestamp
return boost::polymorphic_downcast<const T*>(getBody());
}
- void encode(Buffer& buffer) const;
- bool decode(Buffer& buffer);
- uint32_t encodedSize() const;
+ QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+ QPID_COMMON_EXTERN bool decode(Buffer& buffer);
+ QPID_COMMON_EXTERN uint32_t encodedSize() const;
// 0-10 terminology: first/last frame (in segment) first/last segment (in assembly)
@@ -88,7 +89,7 @@ class AMQFrame : public AMQDataBlock, public sys::LatencyMetricTimestamp
void setEos(bool isEos) { eos = isEos; }
static uint16_t DECODE_SIZE_MIN;
- static uint32_t frameOverhead();
+ QPID_COMMON_EXTERN static uint32_t frameOverhead();
/** Must point to at least DECODE_SIZE_MIN bytes of data */
static uint16_t decodeSize(char* data);
@@ -109,7 +110,7 @@ class AMQFrame : public AMQDataBlock, public sys::LatencyMetricTimestamp
uint64_t clusterId; // Used to identify frames in a clustered broekr.
};
-std::ostream& operator<<(std::ostream&, const AMQFrame&);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const AMQFrame&);
}} // namespace qpid::framing
diff --git a/qpid/cpp/src/qpid/framing/AMQHeaderBody.h b/qpid/cpp/src/qpid/framing/AMQHeaderBody.h
index 9846544949..b8099f2e51 100644
--- a/qpid/cpp/src/qpid/framing/AMQHeaderBody.h
+++ b/qpid/cpp/src/qpid/framing/AMQHeaderBody.h
@@ -26,6 +26,7 @@
#include "Buffer.h"
#include "qpid/framing/DeliveryProperties.h"
#include "qpid/framing/MessageProperties.h"
+#include "qpid/CommonImportExport.h"
#include <iostream>
#include <boost/optional.hpp>
@@ -83,12 +84,12 @@ public:
inline uint8_t type() const { return HEADER_BODY; }
- uint32_t encodedSize() const;
- void encode(Buffer& buffer) const;
- void decode(Buffer& buffer, uint32_t size);
- uint64_t getContentLength() const;
- void print(std::ostream& out) const;
- void accept(AMQBodyConstVisitor&) const;
+ QPID_COMMON_EXTERN uint32_t encodedSize() const;
+ QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+ QPID_COMMON_EXTERN void decode(Buffer& buffer, uint32_t size);
+ QPID_COMMON_EXTERN uint64_t getContentLength() const;
+ QPID_COMMON_EXTERN void print(std::ostream& out) const;
+ QPID_COMMON_EXTERN void accept(AMQBodyConstVisitor&) const;
template <class T> T* get(bool create) {
boost::optional<T>& p=properties.OptProps<T>::props;
diff --git a/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h b/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h
index 3fb41c128e..5d3f633576 100644
--- a/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h
+++ b/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h
@@ -21,6 +21,7 @@
#include "amqp_types.h"
#include "AMQBody.h"
#include "Buffer.h"
+#include "qpid/CommonImportExport.h"
#ifndef _AMQHeartbeatBody_
#define _AMQHeartbeatBody_
@@ -31,12 +32,12 @@ namespace framing {
class AMQHeartbeatBody : public AMQBody
{
public:
- virtual ~AMQHeartbeatBody();
+ QPID_COMMON_EXTERN virtual ~AMQHeartbeatBody();
inline uint32_t encodedSize() const { return 0; }
inline uint8_t type() const { return HEARTBEAT_BODY; }
inline void encode(Buffer& ) const {}
inline void decode(Buffer& , uint32_t /*size*/) {}
- virtual void print(std::ostream& out) const;
+ QPID_COMMON_EXTERN virtual void print(std::ostream& out) const;
void accept(AMQBodyConstVisitor& v) const { v.visit(*this); }
boost::intrusive_ptr<AMQBody> clone() const { return BodyFactory::copy(*this); }
};
diff --git a/qpid/cpp/src/qpid/framing/AMQMethodBody.h b/qpid/cpp/src/qpid/framing/AMQMethodBody.h
index cc7489ddd9..a38726b0fc 100644
--- a/qpid/cpp/src/qpid/framing/AMQMethodBody.h
+++ b/qpid/cpp/src/qpid/framing/AMQMethodBody.h
@@ -25,7 +25,7 @@
#include "AMQBody.h"
#include "qpid/framing/ProtocolVersion.h"
#include "qpid/shared_ptr.h"
-
+#include "qpid/CommonImportExport.h"
#include <ostream>
#include <assert.h>
@@ -40,7 +40,7 @@ class MethodBodyConstVisitor;
class AMQMethodBody : public AMQBody {
public:
AMQMethodBody() {}
- virtual ~AMQMethodBody();
+ QPID_COMMON_EXTERN virtual ~AMQMethodBody();
virtual void accept(MethodBodyConstVisitor&) const = 0;
diff --git a/qpid/cpp/src/qpid/framing/AccumulatedAck.h b/qpid/cpp/src/qpid/framing/AccumulatedAck.h
index ea78b797e0..e221aff9db 100644
--- a/qpid/cpp/src/qpid/framing/AccumulatedAck.h
+++ b/qpid/cpp/src/qpid/framing/AccumulatedAck.h
@@ -27,6 +27,7 @@
#include <ostream>
#include "SequenceNumber.h"
#include "SequenceNumberSet.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -67,8 +68,8 @@ namespace qpid {
void update(const SequenceNumber cumulative, const SequenceNumberSet& range);
void operator()(SequenceNumber first, SequenceNumber last) { update(first, last); }
};
- std::ostream& operator<<(std::ostream&, const Range&);
- std::ostream& operator<<(std::ostream&, const AccumulatedAck&);
+ QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const Range&);
+ QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const AccumulatedAck&);
}
}
diff --git a/qpid/cpp/src/qpid/framing/Array.h b/qpid/cpp/src/qpid/framing/Array.h
index 183fcb6d5c..e714b7133f 100644
--- a/qpid/cpp/src/qpid/framing/Array.h
+++ b/qpid/cpp/src/qpid/framing/Array.h
@@ -24,6 +24,7 @@
#include <boost/shared_ptr.hpp>
#include <iostream>
#include <vector>
+#include "qpid/CommonImportExport.h"
#ifndef _Array_
#define _Array_
@@ -41,38 +42,38 @@ class Array
typedef ValueVector::const_iterator const_iterator;
typedef ValueVector::iterator iterator;
- uint32_t encodedSize() const;
- void encode(Buffer& buffer) const;
- void decode(Buffer& buffer);
+ QPID_COMMON_EXTERN uint32_t encodedSize() const;
+ QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+ QPID_COMMON_EXTERN void decode(Buffer& buffer);
- int count() const;
+ QPID_COMMON_EXTERN int count() const;
bool operator==(const Array& other) const;
- Array();
- Array(TypeCode type);
- Array(uint8_t type);
+ QPID_COMMON_EXTERN Array();
+ QPID_COMMON_EXTERN Array(TypeCode type);
+ QPID_COMMON_EXTERN Array(uint8_t type);
//creates a longstr array
- Array(const std::vector<std::string>& in);
+ QPID_COMMON_EXTERN Array(const std::vector<std::string>& in);
- TypeCode getType() const { return type; }
+ QPID_COMMON_EXTERN TypeCode getType() const { return type; }
// std collection interface.
- const_iterator begin() const { return values.begin(); }
- const_iterator end() const { return values.end(); }
- iterator begin() { return values.begin(); }
- iterator end(){ return values.end(); }
-
- ValuePtr front() const { return values.front(); }
- ValuePtr back() const { return values.back(); }
- size_t size() const { return values.size(); }
-
- void insert(iterator i, ValuePtr value);
- void erase(iterator i) { values.erase(i); }
- void push_back(ValuePtr value) { values.insert(end(), value); }
- void pop_back() { values.pop_back(); }
+ QPID_COMMON_EXTERN const_iterator begin() const { return values.begin(); }
+ QPID_COMMON_EXTERN const_iterator end() const { return values.end(); }
+ QPID_COMMON_EXTERN iterator begin() { return values.begin(); }
+ QPID_COMMON_EXTERN iterator end(){ return values.end(); }
+
+ QPID_COMMON_EXTERN ValuePtr front() const { return values.front(); }
+ QPID_COMMON_EXTERN ValuePtr back() const { return values.back(); }
+ QPID_COMMON_EXTERN size_t size() const { return values.size(); }
+
+ QPID_COMMON_EXTERN void insert(iterator i, ValuePtr value);
+ QPID_COMMON_EXTERN void erase(iterator i) { values.erase(i); }
+ QPID_COMMON_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); }
+ QPID_COMMON_EXTERN void pop_back() { values.pop_back(); }
// Non-std interface
- void add(ValuePtr value) { push_back(value); }
+ QPID_COMMON_EXTERN void add(ValuePtr value) { push_back(value); }
template <class T>
void collect(std::vector<T>& out) const
diff --git a/qpid/cpp/src/qpid/framing/Buffer.h b/qpid/cpp/src/qpid/framing/Buffer.h
index 828e6e963a..57fb1e32a0 100644
--- a/qpid/cpp/src/qpid/framing/Buffer.h
+++ b/qpid/cpp/src/qpid/framing/Buffer.h
@@ -20,6 +20,7 @@
*/
#include "amqp_types.h"
#include "qpid/Exception.h"
+#include "qpid/CommonImportExport.h"
#include <boost/iterator/iterator_facade.hpp>
#ifndef _Buffer_
@@ -66,65 +67,65 @@ class Buffer
friend class Iterator;
- Buffer(char* data=0, uint32_t size=0);
+ QPID_COMMON_EXTERN Buffer(char* data=0, uint32_t size=0);
- void record();
- void restore(bool reRecord = false);
- void reset();
+ QPID_COMMON_EXTERN void record();
+ QPID_COMMON_EXTERN void restore(bool reRecord = false);
+ QPID_COMMON_EXTERN void reset();
- uint32_t available() { return size - position; }
- uint32_t getSize() { return size; }
- uint32_t getPosition() { return position; }
- Iterator getIterator() { return Iterator(*this); }
- char* getPointer() { return data; }
+ QPID_COMMON_EXTERN uint32_t available() { return size - position; }
+ QPID_COMMON_EXTERN uint32_t getSize() { return size; }
+ QPID_COMMON_EXTERN uint32_t getPosition() { return position; }
+ QPID_COMMON_EXTERN Iterator getIterator() { return Iterator(*this); }
+ QPID_COMMON_EXTERN char* getPointer() { return data; }
- void putOctet(uint8_t i);
- void putShort(uint16_t i);
- void putLong(uint32_t i);
- void putLongLong(uint64_t i);
- void putInt8(int8_t i);
- void putInt16(int16_t i);
- void putInt32(int32_t i);
- void putInt64(int64_t i);
- void putFloat(float f);
- void putDouble(double f);
- void putBin128(uint8_t* b);
-
- uint8_t getOctet();
- uint16_t getShort();
- uint32_t getLong();
- uint64_t getLongLong();
- int8_t getInt8();
- int16_t getInt16();
- int32_t getInt32();
- int64_t getInt64();
- float getFloat();
- double getDouble();
+ QPID_COMMON_EXTERN void putOctet(uint8_t i);
+ QPID_COMMON_EXTERN void putShort(uint16_t i);
+ QPID_COMMON_EXTERN void putLong(uint32_t i);
+ QPID_COMMON_EXTERN void putLongLong(uint64_t i);
+ QPID_COMMON_EXTERN void putInt8(int8_t i);
+ QPID_COMMON_EXTERN void putInt16(int16_t i);
+ QPID_COMMON_EXTERN void putInt32(int32_t i);
+ QPID_COMMON_EXTERN void putInt64(int64_t i);
+ QPID_COMMON_EXTERN void putFloat(float f);
+ QPID_COMMON_EXTERN void putDouble(double f);
+ QPID_COMMON_EXTERN void putBin128(uint8_t* b);
+
+ QPID_COMMON_EXTERN uint8_t getOctet();
+ QPID_COMMON_EXTERN uint16_t getShort();
+ QPID_COMMON_EXTERN uint32_t getLong();
+ QPID_COMMON_EXTERN uint64_t getLongLong();
+ QPID_COMMON_EXTERN int8_t getInt8();
+ QPID_COMMON_EXTERN int16_t getInt16();
+ QPID_COMMON_EXTERN int32_t getInt32();
+ QPID_COMMON_EXTERN int64_t getInt64();
+ QPID_COMMON_EXTERN float getFloat();
+ QPID_COMMON_EXTERN double getDouble();
template <int n>
- uint64_t getUInt();
+ QPID_COMMON_EXTERN uint64_t getUInt();
template <int n>
- void putUInt(uint64_t);
+ QPID_COMMON_EXTERN void putUInt(uint64_t);
- void putShortString(const string& s);
- void putMediumString(const string& s);
- void putLongString(const string& s);
- void getShortString(string& s);
- void getMediumString(string& s);
- void getLongString(string& s);
- void getBin128(uint8_t* b);
+ QPID_COMMON_EXTERN void putShortString(const string& s);
+ QPID_COMMON_EXTERN void putMediumString(const string& s);
+ QPID_COMMON_EXTERN void putLongString(const string& s);
+ QPID_COMMON_EXTERN void getShortString(string& s);
+ QPID_COMMON_EXTERN void getMediumString(string& s);
+ QPID_COMMON_EXTERN void getLongString(string& s);
+ QPID_COMMON_EXTERN void getBin128(uint8_t* b);
- void putRawData(const string& s);
- void getRawData(string& s, uint32_t size);
+ QPID_COMMON_EXTERN void putRawData(const string& s);
+ QPID_COMMON_EXTERN void getRawData(string& s, uint32_t size);
- void putRawData(const uint8_t* data, size_t size);
- void getRawData(uint8_t* data, size_t size);
+ QPID_COMMON_EXTERN void putRawData(const uint8_t* data, size_t size);
+ QPID_COMMON_EXTERN void getRawData(uint8_t* data, size_t size);
template <class T> void put(const T& data) { data.encode(*this); }
template <class T> void get(T& data) { data.decode(*this); }
- void dump(std::ostream&) const;
+ QPID_COMMON_EXTERN void dump(std::ostream&) const;
};
std::ostream& operator<<(std::ostream&, const Buffer&);
diff --git a/qpid/cpp/src/qpid/framing/FieldTable.h b/qpid/cpp/src/qpid/framing/FieldTable.h
index 9e1214a28c..a07568559f 100644
--- a/qpid/cpp/src/qpid/framing/FieldTable.h
+++ b/qpid/cpp/src/qpid/framing/FieldTable.h
@@ -23,6 +23,7 @@
#include <boost/shared_ptr.hpp>
#include <map>
#include "amqp_types.h"
+#include "qpid/CommonImportExport.h"
#ifndef _FieldTable_
#define _FieldTable_
@@ -51,45 +52,45 @@ class FieldTable
typedef std::map<std::string, ValuePtr> ValueMap;
typedef ValueMap::iterator iterator;
- FieldTable() {};
- FieldTable(const FieldTable& ft);
- ~FieldTable();
- FieldTable& operator=(const FieldTable& ft);
- uint32_t encodedSize() const;
- void encode(Buffer& buffer) const;
- void decode(Buffer& buffer);
-
- int count() const;
- void set(const std::string& name, const ValuePtr& value);
- ValuePtr get(const std::string& name) const;
- bool isSet(const std::string& name) const { return get(name).get() != 0; }
-
- void setString(const std::string& name, const std::string& value);
- void setInt(const std::string& name, const int value);
- void setInt64(const std::string& name, const int64_t value);
- void setTimestamp(const std::string& name, const uint64_t value);
- void setUInt64(const std::string& name, const uint64_t value);
- void setTable(const std::string& name, const FieldTable& value);
- void setArray(const std::string& name, const Array& value);
- void setFloat(const std::string& name, const float value);
- void setDouble(const std::string& name, const double value);
+ QPID_COMMON_EXTERN FieldTable() {};
+ QPID_COMMON_EXTERN FieldTable(const FieldTable& ft);
+ QPID_COMMON_EXTERN ~FieldTable();
+ QPID_COMMON_EXTERN FieldTable& operator=(const FieldTable& ft);
+ QPID_COMMON_EXTERN uint32_t encodedSize() const;
+ QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+ QPID_COMMON_EXTERN void decode(Buffer& buffer);
+
+ QPID_COMMON_EXTERN int count() const;
+ QPID_COMMON_EXTERN void set(const std::string& name, const ValuePtr& value);
+ QPID_COMMON_EXTERN ValuePtr get(const std::string& name) const;
+ QPID_COMMON_EXTERN bool isSet(const std::string& name) const { return get(name).get() != 0; }
+
+ QPID_COMMON_EXTERN void setString(const std::string& name, const std::string& value);
+ QPID_COMMON_EXTERN void setInt(const std::string& name, const int value);
+ QPID_COMMON_EXTERN void setInt64(const std::string& name, const int64_t value);
+ QPID_COMMON_EXTERN void setTimestamp(const std::string& name, const uint64_t value);
+ QPID_COMMON_EXTERN void setUInt64(const std::string& name, const uint64_t value);
+ QPID_COMMON_EXTERN void setTable(const std::string& name, const FieldTable& value);
+ QPID_COMMON_EXTERN void setArray(const std::string& name, const Array& value);
+ QPID_COMMON_EXTERN void setFloat(const std::string& name, const float value);
+ QPID_COMMON_EXTERN void setDouble(const std::string& name, const double value);
//void setDecimal(string& name, xxx& value);
- int getAsInt(const std::string& name) const;
- uint64_t getAsUInt64(const std::string& name) const;
- int64_t getAsInt64(const std::string& name) const;
- std::string getAsString(const std::string& name) const;
+ QPID_COMMON_EXTERN int getAsInt(const std::string& name) const;
+ QPID_COMMON_EXTERN uint64_t getAsUInt64(const std::string& name) const;
+ QPID_COMMON_EXTERN int64_t getAsInt64(const std::string& name) const;
+ QPID_COMMON_EXTERN std::string getAsString(const std::string& name) const;
- bool getTable(const std::string& name, FieldTable& value) const;
- bool getArray(const std::string& name, Array& value) const;
- bool getFloat(const std::string& name, float& value) const;
- bool getDouble(const std::string& name, double& value) const;
+ QPID_COMMON_EXTERN bool getTable(const std::string& name, FieldTable& value) const;
+ QPID_COMMON_EXTERN bool getArray(const std::string& name, Array& value) const;
+ QPID_COMMON_EXTERN bool getFloat(const std::string& name, float& value) const;
+ QPID_COMMON_EXTERN bool getDouble(const std::string& name, double& value) const;
//bool getTimestamp(const std::string& name, uint64_t& value) const;
//bool getDecimal(string& name, xxx& value);
- void erase(const std::string& name);
+ QPID_COMMON_EXTERN void erase(const std::string& name);
- bool operator==(const FieldTable& other) const;
+ QPID_COMMON_EXTERN bool operator==(const FieldTable& other) const;
// Map-like interface.
// TODO: may need to duplicate into versions that return mutable iterator
@@ -107,7 +108,7 @@ class FieldTable
private:
ValueMap values;
- friend std::ostream& operator<<(std::ostream& out, const FieldTable& body);
+ QPID_COMMON_EXTERN friend std::ostream& operator<<(std::ostream& out, const FieldTable& body);
};
//class FieldNotFoundException{};
diff --git a/qpid/cpp/src/qpid/framing/FieldValue.h b/qpid/cpp/src/qpid/framing/FieldValue.h
index 29760619e5..b66000d9fa 100644
--- a/qpid/cpp/src/qpid/framing/FieldValue.h
+++ b/qpid/cpp/src/qpid/framing/FieldValue.h
@@ -25,6 +25,7 @@
#include "amqp_types.h"
#include "Buffer.h"
#include "FieldTable.h"
+#include "qpid/CommonImportExport.h"
#include "assert.h"
@@ -87,8 +88,8 @@ class FieldValue {
bool empty() const { return data.get() == 0; }
void encode(Buffer& buffer);
void decode(Buffer& buffer);
- bool operator==(const FieldValue&) const;
- bool operator!=(const FieldValue& v) const { return !(*this == v); }
+ QPID_COMMON_EXTERN bool operator==(const FieldValue&) const;
+ QPID_COMMON_EXTERN bool operator!=(const FieldValue& v) const { return !(*this == v); }
void print(std::ostream& out) const;
@@ -249,12 +250,12 @@ class Str8Value : public FieldValue {
class Str16Value : public FieldValue {
public:
- Str16Value(const std::string& v);
+ QPID_COMMON_EXTERN Str16Value(const std::string& v);
};
class Struct32Value : public FieldValue {
public:
- Struct32Value(const std::string& v);
+ QPID_COMMON_EXTERN Struct32Value(const std::string& v);
};
class FloatValue : public FieldValue
diff --git a/qpid/cpp/src/qpid/framing/FrameSet.h b/qpid/cpp/src/qpid/framing/FrameSet.h
index b13ca16e97..e3e8727600 100644
--- a/qpid/cpp/src/qpid/framing/FrameSet.h
+++ b/qpid/cpp/src/qpid/framing/FrameSet.h
@@ -23,6 +23,7 @@
#include "qpid/framing/amqp_framing.h"
#include "qpid/framing/AMQFrame.h"
#include "qpid/framing/SequenceNumber.h"
+#include "qpid/CommonImportExport.h"
#ifndef _FrameSet_
#define _FrameSet_
@@ -44,20 +45,20 @@ class FrameSet
public:
typedef boost::shared_ptr<FrameSet> shared_ptr;
- FrameSet(const SequenceNumber& id);
- void append(const AMQFrame& part);
- bool isComplete() const;
+ QPID_COMMON_EXTERN FrameSet(const SequenceNumber& id);
+ QPID_COMMON_EXTERN void append(const AMQFrame& part);
+ QPID_COMMON_EXTERN bool isComplete() const;
- uint64_t getContentSize() const;
+ QPID_COMMON_EXTERN uint64_t getContentSize() const;
- void getContent(std::string&) const;
- std::string getContent() const;
+ QPID_COMMON_EXTERN void getContent(std::string&) const;
+ QPID_COMMON_EXTERN std::string getContent() const;
bool isContentBearing() const;
- const AMQMethodBody* getMethod() const;
- const AMQHeaderBody* getHeaders() const;
- AMQHeaderBody* getHeaders();
+ QPID_COMMON_EXTERN const AMQMethodBody* getMethod() const;
+ QPID_COMMON_EXTERN const AMQHeaderBody* getHeaders() const;
+ QPID_COMMON_EXTERN AMQHeaderBody* getHeaders();
template <class T> bool isA() const {
const AMQMethodBody* method = getMethod();
diff --git a/qpid/cpp/src/qpid/framing/ProtocolInitiation.h b/qpid/cpp/src/qpid/framing/ProtocolInitiation.h
index 6584fee55c..7a82b3575f 100644
--- a/qpid/cpp/src/qpid/framing/ProtocolInitiation.h
+++ b/qpid/cpp/src/qpid/framing/ProtocolInitiation.h
@@ -22,6 +22,7 @@
#include "Buffer.h"
#include "AMQDataBlock.h"
#include "ProtocolVersion.h"
+#include "qpid/CommonImportExport.h"
#ifndef _ProtocolInitiation_
#define _ProtocolInitiation_
@@ -35,12 +36,12 @@ private:
ProtocolVersion version;
public:
- ProtocolInitiation();
- ProtocolInitiation(uint8_t major, uint8_t minor);
- ProtocolInitiation(ProtocolVersion p);
- virtual ~ProtocolInitiation();
- virtual void encode(Buffer& buffer) const;
- virtual bool decode(Buffer& buffer);
+ QPID_COMMON_EXTERN ProtocolInitiation();
+ QPID_COMMON_EXTERN ProtocolInitiation(uint8_t major, uint8_t minor);
+ QPID_COMMON_EXTERN ProtocolInitiation(ProtocolVersion p);
+ QPID_COMMON_EXTERN virtual ~ProtocolInitiation();
+ QPID_COMMON_EXTERN virtual void encode(Buffer& buffer) const;
+ QPID_COMMON_EXTERN virtual bool decode(Buffer& buffer);
inline virtual uint32_t encodedSize() const { return 8; }
inline uint8_t getMajor() const { return version.getMajor(); }
inline uint8_t getMinor() const { return version.getMinor(); }
@@ -48,7 +49,7 @@ public:
bool operator==(ProtocolVersion v) const { return v == getVersion(); }
};
-std::ostream& operator<<(std::ostream& o, const framing::ProtocolInitiation& pi);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& o, const framing::ProtocolInitiation& pi);
}
diff --git a/qpid/cpp/src/qpid/framing/ProtocolVersion.h b/qpid/cpp/src/qpid/framing/ProtocolVersion.h
index 9a7ebec491..681c9daf21 100644
--- a/qpid/cpp/src/qpid/framing/ProtocolVersion.h
+++ b/qpid/cpp/src/qpid/framing/ProtocolVersion.h
@@ -22,6 +22,7 @@
#define _ProtocolVersion_
#include "amqp_types.h"
+#include "qpid/CommonImportExport.h"
namespace qpid
{
@@ -38,16 +39,16 @@ public:
explicit ProtocolVersion(uint8_t _major=0, uint8_t _minor=0)
: major_(_major), minor_(_minor) {}
- uint8_t getMajor() const { return major_; }
- void setMajor(uint8_t major) { major_ = major; }
- uint8_t getMinor() const { return minor_; }
- void setMinor(uint8_t minor) { minor_ = minor; }
- const std::string toString() const;
+ QPID_COMMON_EXTERN uint8_t getMajor() const { return major_; }
+ QPID_COMMON_EXTERN void setMajor(uint8_t major) { major_ = major; }
+ QPID_COMMON_EXTERN uint8_t getMinor() const { return minor_; }
+ QPID_COMMON_EXTERN void setMinor(uint8_t minor) { minor_ = minor; }
+ QPID_COMMON_EXTERN const std::string toString() const;
- ProtocolVersion& operator=(ProtocolVersion p);
+ QPID_COMMON_EXTERN ProtocolVersion& operator=(ProtocolVersion p);
- bool operator==(ProtocolVersion p) const;
- bool operator!=(ProtocolVersion p) const { return ! (*this == p); }
+ QPID_COMMON_EXTERN bool operator==(ProtocolVersion p) const;
+ QPID_COMMON_EXTERN bool operator!=(ProtocolVersion p) const { return ! (*this == p); }
};
} // namespace framing
diff --git a/qpid/cpp/src/qpid/framing/Proxy.h b/qpid/cpp/src/qpid/framing/Proxy.h
index 5e2c886af2..a9a6ce981e 100644
--- a/qpid/cpp/src/qpid/framing/Proxy.h
+++ b/qpid/cpp/src/qpid/framing/Proxy.h
@@ -22,6 +22,8 @@
#include "FrameHandler.h"
#include "ProtocolVersion.h"
+#include "qpid/CommonImportExport.h"
+
namespace qpid {
namespace framing {
@@ -37,19 +39,19 @@ class Proxy
{
Proxy& proxy;
public:
- ScopedSync(Proxy& p);
- ~ScopedSync();
+ QPID_COMMON_EXTERN ScopedSync(Proxy& p);
+ QPID_COMMON_EXTERN ~ScopedSync();
};
- Proxy(FrameHandler& h);
- virtual ~Proxy();
+ QPID_COMMON_EXTERN Proxy(FrameHandler& h);
+ QPID_COMMON_EXTERN virtual ~Proxy();
- void send(const AMQBody&);
+ QPID_COMMON_EXTERN void send(const AMQBody&);
- ProtocolVersion getVersion() const;
+ QPID_COMMON_EXTERN ProtocolVersion getVersion() const;
- FrameHandler& getHandler();
- void setHandler(FrameHandler&);
+ QPID_COMMON_EXTERN FrameHandler& getHandler();
+ QPID_COMMON_EXTERN void setHandler(FrameHandler&);
private:
FrameHandler* out;
bool sync;
diff --git a/qpid/cpp/src/qpid/framing/SendContent.h b/qpid/cpp/src/qpid/framing/SendContent.h
index dcd5202b3e..745c948c9e 100644
--- a/qpid/cpp/src/qpid/framing/SendContent.h
+++ b/qpid/cpp/src/qpid/framing/SendContent.h
@@ -22,6 +22,7 @@
#include "qpid/framing/amqp_framing.h"
#include "qpid/framing/AMQFrame.h"
#include "qpid/framing/FrameHandler.h"
+#include "qpid/CommonImportExport.h"
#ifndef _SendContent_
#define _SendContent_
@@ -44,8 +45,8 @@ class SendContent
void sendFragment(const AMQContentBody& body, uint32_t offset, uint16_t size, bool first, bool last) const;
void setFlags(AMQFrame& f, bool first, bool last) const;
public:
- SendContent(FrameHandler& _handler, uint16_t _maxFrameSize, uint frameCount);
- void operator()(const AMQFrame& f);
+ QPID_COMMON_EXTERN SendContent(FrameHandler& _handler, uint16_t _maxFrameSize, uint frameCount);
+ QPID_COMMON_EXTERN void operator()(const AMQFrame& f);
};
}
diff --git a/qpid/cpp/src/qpid/framing/SequenceNumber.h b/qpid/cpp/src/qpid/framing/SequenceNumber.h
index 930e146863..3b18ce1360 100644
--- a/qpid/cpp/src/qpid/framing/SequenceNumber.h
+++ b/qpid/cpp/src/qpid/framing/SequenceNumber.h
@@ -23,6 +23,7 @@
#include "amqp_types.h"
#include <iosfwd>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -37,22 +38,22 @@ class SequenceNumber
int32_t value;
public:
- SequenceNumber();
- SequenceNumber(uint32_t v);
+ QPID_COMMON_EXTERN SequenceNumber();
+ QPID_COMMON_EXTERN SequenceNumber(uint32_t v);
- SequenceNumber& operator++();//prefix ++
- const SequenceNumber operator++(int);//postfix ++
- SequenceNumber& operator--();//prefix ++
- bool operator==(const SequenceNumber& other) const;
- bool operator!=(const SequenceNumber& other) const;
- bool operator<(const SequenceNumber& other) const;
- bool operator>(const SequenceNumber& other) const;
- bool operator<=(const SequenceNumber& other) const;
- bool operator>=(const SequenceNumber& other) const;
+ QPID_COMMON_EXTERN SequenceNumber& operator++();//prefix ++
+ QPID_COMMON_EXTERN const SequenceNumber operator++(int);//postfix ++
+ QPID_COMMON_EXTERN SequenceNumber& operator--();//prefix ++
+ QPID_COMMON_EXTERN bool operator==(const SequenceNumber& other) const;
+ QPID_COMMON_EXTERN bool operator!=(const SequenceNumber& other) const;
+ QPID_COMMON_EXTERN bool operator<(const SequenceNumber& other) const;
+ QPID_COMMON_EXTERN bool operator>(const SequenceNumber& other) const;
+ QPID_COMMON_EXTERN bool operator<=(const SequenceNumber& other) const;
+ QPID_COMMON_EXTERN bool operator>=(const SequenceNumber& other) const;
uint32_t getValue() const { return (uint32_t) value; }
operator uint32_t() const { return (uint32_t) value; }
- friend int32_t operator-(const SequenceNumber& a, const SequenceNumber& b);
+ QPID_COMMON_EXTERN friend int32_t operator-(const SequenceNumber& a, const SequenceNumber& b);
void encode(Buffer& buffer) const;
void decode(Buffer& buffer);
@@ -67,7 +68,7 @@ struct Window
SequenceNumber lwm;
};
-std::ostream& operator<<(std::ostream& o, const SequenceNumber& n);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream& o, const SequenceNumber& n);
}} // namespace qpid::framing
diff --git a/qpid/cpp/src/qpid/framing/SequenceNumberSet.h b/qpid/cpp/src/qpid/framing/SequenceNumberSet.h
index 666307f9d9..5ca40340b8 100644
--- a/qpid/cpp/src/qpid/framing/SequenceNumberSet.h
+++ b/qpid/cpp/src/qpid/framing/SequenceNumberSet.h
@@ -27,6 +27,7 @@
#include "SequenceNumber.h"
#include "qpid/framing/reply_exceptions.h"
#include "qpid/InlineVector.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -41,7 +42,7 @@ public:
void encode(Buffer& buffer) const;
void decode(Buffer& buffer);
uint32_t encodedSize() const;
- SequenceNumberSet condense() const;
+ QPID_COMMON_EXTERN SequenceNumberSet condense() const;
void addRange(const SequenceNumber& start, const SequenceNumber& end);
template <class T>
diff --git a/qpid/cpp/src/qpid/framing/SequenceSet.h b/qpid/cpp/src/qpid/framing/SequenceSet.h
index 57b9c2c8e1..b5db9af76f 100644
--- a/qpid/cpp/src/qpid/framing/SequenceSet.h
+++ b/qpid/cpp/src/qpid/framing/SequenceSet.h
@@ -23,6 +23,7 @@
#include "SequenceNumber.h"
#include "qpid/RangeSet.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -41,13 +42,13 @@ class SequenceSet : public RangeSet<SequenceNumber> {
void decode(Buffer& buffer);
uint32_t encodedSize() const;
- bool contains(const SequenceNumber& s) const;
- void add(const SequenceNumber& s);
- void add(const SequenceNumber& start, const SequenceNumber& finish); // Closed range
- void add(const SequenceSet& set);
- void remove(const SequenceNumber& s);
- void remove(const SequenceNumber& start, const SequenceNumber& finish); // Closed range
- void remove(const SequenceSet& set);
+ QPID_COMMON_EXTERN bool contains(const SequenceNumber& s) const;
+ QPID_COMMON_EXTERN void add(const SequenceNumber& s);
+ QPID_COMMON_EXTERN void add(const SequenceNumber& start, const SequenceNumber& finish); // Closed range
+ QPID_COMMON_EXTERN void add(const SequenceSet& set);
+ QPID_COMMON_EXTERN void remove(const SequenceNumber& s);
+ QPID_COMMON_EXTERN void remove(const SequenceNumber& start, const SequenceNumber& finish); // Closed range
+ QPID_COMMON_EXTERN void remove(const SequenceSet& set);
template <class T> void for_each(T& t) const {
for (RangeIterator i = rangesBegin(); i != rangesEnd(); i++)
diff --git a/qpid/cpp/src/qpid/framing/StructHelper.h b/qpid/cpp/src/qpid/framing/StructHelper.h
index e3dce4f5ec..89f556ad3c 100644
--- a/qpid/cpp/src/qpid/framing/StructHelper.h
+++ b/qpid/cpp/src/qpid/framing/StructHelper.h
@@ -22,6 +22,7 @@
#define _StructHelper_
#include "qpid/Exception.h"
+#include "qpid/CommonImportExport.h"
#include "Buffer.h"
#include <stdlib.h> // For alloca
diff --git a/qpid/cpp/src/qpid/framing/TransferContent.h b/qpid/cpp/src/qpid/framing/TransferContent.h
index e3f6666fa4..236a0b6d93 100644
--- a/qpid/cpp/src/qpid/framing/TransferContent.h
+++ b/qpid/cpp/src/qpid/framing/TransferContent.h
@@ -26,6 +26,7 @@
#include "qpid/Exception.h"
#include "qpid/framing/MessageProperties.h"
#include "qpid/framing/DeliveryProperties.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace framing {
@@ -36,27 +37,27 @@ class TransferContent : public MethodContent
AMQHeaderBody header;
std::string data;
public:
- TransferContent(const std::string& data = std::string(), const std::string& key=std::string());
+ QPID_COMMON_EXTERN TransferContent(const std::string& data = std::string(), const std::string& key=std::string());
///@internal
- AMQHeaderBody getHeader() const;
+ QPID_COMMON_EXTERN AMQHeaderBody getHeader() const;
- void setData(const std::string&);
- const std::string& getData() const;
- std::string& getData();
+ QPID_COMMON_EXTERN void setData(const std::string&);
+ QPID_COMMON_EXTERN const std::string& getData() const;
+ QPID_COMMON_EXTERN std::string& getData();
- void appendData(const std::string&);
+ QPID_COMMON_EXTERN void appendData(const std::string&);
- bool hasMessageProperties() const;
- MessageProperties& getMessageProperties();
- const MessageProperties& getMessageProperties() const;
+ QPID_COMMON_EXTERN bool hasMessageProperties() const;
+ QPID_COMMON_EXTERN MessageProperties& getMessageProperties();
+ QPID_COMMON_EXTERN const MessageProperties& getMessageProperties() const;
- bool hasDeliveryProperties() const;
- DeliveryProperties& getDeliveryProperties();
- const DeliveryProperties& getDeliveryProperties() const;
+ QPID_COMMON_EXTERN bool hasDeliveryProperties() const;
+ QPID_COMMON_EXTERN DeliveryProperties& getDeliveryProperties();
+ QPID_COMMON_EXTERN const DeliveryProperties& getDeliveryProperties() const;
///@internal
- void populate(const FrameSet& frameset);
+ QPID_COMMON_EXTERN void populate(const FrameSet& frameset);
};
}}
diff --git a/qpid/cpp/src/qpid/framing/Uuid.h b/qpid/cpp/src/qpid/framing/Uuid.h
index 2fcbb5a261..42dc31a26d 100644
--- a/qpid/cpp/src/qpid/framing/Uuid.h
+++ b/qpid/cpp/src/qpid/framing/Uuid.h
@@ -20,6 +20,7 @@
*/
#include "qpid/sys/uuid.h"
+#include "qpid/CommonImportExport.h"
#include <boost/array.hpp>
@@ -63,12 +64,12 @@ struct Uuid : public boost::array<uint8_t, 16> {
// Default op= and copy ctor are fine.
// boost::array gives us ==, < etc.
- void encode(framing::Buffer& buf) const;
- void decode(framing::Buffer& buf);
- uint32_t encodedSize() const { return size(); }
+ QPID_COMMON_EXTERN void encode(framing::Buffer& buf) const;
+ QPID_COMMON_EXTERN void decode(framing::Buffer& buf);
+ QPID_COMMON_EXTERN uint32_t encodedSize() const { return size(); }
/** String value in format 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb. */
- std::string str() const;
+ QPID_COMMON_EXTERN std::string str() const;
template <class S> void serialize(S& s) {
s.raw(begin(), size());
@@ -76,10 +77,10 @@ struct Uuid : public boost::array<uint8_t, 16> {
};
/** Print in format 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb. */
-std::ostream& operator<<(std::ostream&, Uuid);
+QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, Uuid);
/** Read from format 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb. */
-std::istream& operator>>(std::istream&, Uuid&);
+QPID_COMMON_EXTERN std::istream& operator>>(std::istream&, Uuid&);
}} // namespace qpid::framing
diff --git a/qpid/cpp/src/qpid/log/Logger.h b/qpid/cpp/src/qpid/log/Logger.h
index 539c1c851b..aba6999f79 100644
--- a/qpid/cpp/src/qpid/log/Logger.h
+++ b/qpid/cpp/src/qpid/log/Logger.h
@@ -18,6 +18,7 @@
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/noncopyable.hpp>
#include <set>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace log {
@@ -54,42 +55,42 @@ class Logger : private boost::noncopyable {
virtual void log(const Statement&, const std::string&) =0;
};
- static Logger& instance();
+ QPID_COMMON_EXTERN static Logger& instance();
- Logger();
- ~Logger();
+ QPID_COMMON_EXTERN Logger();
+ QPID_COMMON_EXTERN ~Logger();
/** Select the messages to be logged. */
- void select(const Selector& s);
+ QPID_COMMON_EXTERN void select(const Selector& s);
/** Set the formatting flags, bitwise OR of FormatFlag values. */
- void format(int formatFlags);
+ QPID_COMMON_EXTERN void format(int formatFlags);
/** Set format flags from options object.
*@returns computed flags.
*/
- int format(const Options&);
+ QPID_COMMON_EXTERN int format(const Options&);
/** Configure logger from Options */
- void configure(const Options& o);
+ QPID_COMMON_EXTERN void configure(const Options& o);
/** Add a statement. */
- void add(Statement& s);
+ QPID_COMMON_EXTERN void add(Statement& s);
/** Log a message. */
- void log(const Statement&, const std::string&);
+ QPID_COMMON_EXTERN void log(const Statement&, const std::string&);
/** Add an output destination for messages */
- void output(std::auto_ptr<Output> out);
+ QPID_COMMON_EXTERN void output(std::auto_ptr<Output> out);
/** Set a prefix for all messages */
- void setPrefix(const std::string& prefix);
+ QPID_COMMON_EXTERN void setPrefix(const std::string& prefix);
/** Reset the logger. */
- void clear();
+ QPID_COMMON_EXTERN void clear();
/** Get the options used to configure the logger. */
- const Options& getOptions() const { return options; }
+ QPID_COMMON_EXTERN const Options& getOptions() const { return options; }
private:
diff --git a/qpid/cpp/src/qpid/log/Options.h b/qpid/cpp/src/qpid/log/Options.h
index 8a3c352d14..5e7bd433af 100644
--- a/qpid/cpp/src/qpid/log/Options.h
+++ b/qpid/cpp/src/qpid/log/Options.h
@@ -19,6 +19,7 @@
*
*/
#include "qpid/Options.h"
+#include "qpid/CommonImportExport.h"
#include "SinkOptions.h"
#include <iosfwd>
#include <memory>
@@ -29,11 +30,11 @@ namespace log {
/** Logging options for config parser. */
struct Options : public qpid::Options {
/** Pass argv[0] for use in syslog output */
- Options(const std::string& argv0_=std::string(),
+ QPID_COMMON_EXTERN Options(const std::string& argv0_=std::string(),
const std::string& name_="Logging options");
- Options(const Options &);
+ QPID_COMMON_EXTERN Options(const Options &);
- Options& operator=(const Options&);
+ QPID_COMMON_EXTERN Options& operator=(const Options&);
std::string argv0;
std::string name;
diff --git a/qpid/cpp/src/qpid/log/Statement.h b/qpid/cpp/src/qpid/log/Statement.h
index 3c67b04b20..445f635cdd 100644
--- a/qpid/cpp/src/qpid/log/Statement.h
+++ b/qpid/cpp/src/qpid/log/Statement.h
@@ -20,7 +20,7 @@
*/
#include "qpid/Msg.h"
-
+#include "qpid/CommonImportExport.h"
#include <boost/current_function.hpp>
namespace qpid {
@@ -63,10 +63,10 @@ struct Statement {
const char* function;
Level level;
- void log(const std::string& message);
+ QPID_COMMON_EXTERN void log(const std::string& message);
struct Initializer {
- Initializer(Statement& s);
+ QPID_COMMON_EXTERN Initializer(Statement& s);
Statement& statement;
};
};
diff --git a/qpid/cpp/src/qpid/management/Manageable.h b/qpid/cpp/src/qpid/management/Manageable.h
index b4d80d8fad..d4c1a5e100 100644
--- a/qpid/cpp/src/qpid/management/Manageable.h
+++ b/qpid/cpp/src/qpid/management/Manageable.h
@@ -23,6 +23,7 @@
#include "ManagementObject.h"
#include "Args.h"
#include <string>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace management {
@@ -36,7 +37,7 @@ class Manageable
// status_t is a type used to pass completion status from the method handler.
//
typedef uint32_t status_t;
- static std::string StatusText(status_t status, std::string text = std::string());
+ QPID_COMMON_EXTERN static std::string StatusText(status_t status, std::string text = std::string());
static const status_t STATUS_OK = 0;
static const status_t STATUS_UNKNOWN_OBJECT = 1;
@@ -61,7 +62,7 @@ class Manageable
// on this object. The input and output arguments are specific to the
// method being called and must be down-cast to the appropriate sub class
// before use.
- virtual status_t ManagementMethod(uint32_t methodId, Args& args, std::string& text);
+ QPID_COMMON_EXTERN virtual status_t ManagementMethod(uint32_t methodId, Args& args, std::string& text);
};
inline Manageable::~Manageable(void) {}
diff --git a/qpid/cpp/src/qpid/management/ManagementObject.h b/qpid/cpp/src/qpid/management/ManagementObject.h
index fbdad347b8..768578ef2f 100644
--- a/qpid/cpp/src/qpid/management/ManagementObject.h
+++ b/qpid/cpp/src/qpid/management/ManagementObject.h
@@ -25,6 +25,7 @@
#include "qpid/sys/Time.h"
#include "qpid/sys/Mutex.h"
#include <qpid/framing/Buffer.h>
+#include "qpid/CommonImportExport.h"
#include <map>
namespace qpid {
@@ -53,16 +54,16 @@ protected:
uint64_t second;
void fromString(const std::string&);
public:
- ObjectId() : agent(0), first(0), second(0) {}
- ObjectId(framing::Buffer& buf) : agent(0) { decode(buf); }
- ObjectId(uint8_t flags, uint16_t seq, uint32_t broker, uint32_t bank, uint64_t object);
- ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq, uint64_t object);
- ObjectId(std::istream&);
- ObjectId(const std::string&);
- bool operator==(const ObjectId &other) const;
- bool operator<(const ObjectId &other) const;
- void encode(framing::Buffer& buffer);
- void decode(framing::Buffer& buffer);
+ QPID_COMMON_EXTERN ObjectId() : agent(0), first(0), second(0) {}
+ QPID_COMMON_EXTERN ObjectId(framing::Buffer& buf) : agent(0) { decode(buf); }
+ QPID_COMMON_EXTERN ObjectId(uint8_t flags, uint16_t seq, uint32_t broker, uint32_t bank, uint64_t object);
+ QPID_COMMON_EXTERN ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq, uint64_t object);
+ QPID_COMMON_EXTERN ObjectId(std::istream&);
+ QPID_COMMON_EXTERN ObjectId(const std::string&);
+ QPID_COMMON_EXTERN bool operator==(const ObjectId &other) const;
+ QPID_COMMON_EXTERN bool operator<(const ObjectId &other) const;
+ QPID_COMMON_EXTERN void encode(framing::Buffer& buffer);
+ QPID_COMMON_EXTERN void decode(framing::Buffer& buffer);
friend std::ostream& operator<<(std::ostream&, const ObjectId&);
};
@@ -128,8 +129,8 @@ class ManagementObject : public ManagementItem
static int nextThreadIndex;
bool forcePublish;
- int getThreadIndex();
- void writeTimestamps(qpid::framing::Buffer& buf);
+ QPID_COMMON_EXTERN int getThreadIndex();
+ QPID_COMMON_EXTERN void writeTimestamps(qpid::framing::Buffer& buf);
public:
typedef void (*writeSchemaCall_t) (qpid::framing::Buffer&);
@@ -148,7 +149,7 @@ class ManagementObject : public ManagementItem
virtual void doMethod(std::string& methodName,
qpid::framing::Buffer& inBuf,
qpid::framing::Buffer& outBuf) = 0;
- virtual void setReference(ObjectId objectId);
+ QPID_COMMON_EXTERN virtual void setReference(ObjectId objectId);
virtual std::string& getClassName() const = 0;
virtual std::string& getPackageName() const = 0;
diff --git a/qpid/cpp/src/qpid/sys/AggregateOutput.h b/qpid/cpp/src/qpid/sys/AggregateOutput.h
index 1cda4456b4..fcd0d4c2f7 100644
--- a/qpid/cpp/src/qpid/sys/AggregateOutput.h
+++ b/qpid/cpp/src/qpid/sys/AggregateOutput.h
@@ -24,6 +24,7 @@
#include "Mutex.h"
#include "OutputControl.h"
#include "OutputTask.h"
+#include "qpid/CommonImportExport.h"
#include <algorithm>
#include <vector>
@@ -42,15 +43,15 @@ namespace sys {
public:
AggregateOutput(OutputControl& c) : next(0), control(c) {};
//this may be called on any thread
- void activateOutput();
- void giveReadCredit(int32_t);
+ QPID_COMMON_EXTERN void activateOutput();
+ QPID_COMMON_EXTERN void giveReadCredit(int32_t);
//all the following will be called on the same thread
- bool doOutput();
- bool hasOutput();
- void addOutputTask(OutputTask* t);
- void removeOutputTask(OutputTask* t);
- void removeAll();
+ QPID_COMMON_EXTERN bool doOutput();
+ QPID_COMMON_EXTERN bool hasOutput();
+ QPID_COMMON_EXTERN void addOutputTask(OutputTask* t);
+ QPID_COMMON_EXTERN void removeOutputTask(OutputTask* t);
+ QPID_COMMON_EXTERN void removeAll();
/** Apply f to each OutputTask* in the tasks list */
template <class F> void eachOutput(F f) {
diff --git a/qpid/cpp/src/qpid/sys/AsynchIO.h b/qpid/cpp/src/qpid/sys/AsynchIO.h
index ffd4436c2a..fb02183359 100644
--- a/qpid/cpp/src/qpid/sys/AsynchIO.h
+++ b/qpid/cpp/src/qpid/sys/AsynchIO.h
@@ -22,7 +22,7 @@
*/
#include "qpid/sys/IntegerTypes.h"
-
+#include "qpid/CommonImportExport.h"
#include <boost/function.hpp>
#include <boost/shared_ptr.hpp>
@@ -45,9 +45,9 @@ private:
AsynchAcceptorPrivate* impl;
public:
- AsynchAcceptor(const Socket& s, Callback callback);
- ~AsynchAcceptor();
- void start(boost::shared_ptr<Poller> poller);
+ QPID_COMMON_EXTERN AsynchAcceptor(const Socket& s, Callback callback);
+ QPID_COMMON_EXTERN ~AsynchAcceptor();
+ QPID_COMMON_EXTERN void start(boost::shared_ptr<Poller> poller);
};
/*
@@ -65,7 +65,7 @@ public:
// create a correctly typed object. The platform code also manages
// deletes. To correctly manage heaps when needed, the allocate and
// delete should both be done from the same class/library.
- static AsynchConnector* create(const Socket& s,
+ QPID_COMMON_EXTERN static AsynchConnector* create(const Socket& s,
boost::shared_ptr<Poller> poller,
std::string hostname,
uint16_t port,
@@ -121,7 +121,7 @@ public:
// create a correctly typed object. The platform code also manages
// deletes. To correctly manage heaps when needed, the allocate and
// delete should both be done from the same class/library.
- static AsynchIO* create(const Socket& s,
+ QPID_COMMON_EXTERN static AsynchIO* create(const Socket& s,
ReadCallback rCb,
EofCallback eofCb,
DisconnectCallback disCb,
diff --git a/qpid/cpp/src/qpid/sys/AsynchIOHandler.h b/qpid/cpp/src/qpid/sys/AsynchIOHandler.h
index fa020fbce4..9f1d043b62 100644
--- a/qpid/cpp/src/qpid/sys/AsynchIOHandler.h
+++ b/qpid/cpp/src/qpid/sys/AsynchIOHandler.h
@@ -25,6 +25,7 @@
#include "ConnectionCodec.h"
#include "AtomicValue.h"
#include "Mutex.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
@@ -52,26 +53,26 @@ class AsynchIOHandler : public OutputControl {
void write(const framing::ProtocolInitiation&);
public:
- AsynchIOHandler(std::string id, ConnectionCodec::Factory* f);
- ~AsynchIOHandler();
- void init(AsynchIO* a, int numBuffs);
+ QPID_COMMON_EXTERN AsynchIOHandler(std::string id, ConnectionCodec::Factory* f);
+ QPID_COMMON_EXTERN ~AsynchIOHandler();
+ QPID_COMMON_EXTERN void init(AsynchIO* a, int numBuffs);
- void setClient() { isClient = true; }
+ QPID_COMMON_EXTERN void setClient() { isClient = true; }
// Output side
- void close();
- void activateOutput();
- void giveReadCredit(int32_t credit);
+ QPID_COMMON_EXTERN void close();
+ QPID_COMMON_EXTERN void activateOutput();
+ QPID_COMMON_EXTERN void giveReadCredit(int32_t credit);
// Input side
- bool readbuff(AsynchIO& aio, AsynchIOBufferBase* buff);
- void eof(AsynchIO& aio);
- void disconnect(AsynchIO& aio);
+ QPID_COMMON_EXTERN bool readbuff(AsynchIO& aio, AsynchIOBufferBase* buff);
+ QPID_COMMON_EXTERN void eof(AsynchIO& aio);
+ QPID_COMMON_EXTERN void disconnect(AsynchIO& aio);
// Notifications
- void nobuffs(AsynchIO& aio);
- void idle(AsynchIO& aio);
- void closedSocket(AsynchIO& aio, const Socket& s);
+ QPID_COMMON_EXTERN void nobuffs(AsynchIO& aio);
+ QPID_COMMON_EXTERN void idle(AsynchIO& aio);
+ QPID_COMMON_EXTERN void closedSocket(AsynchIO& aio, const Socket& s);
};
}} // namespace qpid::sys
diff --git a/qpid/cpp/src/qpid/sys/DispatchHandle.h b/qpid/cpp/src/qpid/sys/DispatchHandle.h
index ffcbd80f7e..63cd25f8fd 100644
--- a/qpid/cpp/src/qpid/sys/DispatchHandle.h
+++ b/qpid/cpp/src/qpid/sys/DispatchHandle.h
@@ -24,7 +24,7 @@
#include "Poller.h"
#include "Mutex.h"
-
+#include "qpid/CommonImportExport.h"
#include <boost/function.hpp>
#include <queue>
@@ -82,7 +82,7 @@ public:
*@param wCb Callback called when the handle is writable.
*@param dCb Callback called when the handle is disconnected.
*/
- DispatchHandle(const IOHandle& h, Callback rCb, Callback wCb, Callback dCb) :
+ QPID_COMMON_EXTERN DispatchHandle(const IOHandle& h, Callback rCb, Callback wCb, Callback dCb) :
PollerHandle(h),
readableCallback(rCb),
writableCallback(wCb),
@@ -90,42 +90,42 @@ public:
state(IDLE)
{}
- ~DispatchHandle();
+ QPID_COMMON_EXTERN ~DispatchHandle();
/** Add this DispatchHandle to the poller to be watched. */
- void startWatch(Poller::shared_ptr poller);
+ QPID_COMMON_EXTERN void startWatch(Poller::shared_ptr poller);
/** Resume watching for all non-0 callbacks. */
- void rewatch();
+ QPID_COMMON_EXTERN void rewatch();
/** Resume watching for read only. */
- void rewatchRead();
+ QPID_COMMON_EXTERN void rewatchRead();
/** Resume watching for write only. */
- void rewatchWrite();
+ QPID_COMMON_EXTERN void rewatchWrite();
/** Stop watching temporarily. The DispatchHandle remains
associated with the poller and can be re-activated using
rewatch. */
- void unwatch();
+ QPID_COMMON_EXTERN void unwatch();
/** Stop watching for read */
- void unwatchRead();
+ QPID_COMMON_EXTERN void unwatchRead();
/** Stop watching for write */
- void unwatchWrite();
+ QPID_COMMON_EXTERN void unwatchWrite();
/** Stop watching permanently. Disassociates from the poller. */
- void stopWatch();
+ QPID_COMMON_EXTERN void stopWatch();
/** Interrupt watching this handle and make a serialised callback that respects the
* same exclusivity guarantees as the other callbacks
*/
- void call(Callback iCb);
+ QPID_COMMON_EXTERN void call(Callback iCb);
protected:
/** Override to get extra processing done when the DispatchHandle is deleted. */
- void doDelete();
+ QPID_COMMON_EXTERN void doDelete();
private:
- void processEvent(Poller::EventType dir);
+ QPID_COMMON_EXTERN void processEvent(Poller::EventType dir);
};
class DispatchHandleRef {
diff --git a/qpid/cpp/src/qpid/sys/Dispatcher.h b/qpid/cpp/src/qpid/sys/Dispatcher.h
index f7c9e8d731..2f3ed10901 100644
--- a/qpid/cpp/src/qpid/sys/Dispatcher.h
+++ b/qpid/cpp/src/qpid/sys/Dispatcher.h
@@ -24,6 +24,7 @@
#include "Poller.h"
#include "Runnable.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace sys {
@@ -32,10 +33,10 @@ class Dispatcher : public Runnable {
const Poller::shared_ptr poller;
public:
- Dispatcher(Poller::shared_ptr poller);
- ~Dispatcher();
+ QPID_COMMON_EXTERN Dispatcher(Poller::shared_ptr poller);
+ QPID_COMMON_EXTERN ~Dispatcher();
- void run();
+ QPID_COMMON_EXTERN void run();
};
}}
diff --git a/qpid/cpp/src/qpid/sys/IOHandle.h b/qpid/cpp/src/qpid/sys/IOHandle.h
index 0bf2abbafa..656e5e1efd 100644
--- a/qpid/cpp/src/qpid/sys/IOHandle.h
+++ b/qpid/cpp/src/qpid/sys/IOHandle.h
@@ -22,6 +22,8 @@
*
*/
+#include "qpid/CommonImportExport.h"
+
namespace qpid {
namespace sys {
@@ -50,8 +52,8 @@ class IOHandle {
protected:
IOHandlePrivate* const impl;
- IOHandle(IOHandlePrivate*);
- virtual ~IOHandle();
+ IOHandle(IOHandlePrivate*);
+ QPID_COMMON_EXTERN virtual ~IOHandle();
};
}}
diff --git a/qpid/cpp/src/qpid/sys/PollableCondition.h b/qpid/cpp/src/qpid/sys/PollableCondition.h
index 49e84e6cb0..f49fb22cb4 100644
--- a/qpid/cpp/src/qpid/sys/PollableCondition.h
+++ b/qpid/cpp/src/qpid/sys/PollableCondition.h
@@ -23,6 +23,7 @@
*/
#include "qpid/sys/Poller.h"
+#include "qpid/CommonImportExport.h"
#include <boost/function.hpp>
#include <boost/shared_ptr.hpp>
@@ -36,35 +37,35 @@ class PollableCondition {
public:
typedef boost::function1<void, PollableCondition&> Callback;
- PollableCondition(const Callback& cb,
+ QPID_COMMON_EXTERN PollableCondition(const Callback& cb,
const boost::shared_ptr<sys::Poller>& poller);
- ~PollableCondition();
+ QPID_COMMON_EXTERN ~PollableCondition();
/**
* Set the condition. Triggers callback to Callback from Poller.
* When callback is made, condition is suspended. Call rearm() to
* resume reacting to the condition.
*/
- void set();
+ QPID_COMMON_EXTERN void set();
/**
* Get the current state of the condition, then clear it.
*
* @return The state of the condition before it was cleared.
*/
- bool clear();
+ QPID_COMMON_EXTERN bool clear();
/**
* Temporarily suspend the ability for the poller to react to the
* condition. It can be rearm()ed later.
*/
- void disarm();
+ QPID_COMMON_EXTERN void disarm();
/**
* Reset the ability for the poller to react to the condition.
*/
- void rearm();
+ QPID_COMMON_EXTERN void rearm();
private:
PollableConditionPrivate *impl;
diff --git a/qpid/cpp/src/qpid/sys/Poller.h b/qpid/cpp/src/qpid/sys/Poller.h
index 8e9f67fefd..49d7b321d7 100644
--- a/qpid/cpp/src/qpid/sys/Poller.h
+++ b/qpid/cpp/src/qpid/sys/Poller.h
@@ -24,7 +24,7 @@
#include "Time.h"
#include "Runnable.h"
-
+#include "qpid/CommonImportExport.h"
#include <boost/shared_ptr.hpp>
namespace qpid {
@@ -74,10 +74,10 @@ public:
void process();
};
- Poller();
- ~Poller();
+ QPID_COMMON_EXTERN Poller();
+ QPID_COMMON_EXTERN ~Poller();
/** Note: this function is async-signal safe */
- void shutdown();
+ QPID_COMMON_EXTERN void shutdown();
// Interrupt waiting for a specific poller handle
// returns true if we could interrupt the handle
@@ -88,16 +88,16 @@ public:
// - This can either be because it has just received an event which has been
// reported and has not been reenabled since. Or because it was removed
// from the monitoring set
- bool interrupt(PollerHandle& handle);
+ QPID_COMMON_EXTERN bool interrupt(PollerHandle& handle);
// Poller run loop
- void run();
+ QPID_COMMON_EXTERN void run();
- void addFd(PollerHandle& handle, Direction dir);
- void delFd(PollerHandle& handle);
- void modFd(PollerHandle& handle, Direction dir);
- void rearmFd(PollerHandle& handle);
- Event wait(Duration timeout = TIME_INFINITE);
+ QPID_COMMON_EXTERN void addFd(PollerHandle& handle, Direction dir);
+ QPID_COMMON_EXTERN void delFd(PollerHandle& handle);
+ QPID_COMMON_EXTERN void modFd(PollerHandle& handle, Direction dir);
+ QPID_COMMON_EXTERN void rearmFd(PollerHandle& handle);
+ QPID_COMMON_EXTERN Event wait(Duration timeout = TIME_INFINITE);
};
/**
@@ -110,11 +110,11 @@ class PollerHandle {
friend struct Poller::Event;
PollerHandlePrivate* const impl;
- virtual void processEvent(Poller::EventType) {};
+ QPID_COMMON_EXTERN virtual void processEvent(Poller::EventType) {};
public:
- PollerHandle(const IOHandle& h);
- virtual ~PollerHandle();
+ QPID_COMMON_EXTERN PollerHandle(const IOHandle& h);
+ QPID_COMMON_EXTERN virtual ~PollerHandle();
};
inline void Poller::Event::process() {
diff --git a/qpid/cpp/src/qpid/sys/Runnable.h b/qpid/cpp/src/qpid/sys/Runnable.h
index fb3927c612..4bf43c93d1 100644
--- a/qpid/cpp/src/qpid/sys/Runnable.h
+++ b/qpid/cpp/src/qpid/sys/Runnable.h
@@ -22,6 +22,7 @@
*/
#include <boost/function.hpp>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace sys {
@@ -35,7 +36,7 @@ class Runnable
/** Type to represent a runnable as a Functor */
typedef boost::function0<void> Functor;
- virtual ~Runnable();
+ QPID_COMMON_EXTERN virtual ~Runnable();
/** Derived classes override run(). */
virtual void run() = 0;
diff --git a/qpid/cpp/src/qpid/sys/Socket.h b/qpid/cpp/src/qpid/sys/Socket.h
index ae48b8104d..f828d255bd 100644
--- a/qpid/cpp/src/qpid/sys/Socket.h
+++ b/qpid/cpp/src/qpid/sys/Socket.h
@@ -24,7 +24,7 @@
#include "IOHandle.h"
#include "qpid/sys/IntegerTypes.h"
-
+#include "qpid/CommonImportExport.h"
#include <string>
struct sockaddr;
@@ -38,7 +38,7 @@ class Socket : public IOHandle
{
public:
/** Create a socket wrapper for descriptor. */
- Socket();
+ QPID_COMMON_EXTERN Socket();
/** Create an initialized TCP socket */
void createTcp() const;
@@ -49,21 +49,21 @@ public:
/** Set socket non blocking */
void setNonblocking() const;
- void connect(const std::string& host, uint16_t port) const;
+ QPID_COMMON_EXTERN void connect(const std::string& host, uint16_t port) const;
- void close() const;
+ QPID_COMMON_EXTERN void close() const;
/** Bind to a port and start listening.
*@param port 0 means choose an available port.
*@param backlog maximum number of pending connections.
*@return The bound port.
*/
- int listen(uint16_t port = 0, int backlog = 10) const;
+ QPID_COMMON_EXTERN int listen(uint16_t port = 0, int backlog = 10) const;
/** Returns the "socket name" ie the address bound to
* the near end of the socket
*/
- std::string getSockname() const;
+ QPID_COMMON_EXTERN std::string getSockname() const;
/** Returns the "peer name" ie the address bound to
* the remote end of the socket
@@ -74,14 +74,14 @@ public:
* Returns an address (host and port) for the remote end of the
* socket
*/
- std::string getPeerAddress() const;
+ QPID_COMMON_EXTERN std::string getPeerAddress() const;
/**
* Returns an address (host and port) for the local end of the
* socket
*/
std::string getLocalAddress() const;
- uint16_t getLocalPort() const;
+ QPID_COMMON_EXTERN uint16_t getLocalPort() const;
uint16_t getRemotePort() const;
/**
@@ -99,7 +99,7 @@ public:
int read(void *buf, size_t count) const;
int write(const void *buf, size_t count) const;
- void setTcpNoDelay(bool nodelay) const;
+ QPID_COMMON_EXTERN void setTcpNoDelay(bool nodelay) const;
private:
Socket(IOHandlePrivate*);
diff --git a/qpid/cpp/src/qpid/sys/StrError.h b/qpid/cpp/src/qpid/sys/StrError.h
index 3843f2abe1..69cc7e714c 100644
--- a/qpid/cpp/src/qpid/sys/StrError.h
+++ b/qpid/cpp/src/qpid/sys/StrError.h
@@ -23,12 +23,13 @@
*/
#include <string>
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace sys {
/** Get the error message for a system number err, e.g. errno. */
-std::string strError(int err);
+QPID_COMMON_EXTERN std::string strError(int err);
}} // namespace qpid
diff --git a/qpid/cpp/src/qpid/sys/SystemInfo.h b/qpid/cpp/src/qpid/sys/SystemInfo.h
index 017a05e2c5..6e97022b36 100644
--- a/qpid/cpp/src/qpid/sys/SystemInfo.h
+++ b/qpid/cpp/src/qpid/sys/SystemInfo.h
@@ -23,6 +23,7 @@
#include "qpid/sys/IntegerTypes.h"
#include "qpid/Address.h"
+#include "qpid/CommonImportExport.h"
namespace qpid {
namespace sys {
@@ -36,15 +37,15 @@ namespace SystemInfo {
* Estimate available concurrency, e.g. number of CPU cores.
* -1 means estimate not available on this platform.
*/
- long concurrency();
+ QPID_COMMON_EXTERN long concurrency();
/**
* Get the local host name and set it in the specified TcpAddress.
* Returns false if it can't be obtained and sets errno to any error value.
*/
- bool getLocalHostname (TcpAddress &address);
+ QPID_COMMON_EXTERN bool getLocalHostname (TcpAddress &address);
- void getLocalIpAddresses (uint16_t port, std::vector<Address> &addrList);
+ QPID_COMMON_EXTERN void getLocalIpAddresses (uint16_t port, std::vector<Address> &addrList);
/**
* Retrieve system identifiers and versions. This is information that can
@@ -57,7 +58,7 @@ namespace SystemInfo {
* @param version Receives the OS release version (kernel, build, sp, etc.)
* @param machine Receives the hardware type.
*/
- void getSystemId (std::string &osName,
+ QPID_COMMON_EXTERN void getSystemId (std::string &osName,
std::string &nodeName,
std::string &release,
std::string &version,
@@ -66,17 +67,17 @@ namespace SystemInfo {
/**
* Get the process ID of the current process.
*/
- uint32_t getProcessId();
+ QPID_COMMON_EXTERN uint32_t getProcessId();
/**
* Get the process ID of the parent of the current process.
*/
- uint32_t getParentProcessId();
+ QPID_COMMON_EXTERN uint32_t getParentProcessId();
/**
* Get the name of the current process (i.e. the name of the executable)
*/
- std::string getProcessName();
+ QPID_COMMON_EXTERN std::string getProcessName();
}}} // namespace qpid::sys::SystemInfo
diff --git a/qpid/cpp/src/qpid/sys/Thread.h b/qpid/cpp/src/qpid/sys/Thread.h
index e2b904aa1a..14e2fef1c0 100644
--- a/qpid/cpp/src/qpid/sys/Thread.h
+++ b/qpid/cpp/src/qpid/sys/Thread.h
@@ -22,6 +22,7 @@
*
*/
#include <boost/shared_ptr.hpp>
+#include "qpid/CommonImportExport.h"
#ifdef _WIN32
# define QPID_TSS __declspec(thread)
@@ -42,15 +43,15 @@ class Thread
boost::shared_ptr<ThreadPrivate> impl;
public:
- Thread();
- explicit Thread(qpid::sys::Runnable*);
- explicit Thread(qpid::sys::Runnable&);
+ QPID_COMMON_EXTERN Thread();
+ QPID_COMMON_EXTERN explicit Thread(qpid::sys::Runnable*);
+ QPID_COMMON_EXTERN explicit Thread(qpid::sys::Runnable&);
- void join();
+ QPID_COMMON_EXTERN void join();
- unsigned long id();
+ QPID_COMMON_EXTERN unsigned long id();
- static Thread current();
+ QPID_COMMON_EXTERN static Thread current();
/** ID of current thread for logging.
* Workaround for broken Thread::current() in APR
diff --git a/qpid/cpp/src/qpid/sys/Time.h b/qpid/cpp/src/qpid/sys/Time.h
index d39be95434..2c93d64f32 100644
--- a/qpid/cpp/src/qpid/sys/Time.h
+++ b/qpid/cpp/src/qpid/sys/Time.h
@@ -33,6 +33,8 @@
# include "posix/Time.h"
#endif
+#include "qpid/CommonImportExport.h"
+
#include <limits>
#include <iosfwd>
@@ -86,23 +88,23 @@ class AbsTime {
TimePrivate timepoint;
public:
- inline AbsTime() {}
- AbsTime(const AbsTime& time0, const Duration& duration);
+ QPID_COMMON_EXTERN inline AbsTime() {}
+ QPID_COMMON_EXTERN AbsTime(const AbsTime& time0, const Duration& duration);
// Default assignment operation fine
// Default copy constructor fine
- static AbsTime now();
- static AbsTime FarFuture();
+ QPID_COMMON_EXTERN static AbsTime now();
+ QPID_COMMON_EXTERN static AbsTime FarFuture();
const TimePrivate& getPrivate(void) const { return timepoint; }
bool operator==(const AbsTime& t) const { return t.timepoint == timepoint; }
template <class S> void serialize(S& s) { s(timepoint); }
friend bool operator<(const AbsTime& a, const AbsTime& b);
friend bool operator>(const AbsTime& a, const AbsTime& b);
- friend std::ostream& operator << (std::ostream&, const AbsTime&);
+ QPID_COMMON_EXTERN friend std::ostream& operator << (std::ostream&, const AbsTime&);
};
-std::ostream& operator << (std::ostream&, const AbsTime&);
+QPID_COMMON_EXTERN std::ostream& operator << (std::ostream&, const AbsTime&);
/**
* @class Duration
@@ -120,9 +122,9 @@ class Duration {
friend class AbsTime;
public:
- inline Duration(int64_t time0);
- explicit Duration(const AbsTime& time0);
- explicit Duration(const AbsTime& start, const AbsTime& finish);
+ QPID_COMMON_EXTERN inline Duration(int64_t time0);
+ QPID_COMMON_EXTERN explicit Duration(const AbsTime& time0);
+ QPID_COMMON_EXTERN explicit Duration(const AbsTime& start, const AbsTime& finish);
inline operator int64_t() const;
};
@@ -158,7 +160,7 @@ const Duration TIME_INFINITE = std::numeric_limits<int64_t>::max();
const AbsTime FAR_FUTURE = AbsTime::FarFuture();
/** Portable sleep for a number of seconds */
-void sleep(int secs);
+QPID_COMMON_EXTERN void sleep(int secs);
/** Portable sleep for a number of microseconds */
void usleep(uint64_t usecs);
diff --git a/qpid/cpp/src/qpid/sys/Timer.h b/qpid/cpp/src/qpid/sys/Timer.h
index 2561e41034..dab2f55edb 100644
--- a/qpid/cpp/src/qpid/sys/Timer.h
+++ b/qpid/cpp/src/qpid/sys/Timer.h
@@ -25,7 +25,7 @@
#include "qpid/sys/Thread.h"
#include "qpid/sys/Runnable.h"
#include "qpid/RefCounted.h"
-
+#include "qpid/CommonImportExport.h"
#include <memory>
#include <queue>
@@ -49,15 +49,15 @@ class TimerTask : public RefCounted {
void fireTask();
public:
- TimerTask(Duration period);
- TimerTask(AbsTime fireTime);
- virtual ~TimerTask();
+ QPID_COMMON_EXTERN TimerTask(Duration period);
+ QPID_COMMON_EXTERN TimerTask(AbsTime fireTime);
+ QPID_COMMON_EXTERN virtual ~TimerTask();
- void setupNextFire();
- void restart();
- void delayTill(AbsTime fireTime);
- void cancel();
- bool isCancelled() const;
+ QPID_COMMON_EXTERN void setupNextFire();
+ QPID_COMMON_EXTERN void restart();
+ QPID_COMMON_EXTERN void delayTill(AbsTime fireTime);
+ QPID_COMMON_EXTERN void cancel();
+ QPID_COMMON_EXTERN bool isCancelled() const;
protected:
// Must be overridden with callback
@@ -78,12 +78,12 @@ class Timer : private Runnable {
void run();
public:
- Timer();
- ~Timer();
+ QPID_COMMON_EXTERN Timer();
+ QPID_COMMON_EXTERN ~Timer();
- void add(boost::intrusive_ptr<TimerTask> task);
- void start();
- void stop();
+ QPID_COMMON_EXTERN void add(boost::intrusive_ptr<TimerTask> task);
+ QPID_COMMON_EXTERN void start();
+ QPID_COMMON_EXTERN void stop();
};
diff --git a/qpid/cpp/src/qpid/sys/windows/uuid.h b/qpid/cpp/src/qpid/sys/windows/uuid.h
index a44ef2e9a3..7d003c3739 100644
--- a/qpid/cpp/src/qpid/sys/windows/uuid.h
+++ b/qpid/cpp/src/qpid/sys/windows/uuid.h
@@ -23,6 +23,7 @@
*/
#include <Rpc.h>
+#include "qpid/CommonImportExport.h"
#ifdef uuid_t /* Done in rpcdce.h */
# undef uuid_t
@@ -31,11 +32,11 @@
namespace qpid { namespace sys { const size_t UuidSize = 16; }}
typedef uint8_t uuid_t[qpid::sys::UuidSize];
-void uuid_clear (uuid_t uu);
-void uuid_copy (uuid_t dst, const uuid_t src);
-void uuid_generate (uuid_t out);
-int uuid_is_null (const uuid_t uu); // Returns 1 if null, else 0
-int uuid_parse (const char *in, uuid_t uu); // Returns 0 on success, else -1
-void uuid_unparse (const uuid_t uu, char *out);
+QPID_COMMON_EXTERN void uuid_clear (uuid_t uu);
+QPID_COMMON_EXTERN void uuid_copy (uuid_t dst, const uuid_t src);
+QPID_COMMON_EXTERN void uuid_generate (uuid_t out);
+QPID_COMMON_EXTERN int uuid_is_null (const uuid_t uu); // Returns 1 if null, else 0
+QPID_COMMON_EXTERN int uuid_parse (const char *in, uuid_t uu); // Returns 0 on success, else -1
+QPID_COMMON_EXTERN void uuid_unparse (const uuid_t uu, char *out);
#endif /*!_sys_windows_uuid_h*/