summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/agent
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-07-08 21:54:20 +0000
committerTed Ross <tross@apache.org>2008-07-08 21:54:20 +0000
commit391608a73f18a1797ab0c358f0a94364dc888eb2 (patch)
treec7f26ec2072884a2e94a767a3d4f29d76c4e81c7 /cpp/src/qpid/agent
parent5515803c70dfeff04c190533e7f0187a0e732bf4 (diff)
downloadqpid-python-391608a73f18a1797ab0c358f0a94364dc888eb2.tar.gz
QPID-1170 - Remove boost dependency from management agent interface
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@674994 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/agent')
-rw-r--r--cpp/src/qpid/agent/ManagementAgent.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/cpp/src/qpid/agent/ManagementAgent.h b/cpp/src/qpid/agent/ManagementAgent.h
new file mode 100644
index 0000000000..97fc827f2a
--- /dev/null
+++ b/cpp/src/qpid/agent/ManagementAgent.h
@@ -0,0 +1,116 @@
+#ifndef _qpid_agent_ManagementAgent_
+#define _qpid_agent_ManagementAgent_
+
+//
+// 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.
+//
+
+#include "qpid/management/ManagementObject.h"
+#include "qpid/management/Manageable.h"
+
+namespace qpid {
+namespace management {
+
+class ManagementAgent
+{
+ public:
+
+ ManagementAgent () {}
+ virtual ~ManagementAgent () {}
+
+ static ManagementAgent* getAgent();
+
+ virtual int getMaxThreads() = 0;
+
+ // Connect to a management broker
+ //
+ // brokerHost - Hostname or IP address (dotted-quad) of broker.
+ //
+ // brokerPort - TCP port of broker.
+ //
+ // intervalSeconds - The interval (in seconds) that this agent shall use
+ // between broadcast updates to the broker.
+ //
+ // useExternalThread - If true, the thread of control used for callbacks
+ // must be supplied by the user of the object (via the
+ // pollCallbacks method).
+ //
+ // If false, callbacks shall be invoked on the management
+ // agent's thread. In this case, the callback implementations
+ // MUST be thread safe.
+ //
+ virtual void init (std::string brokerHost = "localhost",
+ uint16_t brokerPort = 5672,
+ uint16_t intervalSeconds = 10,
+ bool useExternalThread = false) = 0;
+
+ // Register a schema with the management agent. This is normally called by the
+ // package initializer generated by the management code generator.
+ //
+ virtual void
+ RegisterClass (std::string packageName,
+ std::string className,
+ uint8_t* md5Sum,
+ management::ManagementObject::writeSchemaCall_t schemaCall) = 0;
+
+ // Add a management object to the agent. Once added, this object shall be visible
+ // in the greater management context.
+ //
+ // Please note that ManagementObject instances are not explicitly deleted from
+ // the management agent. When the core object represented by a management object
+ // is deleted, the "resourceDestroy" method on the management object must be called.
+ // It will then be reclaimed in due course by the management agent.
+ //
+ // Once a ManagementObject instance is added to the agent, the agent then owns the
+ // instance. The caller MUST NOT free the resources of the instance at any time.
+ // When it is no longer needed, invoke its "resourceDestroy" method and discard the
+ // pointer. This allows the management agent to report the deletion of the object
+ // in an orderly way.
+ //
+ virtual uint64_t addObject (ManagementObject* objectPtr,
+ uint32_t persistId = 0,
+ uint32_t persistBank = 4) = 0;
+
+ // If "useExternalThread" was set to true in init, this method must
+ // be called to provide a thread for any pending method calls that have arrived.
+ // The method calls for ManagementObject instances shall be invoked synchronously
+ // during the execution of this method.
+ //
+ // callLimit may optionally be used to limit the number of callbacks invoked.
+ // if 0, no limit is imposed.
+ //
+ // The return value is the number of callbacks that remain queued after this
+ // call is complete. It can be used to determine whether or not further calls
+ // to pollCallbacks are necessary to clear the backlog. If callLimit is zero,
+ // the return value will also be zero.
+ //
+ virtual uint32_t pollCallbacks (uint32_t callLimit = 0) = 0;
+
+ // If "useExternalThread" was set to true in the constructor, this method provides
+ // a standard file descriptor that can be used in a select statement to signal that
+ // there are method callbacks ready (i.e. that "pollCallbacks" will result in at
+ // least one method call). When this fd is ready-for-read, pollCallbacks may be
+ // invoked. Calling pollCallbacks shall reset the ready-to-read state of the fd.
+ //
+ virtual int getSignalFd (void) = 0;
+
+};
+
+}}
+
+#endif /*!_qpid_agent_ManagementAgent_*/