You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2012/02/20 21:45:23 UTC

svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Author: aconway
Date: Mon Feb 20 20:45:22 2012
New Revision: 1291436

URL: http://svn.apache.org/viewvc?rev=1291436&view=rev
Log:
NO-JIRA: Fix missing EXTERN declarations, broke windows build.

Added:
    qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h   (with props)
Modified:
    qpid/trunk/qpid/cpp/include/qpid/framing/SequenceNumber.h
    qpid/trunk/qpid/cpp/include/qpid/framing/SequenceSet.h
    qpid/trunk/qpid/cpp/include/qpid/types/Variant.h
    qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py
    qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
    qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.h
    qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
    qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
    qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
    qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h
    qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h

Modified: qpid/trunk/qpid/cpp/include/qpid/framing/SequenceNumber.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/framing/SequenceNumber.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/framing/SequenceNumber.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/framing/SequenceNumber.h Mon Feb 20 20:45:22 2012
@@ -52,9 +52,9 @@ boost::equality_comparable<
     uint32_t getValue() const { return uint32_t(value); }
     operator uint32_t() const { return uint32_t(value); }
 
-    void encode(Buffer& buffer) const;
-    void decode(Buffer& buffer);
-    uint32_t encodedSize() const;
+    QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+    QPID_COMMON_EXTERN void decode(Buffer& buffer);
+    QPID_COMMON_EXTERN uint32_t encodedSize() const;
 
     template <class S> void serialize(S& s) { s(value); }
 

Modified: qpid/trunk/qpid/cpp/include/qpid/framing/SequenceSet.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/framing/SequenceSet.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/framing/SequenceSet.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/framing/SequenceSet.h Mon Feb 20 20:45:22 2012
@@ -38,9 +38,9 @@ class QPID_COMMON_CLASS_EXTERN SequenceS
     SequenceSet(const SequenceNumber& start, const SequenceNumber finish) { add(start,finish); }
 
 
-    void encode(Buffer& buffer) const;
-    void decode(Buffer& buffer);
-    uint32_t encodedSize() const;
+    QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+    QPID_COMMON_EXTERN void decode(Buffer& buffer);
+    QPID_COMMON_EXTERN uint32_t encodedSize() const;
 
     QPID_COMMON_EXTERN bool contains(const SequenceNumber& s) const;
     QPID_COMMON_EXTERN void add(const SequenceNumber& s);

Modified: qpid/trunk/qpid/cpp/include/qpid/types/Variant.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/types/Variant.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/types/Variant.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/types/Variant.h Mon Feb 20 20:45:22 2012
@@ -60,9 +60,9 @@ enum VariantType {
     VAR_UUID
 };
 
-std::string getTypeName(VariantType type);
+QPID_TYPES_EXTERN std::string getTypeName(VariantType type);
 
-bool isIntegerType(VariantType type);
+QPID_TYPES_EXTERN bool isIntegerType(VariantType type);
 
 class VariantImpl;
 

Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py Mon Feb 20 20:45:22 2012
@@ -1471,7 +1471,7 @@ class SchemaClass:
   def genMethodIdDeclarations (self, stream, variables):
     number = 1
     for method in self.methods:
