⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factory.h

📁 java开源的企业总线.xmlBlaster
💻 H
字号:
// Module:  Log4CPLUS// File:    factory.h// Created: 2/2002// Author:  Tad E. Smith////// Copyright (C) Tad E. Smith  All rights reserved.//// This software is published under the terms of the Apache Software// License version 1.1, a copy of which has been included with this// distribution in the LICENSE.APL file.///** @file */#ifndef LOG4CPLUS_SPI_FACTORY_HEADER_#define LOG4CPLUS_SPI_FACTORY_HEADER_#include <log4cplus/config.h>#include <log4cplus/appender.h>#include <log4cplus/layout.h>#include <log4cplus/tstring.h>#include <log4cplus/helpers/property.h>#include <log4cplus/helpers/threads.h>#include <log4cplus/spi/filter.h>#include <log4cplus/spi/objectregistry.h>#include <map>#include <memory>#include <vector>namespace log4cplus {    namespace spi {        /**         * This is the base class for all factories.         */        class LOG4CPLUS_EXPORT BaseFactory {        public:            virtual ~BaseFactory() {}            virtual log4cplus::tstring getTypeName() = 0;        };        /**         * This abstract class defines the "Factory" interface to create "Appender"         * objects.         */        class LOG4CPLUS_EXPORT AppenderFactory : public BaseFactory {        public:            AppenderFactory(){}            virtual ~AppenderFactory(){}            /**             * Create an "Appender" object.             */            virtual SharedAppenderPtr createObject(const log4cplus::helpers::Properties& props) = 0;            /**             * Returns the typename of the "Appender" objects this factory creates.             */            virtual log4cplus::tstring getTypeName() = 0;        };        /**         * This abstract class defines the "Factory" interface to create "Layout"         * objects.         */        class LOG4CPLUS_EXPORT LayoutFactory : public BaseFactory {        public:            LayoutFactory(){}            virtual ~LayoutFactory(){}            /**             * Create a "Layout" object.             */            virtual std::auto_ptr<Layout> createObject(const log4cplus::helpers::Properties& props) = 0;            /**             * Returns the typename of the "Layout" objects this factory creates.             */            virtual log4cplus::tstring getTypeName() = 0;        };        /**         * This abstract class defines the "Factory" interface to create "Appender"         * objects.         */        class LOG4CPLUS_EXPORT FilterFactory : public BaseFactory {        public:            FilterFactory(){}            virtual ~FilterFactory(){}            /**             * Create a "Filter" object.             */            virtual FilterPtr createObject(const log4cplus::helpers::Properties& props) = 0;            /**             * Returns the typename of the "Filter" objects this factory creates.             */            virtual log4cplus::tstring getTypeName() = 0;        };        /**         * This template class is used as a "Factory Registry".  Objects are         * "entered" into the registry with a "name" using the          * <code>put()</code> method.  (The registry then owns the object.)           * These object can then be retrieved using the <code>get()</code>          * method.         * <p>         * <b>Note:</b>  This class is Thread-safe.         */        template<class T>        class LOG4CPLUS_EXPORT FactoryRegistry : ObjectRegistryBase {        public:            virtual ~FactoryRegistry() {                clear();            }          // public methods            /**             * Used to enter an object into the registry.  (The registry now             *  owns <code>object</code>.)             */            bool put(std::auto_ptr<T> object) {                 bool putValResult = putVal(object->getTypeName(), object.get());                 object.release();                 return putValResult;             }            /**             * Used to retrieve an object from the registry.  (The registry             * owns the returned pointer.)             */            T* get(const log4cplus::tstring& name) const {                return static_cast<T*>(getVal(name));            }        protected:            virtual void deleteObject(void *object) const {                delete static_cast<T*>(object);            }        };        typedef FactoryRegistry<AppenderFactory> AppenderFactoryRegistry;        typedef FactoryRegistry<LayoutFactory> LayoutFactoryRegistry;        typedef FactoryRegistry<FilterFactory> FilterFactoryRegistry;        /**         * Returns the "singleton" <code>AppenderFactoryRegistry</code>.         */        LOG4CPLUS_EXPORT AppenderFactoryRegistry& getAppenderFactoryRegistry();        /**         * Returns the "singleton" <code>LayoutFactoryRegistry</code>.         */        LOG4CPLUS_EXPORT LayoutFactoryRegistry& getLayoutFactoryRegistry();        /**         * Returns the "singleton" <code>FilterFactoryRegistry</code>.         */        LOG4CPLUS_EXPORT FilterFactoryRegistry& getFilterFactoryRegistry();    }}#endif // LOG4CPLUS_SPI_FACTORY_HEADER_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -