aboutsummaryrefslogtreecommitdiffstats
path: root/src/messaging/serviceFactory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/messaging/serviceFactory.hpp')
-rw-r--r--src/messaging/serviceFactory.hpp186
1 files changed, 0 insertions, 186 deletions
diff --git a/src/messaging/serviceFactory.hpp b/src/messaging/serviceFactory.hpp
deleted file mode 100644
index 89ce9773..00000000
--- a/src/messaging/serviceFactory.hpp
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-// VMime library (http://vmime.sourceforge.net)
-// Copyright (C) 2002-2004 Vincent Richard <[email protected]>
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//
-
-#ifndef VMIME_MESSAGING_SERVICEFACTORY_HPP_INCLUDED
-#define VMIME_MESSAGING_SERVICEFACTORY_HPP_INCLUDED
-
-
-#include <map>
-
-#include "types.hpp"
-#include "base.hpp"
-#include "utility/singleton.hpp"
-#include "utility/stringUtils.hpp"
-
-#include "messaging/serviceInfos.hpp"
-#include "messaging/authenticator.hpp"
-#include "messaging/progressionListener.hpp"
-#include "messaging/timeoutHandler.hpp"
-#include "messaging/url.hpp"
-
-
-namespace vmime {
-namespace messaging {
-
-
-class service;
-class session;
-
-
-/** A factory to create 'service' objects for a specified protocol.
- */
-
-class serviceFactory : public utility::singleton <serviceFactory>
-{
- friend class utility::singleton <serviceFactory>;
-
-private:
-
- serviceFactory();
- ~serviceFactory();
-
-public:
-
- /** Information about a registered service. */
- class registeredService
- {
- friend class serviceFactory;
-
- protected:
-
- virtual ~registeredService() { }
-
- public:
-
- virtual service* create(session* sess, authenticator* auth) const = 0;
-
- virtual const string& getName() const = 0;
- virtual const serviceInfos& getInfos() const = 0;
- };
-
-private:
-
- template <class S>
- class registeredServiceImpl : public registeredService
- {
- friend class serviceFactory;
-
- protected:
-
- registeredServiceImpl(const string& name)
- : m_name(name), m_servInfos(S::getInfosInstance())
- {
- }
-
- public:
-
- service* create(session* sess, authenticator* auth) const
- {
- return new S(sess, auth);
- }
-
- const serviceInfos& getInfos() const
- {
- return (m_servInfos);
- }
-
- const string& getName() const
- {
- return (m_name);
- }
-
- private:
-
- const string m_name;
- const serviceInfos& m_servInfos;
- };
-
- std::vector <registeredService*> m_services;
-
-public:
-
- /** Register a new service by its protocol name.
- *
- * @param protocol protocol name
- */
- template <class S>
- void registerServiceByProtocol(const string& protocol)
- {
- const string name = stringUtils::toLower(protocol);
- m_services.push_back(new registeredServiceImpl <S>(name));
- }
-
- /** Create a new service instance from a protocol name.
- *
- * @param sess session
- * @param protocol protocol name (eg. "pop3")
- * @param auth authenticator used to provide credentials (can be NULL if not used)
- * @return a new service instance for the specified protocol
- * @throw exceptions::no_service_available if no service is registered
- * for this protocol
- */
- service* create(session* sess, const string& protocol, authenticator* auth = NULL);
-
- /** Create a new service instance from a URL.
- *
- * @param sess session
- * @param u full URL with at least protocol and server (you can also specify
- * port, username and password)
- * @param auth authenticator used to provide credentials (can be NULL if not used)
- * @return a new service instance for the specified protocol
- * @throw exceptions::no_service_available if no service is registered
- * for this protocol
- */
- service* create(session* sess, const url& u, authenticator* auth = NULL);
-
- /** Return information about a registered protocol.
- *
- * @param protocol protocol name
- * @return information about this protocol
- * @throw exceptions::no_service_available if no service is registered
- * for this protocol
- */
- const registeredService* getServiceByProtocol(const string& protocol) const;
-
- /** Return the number of registered services.
- *
- * @return number of registered services
- */
- const int getServiceCount() const;
-
- /** Return the registered service at the specified position.
- *
- * @param pos position of the registered service to return
- * @return registered service at the specified position
- */
- const registeredService* getServiceAt(const int pos) const;
-
- /** Return a list of all registered services.
- *
- * @return list of registered services
- */
- const std::vector <const registeredService*> getServiceList() const;
-};
-
-
-} // messaging
-} // vmime
-
-
-#endif // VMIME_MESSAGING_SERVICEFACTORY_HPP_INCLUDED