Source

lrc / src / Factories.hxx

//      Factories.hxx
//
//      Copyright 2011, 2012 Andreas Tscharner <andy@vis.ethz.ch>
//
//      This program is free software; you can redistribute it and/or modify
//      it under the terms of the GNU Lesser General Public License as
//      published by the Free Software Foundation; either version 3 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 Lesser General Public
//      License along with this program; if not, write to the Free Software
//      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
//      MA 02110-1301, USA.


/*! \file Factories.hxx
 *
 * This file contains the declarations of the compression factory class and
 * the encryption factory class
 *
 * \author Andreas Tscharner
 * \date 2012-01-07
 */


#ifndef __FACTORIES_HXX__
#define __FACTORIES_HXX__


// Include files
#include "include/CompressDecompress.hxx"
#include "include/EncryptDecrypt.hxx"
#include "lrcExceptions.hxx"


/*! \class CompressionFactory
 *  \brief Factory to create compression class instances
 *
 * This class is used to create an instance of a lrc::CompressDecompress
 * class. The created class instance compresses and decompresses the data,
 * depending on the given lrc::CompressionType
 */
class CompressionFactory
{
	public:
		/*! \brief Creates an instance of the desired class
		 *
		 * This method returns an instance of the desired
		 * compression/decompression class (if possible) or \c nullptr
		 *
		 * \param[in] p_compType Compression type
		 *
		 * \return Instance of desired compression class
		 */
		static lrc::CompressDecompress *get_compression_class(lrc::CompressionType);
};

/*! \class EncryptionFactory
 *  \brief Factory to create encryption class instances
 *
 * This class is used to create an instance of a lrc::EncryptDecrypt class.
 * The created class instance encrypts and decrypts the data, depending on
 * the given lrc::EncryptionType
 */
class EncryptionFactory
{
	public:
		/*! \brief Creates an instance of the desired class
		 *
		 * This method returns an instance of the desired
		 * encryption/decryption class (if possible of \c nullptr otherwise
		 *
		 * \param[in] p_encType Encryption type
		 * \param[in] p_resID ID of resource that requests encryptiion
		 *
		 * \return Instance of desired encryption class
		 */
		static lrc::EncryptDecrypt *get_encryption_class(lrc::EncryptionType, char *) throw(lrcEncryptionDisabledException);
};


#endif /* __FACTORIES_HXX__ */
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.