-      stream.write ("    static const uint32_t METHOD_" + method.getName().upper() +\
+      stream.write ("    QPID_BROKER_EXTERN static const uint32_t METHOD_" + method.getName().upper() +\
                     " = %d;\n" % number)
       number = number + 1
 

Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h Mon Feb 20 20:45:22 2012
@@ -24,6 +24,7 @@
 /*MGEN:Root.Disclaimer*/
 
 #include "qpid/management/ManagementObject.h"
+#include "qmf/BrokerImportExport.h"
 
 namespace qpid {
     namespace management {
@@ -34,7 +35,7 @@ namespace qpid {
 namespace qmf {
 /*MGEN:Class.OpenNamespaces*/
 
-class /*MGEN:Class.NameCap*/ : public ::qpid::management::ManagementObject
+QPID_BROKER_CLASS_EXTERN class /*MGEN:Class.NameCap*/ : public ::qpid::management::ManagementObject
 {
   private:
 
@@ -72,25 +73,25 @@ class /*MGEN:Class.NameCap*/ : public ::
     void aggregatePerThreadStats(struct PerThreadStats*) const;
 /*MGEN:ENDIF*/
   public:
-    static void writeSchema(std::string& schema);
-    void mapEncodeValues(::qpid::types::Variant::Map& map,
-                         bool includeProperties=true,
-                         bool includeStatistics=true);
-    void mapDecodeValues(const ::qpid::types::Variant::Map& map);
-    void doMethod(std::string&           methodName,
-                  const ::qpid::types::Variant::Map& inMap,
-                  ::qpid::types::Variant::Map& outMap,
-                  const std::string& userId);
-    std::string getKey() const;
+    QPID_BROKER_EXTERN static void writeSchema(std::string& schema);
+    QPID_BROKER_EXTERN void mapEncodeValues(::qpid::types::Variant::Map& map,
+                                          bool includeProperties=true,
+                                          bool includeStatistics=true);
+    QPID_BROKER_EXTERN void mapDecodeValues(const ::qpid::types::Variant::Map& map);
+    QPID_BROKER_EXTERN void doMethod(std::string&           methodName,
+                                   const ::qpid::types::Variant::Map& inMap,
+                                   ::qpid::types::Variant::Map& outMap,
+                                   const std::string& userId);
+    QPID_BROKER_EXTERN std::string getKey() const;
 /*MGEN:IF(Root.GenQMFv1)*/
-    uint32_t writePropertiesSize() const;
-    void readProperties(const std::string& buf);
-    void writeProperties(std::string& buf) const;
-    void writeStatistics(std::string& buf, bool skipHeaders = false);
-    void doMethod(std::string& methodName,
-                  const std::string& inBuf,
-                  std::string& outBuf,
-                  const std::string& userId);
+    QPID_BROKER_EXTERN uint32_t writePropertiesSize() const;
+    QPID_BROKER_EXTERN void readProperties(const std::string& buf);
+    QPID_BROKER_EXTERN void writeProperties(std::string& buf) const;
+    QPID_BROKER_EXTERN void writeStatistics(std::string& buf, bool skipHeaders = false);
+    QPID_BROKER_EXTERN void doMethod(std::string& methodName,
+                                   const std::string& inBuf,
+                                   std::string& outBuf,
+                                   const std::string& userId);
 /*MGEN:ENDIF*/
 
     writeSchemaCall_t getWriteSchemaCall() { return writeSchema; }
@@ -100,13 +101,17 @@ class /*MGEN:Class.NameCap*/ : public ::
     bool hasInst() { return false; }
 /*MGEN:ENDIF*/
 
-    /*MGEN:Class.NameCap*/(::qpid::management::ManagementAgent* agent,
-                            ::qpid::management::Manageable* coreObject/*MGEN:Class.ParentArg*//*MGEN:Class.ConstructorArgs*/);
-    ~/*MGEN:Class.NameCap*/();
+    QPID_BROKER_EXTERN /*MGEN:Class.NameCap*/(
+        ::qpid::management::ManagementAgent* agent,
+        ::qpid::management::Manageable* coreObject/*MGEN:Class.ParentArg*//*MGEN:Class.ConstructorArgs*/);
+
+    QPID_BROKER_EXTERN ~/*MGEN:Class.NameCap*/();
 
     /*MGEN:Class.SetGeneralReferenceDeclaration*/
 
-    static void registerSelf(::qpid::management::ManagementAgent* agent);
+    QPID_BROKER_EXTERN static void registerSelf(
+        ::qpid::management::ManagementAgent* agent);
+
     std::string& getPackageName() const { return packageName; }
     std::string& getClassName() const { return className; }
     uint8_t* getMd5Sum() const { return md5Sum; }

Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.h (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.h Mon Feb 20 20:45:22 2012
@@ -24,11 +24,12 @@
 /*MGEN:Root.Disclaimer*/
 
 #include "qpid/management/ManagementEvent.h"
+#include "qmf/BrokerImportExport.h"
 
 namespace qmf {
 /*MGEN:Event.OpenNamespaces*/
 
-class Event/*MGEN:Event.NameCap*/ : public ::qpid::management::ManagementEvent
+QPID_BROKER_CLASS_EXTERN class Event/*MGEN:Event.NameCap*/ : public ::qpid::management::ManagementEvent
 {
   private:
     static void writeSchema (std::string& schema);
@@ -41,18 +42,18 @@ class Event/*MGEN:Event.NameCap*/ : publ
   public:
     writeSchemaCall_t getWriteSchemaCall(void) { return writeSchema; }
 
-    Event/*MGEN:Event.NameCap*/(/*MGEN:Event.ConstructorArgs*/);
-    ~Event/*MGEN:Event.NameCap*/() {};
+    QPID_BROKER_EXTERN Event/*MGEN:Event.NameCap*/(/*MGEN:Event.ConstructorArgs*/);
+    QPID_BROKER_EXTERN ~Event/*MGEN:Event.NameCap*/() {};
 
     static void registerSelf(::qpid::management::ManagementAgent* agent);
     std::string& getPackageName() const { return packageName; }
     std::string& getEventName() const { return eventName; }
     uint8_t* getMd5Sum() const { return md5Sum; }
     uint8_t getSeverity() const { return /*MGEN:Event.Severity*/; }
-    void encode(std::string& buffer) const;
-    void mapEncode(::qpid::types::Variant::Map& map) const;
+    QPID_BROKER_EXTERN void encode(std::string& buffer) const;
+    QPID_BROKER_EXTERN void mapEncode(::qpid::types::Variant::Map& map) const;
 
-    static bool match(const std::string& evt, const std::string& pkg);
+    QPID_BROKER_EXTERN static bool match(const std::string& evt, const std::string& pkg);
 };
 
 }/*MGEN:Event.CloseNamespaces*/

Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h Mon Feb 20 20:45:22 2012
@@ -24,6 +24,7 @@
 /*MGEN:Root.Disclaimer*/
 
 #include "qpid//*MGEN:Class.AgentHeaderLocation*//ManagementAgent.h"
+#include "qmf/BrokerImportExport.h"
 
 namespace qmf {
 /*MGEN:Class.OpenNamespaces*/
@@ -31,8 +32,8 @@ namespace qmf {
 class Package
 {
   public:
-    Package (::qpid::management::ManagementAgent* agent);
-    ~Package () {}
+    QPID_BROKER_EXTERN Package (::qpid::management::ManagementAgent* agent);
+    QPID_BROKER_EXTERN ~Package () {}
 };
 
 }/*MGEN:Class.CloseNamespaces*/

Added: qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h?rev=1291436&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h (added)
+++ qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h Mon Feb 20 20:45:22 2012
@@ -0,0 +1,42 @@
+#ifndef QPID_BROKER_IMPORT_EXPORT_H
+#define QPID_BROKER_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(BROKER_EXPORT) || defined (qpidbroker_EXPORTS)
+#    define QPID_BROKER_EXTERN __declspec(dllexport)
+#  else
+#    define QPID_BROKER_EXTERN __declspec(dllimport)
+#  endif
+#  ifdef _MSC_VER
+#    define QPID_BROKER_CLASS_EXTERN
+#    define QPID_BROKER_INLINE_EXTERN QPID_BROKER_EXTERN
+#  else
+#    define QPID_BROKER_CLASS_EXTERN QPID_BROKER_EXTERN
+#    define QPID_BROKER_INLINE_EXTERN
+#  endif
+#else
+#  define QPID_BROKER_EXTERN
+#  define QPID_BROKER_CLASS_EXTERN
+#  define QPID_BROKER_INLINE_EXTERN
+#endif
+
+#endif

Propchange: qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h Mon Feb 20 20:45:22 2012
@@ -205,7 +205,7 @@ public:
     ConsumerFactories consumerFactories;
 
   public:
-    virtual ~Broker();
+    QPID_BROKER_EXTERN virtual ~Broker();
 
     QPID_BROKER_EXTERN Broker(const Options& configuration);
     static QPID_BROKER_EXTERN boost::intrusive_ptr<Broker> create(const Options& configuration);
@@ -217,16 +217,16 @@ public:
      * port, which will be different if the configured port is
      * 0.
      */
-    virtual uint16_t getPort(const std::string& name) const;
+    QPID_BROKER_EXTERN virtual uint16_t getPort(const std::string& name) const;
 
     /**
      * Run the broker. Implements Runnable::run() so the broker
      * can be run in a separate thread.
      */
-    virtual void run();
+    QPID_BROKER_EXTERN virtual void run();
 
     /** Shut down the broker */
-    virtual void shutdown();
+    QPID_BROKER_EXTERN virtual void shutdown();
 
     QPID_BROKER_EXTERN void setStore (boost::shared_ptr<MessageStore>& store);
     MessageStore& getStore() { return *store; }
@@ -246,14 +246,14 @@ public:
     SessionManager& getSessionManager() { return sessionManager; }
     const std::string& getFederationTag() const { return federationTag; }
 
-    management::ManagementObject*     GetManagementObject (void) const;
-    management::Manageable*           GetVhostObject      (void) const;
-    management::Manageable::status_t  ManagementMethod (uint32_t methodId,
-                                                        management::Args& args,
-                                                        std::string& text);
+    QPID_BROKER_EXTERN management::ManagementObject* GetManagementObject() const;
+    QPID_BROKER_EXTERN management::Manageable* GetVhostObject() const;
+    QPID_BROKER_EXTERN management::Manageable::status_t ManagementMethod(
+        uint32_t methodId, management::Args& args, std::string& text);
 
     /** Add to the broker's protocolFactorys */
-    void registerProtocolFactory(const std::string& name, boost::shared_ptr<sys::ProtocolFactory>);
+    QPID_BROKER_EXTERN void registerProtocolFactory(
+        const std::string& name, boost::shared_ptr<sys::ProtocolFactory>);
 
     /** Accept connections */
     QPID_BROKER_EXTERN void accept();
@@ -271,15 +271,17 @@ public:
     /** Move messages from one queue to another.
         A zero quantity means to move all messages
     */
-    uint32_t queueMoveMessages( const std::string& srcQueue,
-			    const std::string& destQueue,
-                uint32_t  qty,
-                const qpid::types::Variant::Map& filter);
+    QPID_BROKER_EXTERN uint32_t queueMoveMessages(
+        const std::string& srcQueue,
+        const std::string& destQueue,
+        uint32_t  qty,
+        const qpid::types::Variant::Map& filter);
 
-    boost::shared_ptr<sys::ProtocolFactory> getProtocolFactory(const std::string& name = TCP_TRANSPORT) const;
+    QPID_BROKER_EXTERN boost::shared_ptr<sys::ProtocolFactory> getProtocolFactory(
+        const std::string& name = TCP_TRANSPORT) const;
 
     /** Expose poller so plugins can register their descriptors. */
-    boost::shared_ptr<sys::Poller> getPoller();
+    QPID_BROKER_EXTERN boost::shared_ptr<sys::Poller> getPoller();
 
     boost::shared_ptr<sys::ConnectionCodec::Factory> getConnectionFactory() { return factory; }
     void setConnectionFactory(boost::shared_ptr<sys::ConnectionCodec::Factory> f) { factory = f; }
@@ -289,7 +291,7 @@ public:
 
     /** Timer for tasks that must be synchronized if we are in a cluster */
     sys::Timer& getClusterTimer() { return clusterTimer.get() ? *clusterTimer : timer; }
-    void setClusterTimer(std::auto_ptr<sys::Timer>);
+    QPID_BROKER_EXTERN void setClusterTimer(std::auto_ptr<sys::Timer>);
 
     boost::function<std::vector<Url> ()> getKnownBrokers;
 
@@ -320,15 +322,14 @@ public:
      * context.
      *@return true if delivery of a message should be deferred.
      */
-    boost::function<bool (const std::string& queue,
-                          const boost::intrusive_ptr<Message>& msg)> deferDelivery;
+    boost::function<bool (const std::string& queue, const boost::intrusive_ptr<Message>& msg)> deferDelivery;
 
     bool isAuthenticating ( ) { return config.auth; }
     bool isTimestamping() { return config.timestampRcvMsgs; }
 
     typedef boost::function1<void, boost::shared_ptr<Queue> > QueueFunctor;
 
-    std::pair<boost::shared_ptr<Queue>, bool> createQueue(
+    QPID_BROKER_EXTERN std::pair<boost::shared_ptr<Queue>, bool> createQueue(
         const std::string& name,
         bool durable,
         bool autodelete,
@@ -337,30 +338,39 @@ public:
         const qpid::framing::FieldTable& arguments,
         const std::string& userId,
         const std::string& connectionId);
-    void deleteQueue(const std::string& name,
-                     const std::string& userId,
-                     const std::string& connectionId,
-                     QueueFunctor check = QueueFunctor());
-    std::pair<Exchange::shared_ptr, bool> createExchange(
+
+    QPID_BROKER_EXTERN void deleteQueue(
+        const std::string& name,
+        const std::string& userId,
+        const std::string& connectionId,
+        QueueFunctor check = QueueFunctor());
+
+    QPID_BROKER_EXTERN std::pair<Exchange::shared_ptr, bool> createExchange(
         const std::string& name,
         const std::string& type,
         bool durable,
         const std::string& alternateExchange,
         const qpid::framing::FieldTable& args,
         const std::string& userId, const std::string& connectionId);
-    void deleteExchange(const std::string& name, const std::string& userId,
-                        const std::string& connectionId);
-    void bind(const std::string& queue,
-              const std::string& exchange,
-              const std::string& key,
-              const qpid::framing::FieldTable& arguments,
-              const std::string& userId,
-              const std::string& connectionId);
-    void unbind(const std::string& queue,
-                const std::string& exchange,
-                const std::string& key,
-                const std::string& userId,
-                const std::string& connectionId);
+
+    QPID_BROKER_EXTERN void deleteExchange(
+        const std::string& name, const std::string& userId,
+        const std::string& connectionId);
+
+    QPID_BROKER_EXTERN void bind(
+        const std::string& queue,
+        const std::string& exchange,
+        const std::string& key,
+        const qpid::framing::FieldTable& arguments,
+        const std::string& userId,
+        const std::string& connectionId);
+
+    QPID_BROKER_EXTERN void unbind(
+        const std::string& queue,
+        const std::string& exchange,
+        const std::string& key,
+        const std::string& userId,
+        const std::string& connectionId);
 
     ConsumerFactories&  getConsumerFactories() { return consumerFactories; }
     ConnectionObservers& getConnectionObservers() { return connectionObservers; }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h Mon Feb 20 20:45:22 2012
@@ -54,7 +54,7 @@ class ExchangeRegistry{
        bool durable,
        const qpid::framing::FieldTable& args = framing::FieldTable());
     QPID_BROKER_EXTERN void destroy(const std::string& name);
-    Exchange::shared_ptr getDefault();
+    QPID_BROKER_EXTERN Exchange::shared_ptr getDefault();
 
     /**
      * Find the named exchange. Return 0 if not found.
@@ -75,7 +75,7 @@ class ExchangeRegistry{
     /** Register an exchange instance.
      *@return true if registered, false if exchange with same name is already  registered.
      */
-    bool registerExchange(const Exchange::shared_ptr&);
+    QPID_BROKER_EXTERN bool registerExchange(const Exchange::shared_ptr&);
 
     QPID_BROKER_EXTERN void registerType(const std::string& type, FactoryFunction);
 
@@ -85,7 +85,7 @@ class ExchangeRegistry{
         for (ExchangeMap::const_iterator i = exchanges.begin(); i != exchanges.end(); ++i)
             f(i->second);
     }
-        
+
   private:
     typedef std::map<std::string, Exchange::shared_ptr> ExchangeMap;
     typedef std::map<std::string, FactoryFunction > FunctionMap;

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Link.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Link.h Mon Feb 20 20:45:22 2012
@@ -24,9 +24,11 @@
 
 #include <boost/shared_ptr.hpp>
 #include "qpid/Url.h"
+#include "qpid/broker/BrokerImportExport.h"
 #include "qpid/broker/MessageStore.h"
 #include "qpid/broker/PersistableConfig.h"
 #include "qpid/broker/Bridge.h"
+#include "qpid/broker/BrokerImportExport.h"
 #include "qpid/sys/Mutex.h"
 #include "qpid/framing/FieldTable.h"
 #include "qpid/management/Manageable.h"
@@ -94,6 +96,13 @@ class Link : public PersistableConfig, p
     bool tryFailoverLH();            // Called during maintenance visit
     bool hideManagement() const;
 
+    void established(Connection*); // Called when connection is create
+    void opened();      // Called when connection is open (after create)
+    void closed(int, std::string);   // Called when connection goes away
+    void reconnectLH(const Address&); //called by LinkRegistry
+
+  friend class LinkRegistry; // to call established, opened, closed
+
   public:
     typedef boost::shared_ptr<Link> shared_ptr;
 
@@ -119,13 +128,9 @@ class Link : public PersistableConfig, p
     uint nextChannel();
     void add(Bridge::shared_ptr);
     void cancel(Bridge::shared_ptr);
-    void setUrl(const Url&); // Set URL for reconnection.
 
-    void established(Connection*); // Called when connection is create
-    void opened();      // Called when connection is open (after create)
-    void closed(int, std::string);   // Called when connection goes away
-    void reconnectLH(const Address&); //called by LinkRegistry
-    void close();       // Close the link from within the broker.
+    QPID_BROKER_EXTERN void setUrl(const Url&); // Set URL for reconnection.
+    QPID_BROKER_EXTERN void close(); // Close the link from within the broker.
 
     std::string getAuthMechanism() { return authMechanism; }
     std::string getUsername()      { return username; }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp Mon Feb 20 20:45:22 2012
@@ -25,7 +25,9 @@
 #include <iostream>
 #include <boost/format.hpp>
 
-using namespace qpid::broker;
+namespace qpid {
+namespace broker {
+
 using namespace qpid::sys;
 using std::string;
 using std::pair;
@@ -45,16 +47,15 @@ LinkRegistry::LinkRegistry () :
 {
 }
 
-namespace {
-struct ConnectionObserverImpl : public ConnectionObserver {
+class LinkRegistryConnectionObserver : public ConnectionObserver {
     LinkRegistry& links;
-    ConnectionObserverImpl(LinkRegistry& l) : links(l) {}
+  public:
+    LinkRegistryConnectionObserver(LinkRegistry& l) : links(l) {}
     void connection(Connection& c) { links.notifyConnection(c.getMgmtId(), &c); }
     void opened(Connection& c) { links.notifyOpened(c.getMgmtId()); }
     void closed(Connection& c) { links.notifyClosed(c.getMgmtId()); }
     void forced(Connection& c, const string& text) { links.notifyConnectionForced(c.getMgmtId(), text); }
 };
-}
 
 LinkRegistry::LinkRegistry (Broker* _broker) :
     broker(_broker),
@@ -62,7 +63,7 @@ LinkRegistry::LinkRegistry (Broker* _bro
     realm(broker->getOptions().realm)
 {
     broker->getConnectionObservers().add(
-        boost::shared_ptr<ConnectionObserver>(new ConnectionObserverImpl(*this)));
+        boost::shared_ptr<ConnectionObserver>(new LinkRegistryConnectionObserver(*this)));
 }
 
 LinkRegistry::~LinkRegistry() {}
@@ -368,3 +369,4 @@ void LinkRegistry::eachBridge(boost::fun
     for (BridgeMap::iterator i = bridges.begin(); i != bridges.end(); ++i) f(i->second);
 }
 
+}} // namespace qpid::broker

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h Mon Feb 20 20:45:22 2012
@@ -23,6 +23,7 @@
  */
 
 #include <map>
+#include "qpid/broker/BrokerImportExport.h"
 #include "qpid/broker/Bridge.h"
 #include "qpid/broker/MessageStore.h"
 #include "qpid/Address.h"
@@ -56,43 +57,50 @@ namespace broker {
         static std::string createKey(const Address& address);
         static std::string createKey(const std::string& host, uint16_t port);
 
+        // Methods called by the connection observer.
+        void notifyConnection (const std::string& key, Connection* c);
+        void notifyOpened     (const std::string& key);
+        void notifyClosed     (const std::string& key);
+        void notifyConnectionForced    (const std::string& key, const std::string& text);
+      friend class LinkRegistryConnectionObserver;
+
     public:
-        LinkRegistry (); // Only used in store tests
-        LinkRegistry (Broker* _broker);
-        ~LinkRegistry();
-
-        std::pair<boost::shared_ptr<Link>, bool>
-            declare(const std::string& host,
-                    uint16_t     port,
-                    const std::string& transport,
-                    bool         durable,
-                    const std::string& authMechanism,
-                    const std::string& username,
-                    const std::string& password);
-
-        std::pair<Bridge::shared_ptr, bool>
-            declare(const std::string& host,
-                    uint16_t     port,
-                    bool         durable,
-                    const std::string& src,
-                    const std::string& dest,
-                    const std::string& key,
-                    bool         isQueue,
-                    bool         isLocal,
-                    const std::string& id,
-                    const std::string& excludes,
-                    bool         dynamic,
-                    uint16_t     sync,
-                    Bridge::InitializeCallback=0
-            );
-
-        void destroy(const std::string& host, const uint16_t port);
-
-        void destroy(const std::string& host,
-                     const uint16_t     port,
-                     const std::string& src,
-                     const std::string& dest,
-                     const std::string& key);
+        QPID_BROKER_EXTERN LinkRegistry (); // Only used in store tests
+        QPID_BROKER_EXTERN LinkRegistry (Broker* _broker);
+        QPID_BROKER_EXTERN ~LinkRegistry();
+
+        QPID_BROKER_EXTERN std::pair<boost::shared_ptr<Link>, bool>
+        declare(const std::string& host,
+                uint16_t     port,
+                const std::string& transport,
+                bool         durable,
+                const std::string& authMechanism,
+                const std::string& username,
+                const std::string& password);
+
+        QPID_BROKER_EXTERN std::pair<Bridge::shared_ptr, bool>
+        declare(const std::string& host,
+                uint16_t     port,
+                bool         durable,
+                const std::string& src,
+                const std::string& dest,
+                const std::string& key,
+                bool         isQueue,
+                bool         isLocal,
+                const std::string& id,
+                const std::string& excludes,
+                bool         dynamic,
+                uint16_t     sync,
+                Bridge::InitializeCallback=0
+        );
+
+        QPID_BROKER_EXTERN void destroy(const std::string& host, const uint16_t port);
+
+        QPID_BROKER_EXTERN void destroy(const std::string& host,
+                                        const uint16_t     port,
+                                        const std::string& src,
+                                        const std::string& dest,
+                                        const std::string& key);
 
         /**
          * Register the manageable parent for declared queues
@@ -102,24 +110,20 @@ namespace broker {
         /**
          * Set the store to use.  May only be called once.
          */
-        void setStore (MessageStore*);
+        QPID_BROKER_EXTERN void setStore (MessageStore*);
 
         /**
          * Return the message store used.
          */
-        MessageStore* getStore() const;
+        QPID_BROKER_EXTERN MessageStore* getStore() const;
 
-        void notifyConnection (const std::string& key, Connection* c);
-        void notifyOpened     (const std::string& key);
-        void notifyClosed     (const std::string& key);
-        void notifyConnectionForced    (const std::string& key, const std::string& text);
-        std::string getAuthMechanism   (const std::string& key);
-        std::string getAuthCredentials (const std::string& key);
-        std::string getAuthIdentity    (const std::string& key);
-        std::string getUsername        (const std::string& key);
-        std::string getPassword        (const std::string& key);
-        std::string getHost            (const std::string& key);
-        uint16_t    getPort            (const std::string& key);
+        QPID_BROKER_EXTERN std::string getAuthMechanism   (const std::string& key);
+        QPID_BROKER_EXTERN std::string getAuthCredentials (const std::string& key);
+        QPID_BROKER_EXTERN std::string getAuthIdentity    (const std::string& key);
+        QPID_BROKER_EXTERN std::string getUsername        (const std::string& key);
+        QPID_BROKER_EXTERN std::string getPassword        (const std::string& key);
+        QPID_BROKER_EXTERN std::string getHost            (const std::string& key);
+        QPID_BROKER_EXTERN uint16_t    getPort            (const std::string& key);
 
         /**
          * Called by links failing over to new address
@@ -132,13 +136,13 @@ namespace broker {
          * updated but links won't actually establish connections and
          * bridges won't therefore pull or push any messages.
          */
-        void setPassive(bool);
-        bool isPassive() { return passive; }
+        QPID_BROKER_EXTERN void setPassive(bool);
+        QPID_BROKER_EXTERN bool isPassive() { return passive; }
 
         /** Iterate over each link in the registry. Used for cluster updates. */
-        void eachLink(boost::function<void(boost::shared_ptr<Link>)> f);
+        QPID_BROKER_EXTERN void eachLink(boost::function<void(boost::shared_ptr<Link>)> f);
         /** Iterate over each bridge in the registry. Used for cluster updates. */
-        void eachBridge(boost::function<void(boost::shared_ptr< Bridge>)> f);
+        QPID_BROKER_EXTERN void eachBridge(boost::function<void(boost::shared_ptr< Bridge>)> f);
     };
 }
 }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h Mon Feb 20 20:45:22 2012
@@ -235,8 +235,9 @@ class Queue : public boost::enable_share
     /**
      * Bind self to specified exchange, and record that binding for unbinding on delete.
      */
-    bool bind(boost::shared_ptr<Exchange> exchange, const std::string& key,
-              const qpid::framing::FieldTable& arguments=qpid::framing::FieldTable());
+    QPID_BROKER_EXTERN bool bind(
+        boost::shared_ptr<Exchange> exchange, const std::string& key,
+        const qpid::framing::FieldTable& arguments=qpid::framing::FieldTable());
 
     /** Acquire the message at the given position if it is available for acquire.  Not to
      * be used by clients, but used by the broker for queue management.
@@ -271,28 +272,29 @@ class Queue : public boost::enable_share
                                     bool exclusive = false);
     QPID_BROKER_EXTERN void cancel(Consumer::shared_ptr c);
 
-    uint32_t purge(const uint32_t purge_request=0,  //defaults to all messages
+    QPID_BROKER_EXTERN uint32_t purge(const uint32_t purge_request=0,  //defaults to all messages
                    boost::shared_ptr<Exchange> dest=boost::shared_ptr<Exchange>(),
                    const ::qpid::types::Variant::Map *filter=0);
     QPID_BROKER_EXTERN void purgeExpired(sys::Duration);
 
     //move qty # of messages to destination Queue destq
-    uint32_t move(const Queue::shared_ptr destq, uint32_t qty,
-                  const qpid::types::Variant::Map *filter=0);
+    QPID_BROKER_EXTERN uint32_t move(
+        const Queue::shared_ptr destq, uint32_t qty,
+        const qpid::types::Variant::Map *filter=0);
 
     QPID_BROKER_EXTERN uint32_t getMessageCount() const;
     QPID_BROKER_EXTERN uint32_t getEnqueueCompleteMessageCount() const;
     QPID_BROKER_EXTERN uint32_t getConsumerCount() const;
     inline const std::string& getName() const { return name; }
-    bool isExclusiveOwner(const OwnershipToken* const o) const;
-    void releaseExclusiveOwnership();
-    bool setExclusiveOwner(const OwnershipToken* const o);
-    bool hasExclusiveConsumer() const;
-    bool hasExclusiveOwner() const;
+    QPID_BROKER_EXTERN bool isExclusiveOwner(const OwnershipToken* const o) const;
+    QPID_BROKER_EXTERN void releaseExclusiveOwnership();
+    QPID_BROKER_EXTERN bool setExclusiveOwner(const OwnershipToken* const o);
+    QPID_BROKER_EXTERN bool hasExclusiveConsumer() const;
+    QPID_BROKER_EXTERN bool hasExclusiveOwner() const;
     inline bool isDurable() const { return store != 0; }
     inline const framing::FieldTable& getSettings() const { return settings; }
     inline bool isAutoDelete() const { return autodelete; }
-    bool canAutoDelete() const;
+    QPID_BROKER_EXTERN bool canAutoDelete() const;
     const QueueBindings& getBindings() const { return bindings; }
 
     /**
@@ -301,8 +303,8 @@ class Queue : public boost::enable_share
     QPID_BROKER_EXTERN void setLastNodeFailure();
     QPID_BROKER_EXTERN void clearLastNodeFailure();
 
-    bool enqueue(TransactionContext* ctxt, boost::intrusive_ptr<Message>& msg, bool suppressPolicyCheck = false);
-    void enqueueAborted(boost::intrusive_ptr<Message> msg);
+    QPID_BROKER_EXTERN bool enqueue(TransactionContext* ctxt, boost::intrusive_ptr<Message>& msg, bool suppressPolicyCheck = false);
+    QPID_BROKER_EXTERN void enqueueAborted(boost::intrusive_ptr<Message> msg);
     /**
      * dequeue from store (only done once messages is acknowledged)
      */
@@ -311,7 +313,7 @@ class Queue : public boost::enable_share
      * Inform the queue that a previous transactional dequeue
      * committed.
      */
-    void dequeueCommitted(const QueuedMessage& msg);
+    QPID_BROKER_EXTERN void dequeueCommitted(const QueuedMessage& msg);
 
     /**
      * Inform queue of messages that were enqueued, have since
@@ -319,7 +321,7 @@ class Queue : public boost::enable_share
      * thus are still logically on the queue) - used in
      * clustered broker.
      */
-    void updateEnqueued(const QueuedMessage& msg);
+    QPID_BROKER_EXTERN void updateEnqueued(const QueuedMessage& msg);
 
     /**
      * Test whether the specified message (identified by its
@@ -328,7 +330,7 @@ class Queue : public boost::enable_share
      * have been delievered to a subscriber who has not yet
      * accepted it).
      */
-    bool isEnqueued(const QueuedMessage& msg);
+    QPID_BROKER_EXTERN bool isEnqueued(const QueuedMessage& msg);
 
     /**
      * Acquires the next available (oldest) message
@@ -338,17 +340,17 @@ class Queue : public boost::enable_share
     /** Get the message at position pos, returns true if found and sets msg */
     QPID_BROKER_EXTERN bool find(framing::SequenceNumber pos, QueuedMessage& msg ) const;
 
-    const QueuePolicy* getPolicy();
+    QPID_BROKER_EXTERN const QueuePolicy* getPolicy();
 
-    void setAlternateExchange(boost::shared_ptr<Exchange> exchange);
-    boost::shared_ptr<Exchange> getAlternateExchange();
-    bool isLocal(boost::intrusive_ptr<Message>& msg);
+    QPID_BROKER_EXTERN void setAlternateExchange(boost::shared_ptr<Exchange> exchange);
+    QPID_BROKER_EXTERN boost::shared_ptr<Exchange> getAlternateExchange();
+    QPID_BROKER_EXTERN bool isLocal(boost::intrusive_ptr<Message>& msg);
 
     //PersistableQueue support:
-    uint64_t getPersistenceId() const;
-    void setPersistenceId(uint64_t persistenceId) const;
-    void encode(framing::Buffer& buffer) const;
-    uint32_t encodedSize() const;
+    QPID_BROKER_EXTERN uint64_t getPersistenceId() const;
+    QPID_BROKER_EXTERN void setPersistenceId(uint64_t persistenceId) const;
+    QPID_BROKER_EXTERN void encode(framing::Buffer& buffer) const;
+    QPID_BROKER_EXTERN uint32_t encodedSize() const;
 
     /**
      * Restores a queue from encoded data (used in recovery)
@@ -362,15 +364,15 @@ class Queue : public boost::enable_share
     virtual void setExternalQueueStore(ExternalQueueStore* inst);
 
     // Increment the rejected-by-consumer counter.
-    void countRejected() const;
-    void countFlowedToDisk(uint64_t size) const;
-    void countLoadedFromDisk(uint64_t size) const;
+    QPID_BROKER_EXTERN void countRejected() const;
+    QPID_BROKER_EXTERN void countFlowedToDisk(uint64_t size) const;
+    QPID_BROKER_EXTERN void countLoadedFromDisk(uint64_t size) const;
 
     // Manageable entry points
-    management::ManagementObject* GetManagementObject (void) const;
+    QPID_BROKER_EXTERN management::ManagementObject* GetManagementObject (void) const;
     management::Manageable::status_t
-    ManagementMethod (uint32_t methodId, management::Args& args, std::string& text);
-    void query(::qpid::types::Variant::Map&) const;
+    QPID_BROKER_EXTERN ManagementMethod (uint32_t methodId, management::Args& args, std::string& text);
+    QPID_BROKER_EXTERN void query(::qpid::types::Variant::Map&) const;
 
     /** Apply f to each Message on the queue. */
     template <class F> void eachMessage(F f) {
@@ -396,31 +398,31 @@ class Queue : public boost::enable_share
     /** return current position sequence number for the next message on the queue.
      */
     QPID_BROKER_EXTERN framing::SequenceNumber getPosition();
-    void addObserver(boost::shared_ptr<QueueObserver>);
-    void removeObserver(boost::shared_ptr<QueueObserver>);
+    QPID_BROKER_EXTERN void addObserver(boost::shared_ptr<QueueObserver>);
+    QPID_BROKER_EXTERN void removeObserver(boost::shared_ptr<QueueObserver>);
     QPID_BROKER_EXTERN void insertSequenceNumbers(const std::string& key);
     /**
      * Notify queue that recovery has completed.
      */
-    void recoveryComplete(ExchangeRegistry& exchanges);
+    QPID_BROKER_EXTERN void recoveryComplete(ExchangeRegistry& exchanges);
 
     // For cluster update
-    QueueListeners& getListeners();
-    Messages& getMessages();
-    const Messages& getMessages() const;
+    QPID_BROKER_EXTERN QueueListeners& getListeners();
+    QPID_BROKER_EXTERN Messages& getMessages();
+    QPID_BROKER_EXTERN const Messages& getMessages() const;
 
     /**
      * Reserve space in policy for an enqueued message that
      * has been recovered in the prepared state (dtx only)
      */
-    void recoverPrepared(boost::intrusive_ptr<Message>& msg);
+    QPID_BROKER_EXTERN void recoverPrepared(boost::intrusive_ptr<Message>& msg);
 
-    void flush();
+    QPID_BROKER_EXTERN void flush();
 
-    Broker* getBroker();
+    QPID_BROKER_EXTERN Broker* getBroker();
 
     uint32_t getDequeueSincePurge() { return dequeueSincePurge.get(); }
-    void setDequeueSincePurge(uint32_t value);
+    QPID_BROKER_EXTERN void setDequeueSincePurge(uint32_t value);
 };
 }
 }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h Mon Feb 20 20:45:22 2012
@@ -22,6 +22,7 @@
  *
  */
 
+#include "qpid/broker/BrokerImportExport.h"
 #include "qpid/broker/Consumer.h"
 #include "qpid/broker/Credit.h"
 #include "qpid/broker/Deliverable.h"
@@ -99,42 +100,44 @@ class SemanticState : private boost::non
         bool haveCredit();
 
       protected:
-        virtual bool doDispatch();
+        QPID_BROKER_EXTERN virtual bool doDispatch();
         size_t unacked() { return parent->unacked.size(); }
 
       public:
         typedef boost::shared_ptr<ConsumerImpl> shared_ptr;
 
-        ConsumerImpl(SemanticState* parent,
-                     const std::string& name, boost::shared_ptr<Queue> queue,
-                     bool ack, bool acquire, bool exclusive,
-                     const std::string& tag, const std::string& resumeId, uint64_t resumeTtl, const framing::FieldTable& arguments);
-        virtual ~ConsumerImpl();
-        OwnershipToken* getSession();
-        virtual bool deliver(QueuedMessage& msg);
-        bool filter(boost::intrusive_ptr<Message> msg);
-        bool accept(boost::intrusive_ptr<Message> msg);
-        void cancel() {}
-
-        void disableNotify();
-        void enableNotify();
-        void notify();
-        bool isNotifyEnabled() const;
-
-        void requestDispatch();
-
-        void setWindowMode();
-        void setCreditMode();
-        void addByteCredit(uint32_t value);
-        void addMessageCredit(uint32_t value);
-        void flush();
-        void stop();
-        void complete(DeliveryRecord&);
+        QPID_BROKER_EXTERN ConsumerImpl(
+            SemanticState* parent,
+            const std::string& name, boost::shared_ptr<Queue> queue,
+            bool ack, bool acquire, bool exclusive,
+            const std::string& tag, const std::string& resumeId, uint64_t resumeTtl,
+            const framing::FieldTable& arguments);
+        QPID_BROKER_EXTERN virtual ~ConsumerImpl();
+        QPID_BROKER_EXTERN OwnershipToken* getSession();
+        QPID_BROKER_EXTERN virtual bool deliver(QueuedMessage& msg);
+        QPID_BROKER_EXTERN bool filter(boost::intrusive_ptr<Message> msg);
+        QPID_BROKER_EXTERN bool accept(boost::intrusive_ptr<Message> msg);
+        QPID_BROKER_EXTERN void cancel() {}
+
+        QPID_BROKER_EXTERN void disableNotify();
+        QPID_BROKER_EXTERN void enableNotify();
+        QPID_BROKER_EXTERN void notify();
+        QPID_BROKER_EXTERN bool isNotifyEnabled() const;
+
+        QPID_BROKER_EXTERN void requestDispatch();
+
+        QPID_BROKER_EXTERN void setWindowMode();
+        QPID_BROKER_EXTERN void setCreditMode();
+        QPID_BROKER_EXTERN void addByteCredit(uint32_t value);
+        QPID_BROKER_EXTERN void addMessageCredit(uint32_t value);
+        QPID_BROKER_EXTERN void flush();
+        QPID_BROKER_EXTERN void stop();
+        QPID_BROKER_EXTERN void complete(DeliveryRecord&);
         boost::shared_ptr<Queue> getQueue() const { return queue; }
         bool isBlocked() const { return blocked; }
         bool setBlocked(bool set) { std::swap(set, blocked); return set; }
 
-        bool doOutput();
+        QPID_BROKER_EXTERN bool doOutput();
 
         Credit& getCredit() { return credit; }
         const Credit& getCredit() const { return credit; }
@@ -152,8 +155,11 @@ class SemanticState : private boost::non
         void acknowledged(const broker::QueuedMessage&) {}
 
         // manageable entry points
-        management::ManagementObject* GetManagementObject (void) const;
-        management::Manageable::status_t ManagementMethod (uint32_t methodId, management::Args& args, std::string& text);
+        QPID_BROKER_EXTERN management::ManagementObject*
+        GetManagementObject(void) const;
+
+        QPID_BROKER_EXTERN management::Manageable::status_t
+        ManagementMethod(uint32_t methodId, management::Args& args, std::string& text);
     };
 
     typedef std::map<std::string, DtxBuffer::shared_ptr> DtxBufferMap;

Modified: qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h?rev=1291436&r1=1291435&r2=1291436&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h Mon Feb 20 20:45:22 2012
@@ -33,7 +33,7 @@ namespace qpid {
 namespace broker {
 class Message;
 class Queue;
-class QueuedMessage;
+struct QueuedMessage;
 class OwnershipToken;
 }
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org


Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Alan Conway <ac...@redhat.com>.
On Tue, 2012-02-21 at 11:07 -0500, Ted Ross wrote:
> On 02/21/2012 11:05 AM, Alan Conway wrote:
> > On Tue, 2012-02-21 at 09:29 -0600, Steve Huston wrote:
> >>> -----Original Message-----
> >>> From: Alan Conway [mailto:aconway@redhat.com]
> >>> Sent: Tuesday, February 21, 2012 10:23 AM
> >>> To: dev@qpid.apache.org; Ted Ross; astitcher@redhat.com
> >>> Subject: Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp:
> >>> include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/
> >>> managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/
> >>> src/qpid/ha/
> >>>
> >>> On Mon, 2012-02-20 at 18:21 -0500, Andrew Stitcher wrote:
> >>>> On Mon, 2012-02-20 at 17:28 -0500, Alan Conway wrote:
> >>>>> ...
> >>>>> That is because there was no code outside of libqpidbroker calling
> >>>>> the generated functions (except for cluster.so but that is never
> >>>>> built on
> >>>>> windows.) The ha plugin now also calls some QMF generated functions.
> >>>>>
> >>>>> Perhaps a better solution is to move the QMF generated code for each
> >>>>> plugin into the plugin library itself, rather than putting it all
> >>>>> into libqpidbroker. If that's preferable I can do that.
> >>>>>
> >>>> I'd say that would be the most preferable idea - any generated code
> >>>> should only be included with the code that actually uses it. This is
> >>>> particular irritation with the current cluster implementation IMO.
> >>> So if we move the cluster&  ha generated QMF code into their respective
> >>> plugins, do we then want to remove all the EXTERNs in the remaining broker
> >>> QMF code or leave it there for possible future use?
> >> Does the generated code to be in the plugins call the remaining broker QMF
> >> code?
> > Good point, I had overlooked that. The ha plugin does use the
> > definitions for broker events such as queue-create etc. So we would
> > still need EXTERNS in the qmf code even if we move the plugin-specific
> > qmf code into the plugin directories.
> >
> >
> Another possibility is to have the code generator create the proper raw 
> externs for the environment (gcc, MS, mingw32) rather than use the macros.

I'd prefer to use the macros. We can't use the raw externs in
non-generated code, and I think it's best to be consistent between
generated and non-generated code.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Ted Ross <tr...@redhat.com>.
On 02/21/2012 11:05 AM, Alan Conway wrote:
> On Tue, 2012-02-21 at 09:29 -0600, Steve Huston wrote:
>>> -----Original Message-----
>>> From: Alan Conway [mailto:aconway@redhat.com]
>>> Sent: Tuesday, February 21, 2012 10:23 AM
>>> To: dev@qpid.apache.org; Ted Ross; astitcher@redhat.com
>>> Subject: Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp:
>>> include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/
>>> managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/
>>> src/qpid/ha/
>>>
>>> On Mon, 2012-02-20 at 18:21 -0500, Andrew Stitcher wrote:
>>>> On Mon, 2012-02-20 at 17:28 -0500, Alan Conway wrote:
>>>>> ...
>>>>> That is because there was no code outside of libqpidbroker calling
>>>>> the generated functions (except for cluster.so but that is never
>>>>> built on
>>>>> windows.) The ha plugin now also calls some QMF generated functions.
>>>>>
>>>>> Perhaps a better solution is to move the QMF generated code for each
>>>>> plugin into the plugin library itself, rather than putting it all
>>>>> into libqpidbroker. If that's preferable I can do that.
>>>>>
>>>> I'd say that would be the most preferable idea - any generated code
>>>> should only be included with the code that actually uses it. This is
>>>> particular irritation with the current cluster implementation IMO.
>>> So if we move the cluster&  ha generated QMF code into their respective
>>> plugins, do we then want to remove all the EXTERNs in the remaining broker
>>> QMF code or leave it there for possible future use?
>> Does the generated code to be in the plugins call the remaining broker QMF
>> code?
> Good point, I had overlooked that. The ha plugin does use the
> definitions for broker events such as queue-create etc. So we would
> still need EXTERNS in the qmf code even if we move the plugin-specific
> qmf code into the plugin directories.
>
>
Another possibility is to have the code generator create the proper raw 
externs for the environment (gcc, MS, mingw32) rather than use the macros.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


RE: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Alan Conway <ac...@redhat.com>.
On Tue, 2012-02-21 at 09:29 -0600, Steve Huston wrote:
> > -----Original Message-----
> > From: Alan Conway [mailto:aconway@redhat.com]
> > Sent: Tuesday, February 21, 2012 10:23 AM
> > To: dev@qpid.apache.org; Ted Ross; astitcher@redhat.com
> > Subject: Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp:
> > include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/
> > managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/
> > src/qpid/ha/
> >
> > On Mon, 2012-02-20 at 18:21 -0500, Andrew Stitcher wrote:
> > > On Mon, 2012-02-20 at 17:28 -0500, Alan Conway wrote:
> > > > ...
> > > > That is because there was no code outside of libqpidbroker calling
> > > > the generated functions (except for cluster.so but that is never
> > > > built on
> > > > windows.) The ha plugin now also calls some QMF generated functions.
> > > >
> > > > Perhaps a better solution is to move the QMF generated code for each
> > > > plugin into the plugin library itself, rather than putting it all
> > > > into libqpidbroker. If that's preferable I can do that.
> > > >
> > >
> > > I'd say that would be the most preferable idea - any generated code
> > > should only be included with the code that actually uses it. This is
> > > particular irritation with the current cluster implementation IMO.
> >
> > So if we move the cluster & ha generated QMF code into their respective
> > plugins, do we then want to remove all the EXTERNs in the remaining broker
> > QMF code or leave it there for possible future use?
> 
> Does the generated code to be in the plugins call the remaining broker QMF 
> code?

Good point, I had overlooked that. The ha plugin does use the
definitions for broker events such as queue-create etc. So we would
still need EXTERNS in the qmf code even if we move the plugin-specific
qmf code into the plugin directories.



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


RE: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Steve Huston <sh...@riverace.com>.
> -----Original Message-----
> From: Alan Conway [mailto:aconway@redhat.com]
> Sent: Tuesday, February 21, 2012 10:23 AM
> To: dev@qpid.apache.org; Ted Ross; astitcher@redhat.com
> Subject: Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp:
> include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/
> managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/
> src/qpid/ha/
>
> On Mon, 2012-02-20 at 18:21 -0500, Andrew Stitcher wrote:
> > On Mon, 2012-02-20 at 17:28 -0500, Alan Conway wrote:
> > > ...
> > > That is because there was no code outside of libqpidbroker calling
> > > the generated functions (except for cluster.so but that is never
> > > built on
> > > windows.) The ha plugin now also calls some QMF generated functions.
> > >
> > > Perhaps a better solution is to move the QMF generated code for each
> > > plugin into the plugin library itself, rather than putting it all
> > > into libqpidbroker. If that's preferable I can do that.
> > >
> >
> > I'd say that would be the most preferable idea - any generated code
> > should only be included with the code that actually uses it. This is
> > particular irritation with the current cluster implementation IMO.
>
> So if we move the cluster & ha generated QMF code into their respective
> plugins, do we then want to remove all the EXTERNs in the remaining broker
> QMF code or leave it there for possible future use?

Does the generated code to be in the plugins call the remaining broker QMF 
code?

-Steve

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Alan Conway <ac...@redhat.com>.
On Mon, 2012-02-20 at 18:21 -0500, Andrew Stitcher wrote:
> On Mon, 2012-02-20 at 17:28 -0500, Alan Conway wrote:
> > ...
> > That is because there was no code outside of libqpidbroker calling the
> > generated functions (except for cluster.so but that is never built on
> > windows.) The ha plugin now also calls some QMF generated functions.
> > 
> > Perhaps a better solution is to move the QMF generated code for each
> > plugin into the plugin library itself, rather than putting it all into
> > libqpidbroker. If that's preferable I can do that.
> > 
> 
> I'd say that would be the most preferable idea - any generated code
> should only be included with the code that actually uses it. This is
> particular irritation with the current cluster implementation IMO.

So if we move the cluster & ha generated QMF code into their respective
plugins, do we then want to remove all the EXTERNs in the remaining
broker QMF code or leave it there for possible future use?


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Andrew Stitcher <as...@redhat.com>.
On Mon, 2012-02-20 at 17:28 -0500, Alan Conway wrote:
> ...
> That is because there was no code outside of libqpidbroker calling the
> generated functions (except for cluster.so but that is never built on
> windows.) The ha plugin now also calls some QMF generated functions.
> 
> Perhaps a better solution is to move the QMF generated code for each
> plugin into the plugin library itself, rather than putting it all into
> libqpidbroker. If that's preferable I can do that.
> 

I'd say that would be the most preferable idea - any generated code
should only be included with the code that actually uses it. This is
particular irritation with the current cluster implementation IMO.

Andrew



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Alan Conway <ac...@redhat.com>.
On Mon, 2012-02-20 at 16:23 -0500, Ted Ross wrote:
> The scope of this fix seems to be much greater than that of the commit 
> that broke Windows.

It looks that way because in the original commit you only see the new
code for the HA plugin being added. You don't see the set of functions
in libqpidbroker that are being called by that new code - which is what
you see in the fix commit.

> A couple of questions:
> 
> 1) Why add "BrokerImportExport.h" to cpp/src/qmf?  There's already a 
> cpp/include/qmf/ImportExport.h that serves the same purpose.

It doesn't. qmf/ImportExport.h defines EXTERNS for the qmf.so library.
The generated code doesn't go in that library, it goes in
libqpidbroker.so. Hence the awkward BrokerImportExport for the generated
code.

> 2) Why all the changes to the generated code?  The old generation 
> templates worked fine under Windows.

That is because there was no code outside of libqpidbroker calling the
generated functions (except for cluster.so but that is never built on
windows.) The ha plugin now also calls some QMF generated functions.

Perhaps a better solution is to move the QMF generated code for each
plugin into the plugin library itself, rather than putting it all into
libqpidbroker. If that's preferable I can do that.

> The main thing you need to be concerned with is that any classes and 
> class methods that need to be accessible from outside the 
> DLL/shared-object are prefixed with the proper EXTERN symbol *for the 
> library*.  Furthermore, there's a different EXTERN symbol for inline 
> methods.

Correct, and as things are currently linked the ha plugin needs to call
QMF generated symbols in libqpidbroker so they need EXTERNs. Why do we
need EXTERNs for inline code? From what I saw making the changes, we
don't currently have EXTERNS on many/most inline functions in
libqpidbroker.

I'll be happy to fix this up however we decide is best.

Cheers,
Alan.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: svn commit: r1291436 - in /qpid/trunk/qpid/cpp: include/qpid/framing/ include/qpid/types/ managementgen/qmfgen/ managementgen/qmfgen/templates/ src/qmf/ src/qpid/broker/ src/qpid/ha/

Posted by Ted Ross <tr...@redhat.com>.
The scope of this fix seems to be much greater than that of the commit 
that broke Windows.

A couple of questions:

1) Why add "BrokerImportExport.h" to cpp/src/qmf?  There's already a 
cpp/include/qmf/ImportExport.h that serves the same purpose.
2) Why all the changes to the generated code?  The old generation 
templates worked fine under Windows.

The main thing you need to be concerned with is that any classes and 
class methods that need to be accessible from outside the 
DLL/shared-object are prefixed with the proper EXTERN symbol *for the 
library*.  Furthermore, there's a different EXTERN symbol for inline 
methods.

-Ted


On 02/20/2012 03:45 PM, aconway@apache.org wrote:
> Author: aconway
> Date: Mon Feb 20 20:45:22 2012
> New Revision: 1291436
>
> URL: http://svn.apache.org/viewvc?rev=1291436&view=rev
> Log:
> NO-JIRA: Fix missing EXTERN declarations, broke windows build.
>
> Added:
>      qpid/trunk/qpid/cpp/src/qmf/BrokerImportExport.h   (with props)
> Modified:
>      qpid/trunk/qpid/cpp/include/qpid/framing/SequenceNumber.h
>      qpid/trunk/qpid/cpp/include/qpid/framing/SequenceSet.h
>      qpid/trunk/qpid/cpp/include/qpid/types/Variant.h
>      qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py
>      qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
>      qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.h
>      qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h
>      qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
>      qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h
>      qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
>      qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
>      qpid/trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h
>      qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
>      qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h
>      qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
>
> [SNIP...]
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:commits-subscribe@qpid.apache.org
>


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org