diff options
| author | Ted Ross <tross@apache.org> | 2008-07-08 21:54:20 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2008-07-08 21:54:20 +0000 |
| commit | 391608a73f18a1797ab0c358f0a94364dc888eb2 (patch) | |
| tree | c7f26ec2072884a2e94a767a3d4f29d76c4e81c7 /cpp/src/qpid/agent | |
| parent | 5515803c70dfeff04c190533e7f0187a0e732bf4 (diff) | |
| download | qpid-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.h | 116 |
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_*/ |
