summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qmf/ObjectImpl.h
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2009-09-18 20:15:15 +0000
committerTed Ross <tross@apache.org>2009-09-18 20:15:15 +0000
commitc8fa5fa308f6ad9be22612568ace703777fbb6d9 (patch)
tree148275652ac2572ef4bb0863736a337a5d1617e2 /qpid/cpp/src/qmf/ObjectImpl.h
parentd3c07faea48e2dbd57cf27fac2d9940ca6456a69 (diff)
downloadqpid-python-c8fa5fa308f6ad9be22612568ace703777fbb6d9.tar.gz
Refactored the QMF engine to adhere to the following rules regarding
the pimpl (Pointer to Implementation) pattern: 1) Impl classes have constructors matching the public constructors 2) Additional Impl constructors are accessed through a static factory function 3) All linkages to objects are to the public object 4) If a back-link (from Impl to public) is needed, the Impl class must be derived from boost::noncopyable 5) All public classes have non-default copy constructors that make a copy of the Impl class git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@816770 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qmf/ObjectImpl.h')
-rw-r--r--qpid/cpp/src/qmf/ObjectImpl.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/qpid/cpp/src/qmf/ObjectImpl.h b/qpid/cpp/src/qmf/ObjectImpl.h
index 4ac5a31b54..565e9a2704 100644
--- a/qpid/cpp/src/qmf/ObjectImpl.h
+++ b/qpid/cpp/src/qmf/ObjectImpl.h
@@ -33,27 +33,29 @@ namespace qmf {
class BrokerProxyImpl;
+ typedef boost::shared_ptr<Object> ObjectPtr;
+
struct ObjectImpl {
- typedef boost::shared_ptr<ObjectImpl> Ptr;
typedef boost::shared_ptr<Value> ValuePtr;
- Object* envelope;
const SchemaObjectClass* objectClass;
BrokerProxyImpl* broker;
- boost::shared_ptr<ObjectIdImpl> objectId;
+ boost::shared_ptr<ObjectId> objectId;
uint64_t createTime;
uint64_t destroyTime;
uint64_t lastUpdatedTime;
mutable std::map<std::string, ValuePtr> properties;
mutable std::map<std::string, ValuePtr> statistics;
- ObjectImpl(Object* e, const SchemaObjectClass* type);
+ ObjectImpl(const SchemaObjectClass* type);
ObjectImpl(const SchemaObjectClass* type, BrokerProxyImpl* b, qpid::framing::Buffer& buffer,
bool prop, bool stat, bool managed);
+ static Object* factory(const SchemaObjectClass* type, BrokerProxyImpl* b, qpid::framing::Buffer& buffer,
+ bool prop, bool stat, bool managed);
~ObjectImpl();
void destroy();
- const ObjectId* getObjectId() const { return objectId.get() ? objectId->envelope : 0; }
- void setObjectId(ObjectId* oid) { objectId.reset(oid->impl); }
+ const ObjectId* getObjectId() const { return objectId.get(); }
+ void setObjectId(ObjectId* oid) { objectId.reset(oid); }
const SchemaObjectClass* getClass() const { return objectClass; }
Value* getValue(const std::string& key) const;
void invokeMethod(const std::string& methodName, const Value* inArgs, void* context) const;