Source

lrc / src / Factories.cxx

//      Factories.cxx
//
//      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.


// Includefiles
#ifdef HAVE_CONFIG_H
#include "lrc_config.h"
#endif

#include "Factories.hxx"
#include "include/CompressDecompress.hxx"
#include "include/EncryptDecrypt.hxx"

#include "strategies/NoneCompression.hxx"
#include "strategies/zLibCompression.hxx"
#include "strategies/bz2LibCompression.hxx"
#include "strategies/NoneEncryption.hxx"

#ifndef NO_ENCRYPTION
#include "strategies/SerpentEncryption.hxx"
#endif


lrc::CompressDecompress *CompressionFactory::get_compression_class(lrc::CompressionType p_compType)
{
	switch (p_compType) {
		case lrc::NoneCompression:
			return new NoneCompression();
			break;
		case lrc::zLibCompression:
			return new zLibCompression();
			break;
		case lrc::bz2LibCompression:
			return new bz2LibCompression();
			break;

		default:
			break;
	};

	return nullptr;
}


lrc::EncryptDecrypt *EncryptionFactory::get_encryption_class(lrc::EncryptionType p_encType,
                                                             char *p_resID) throw(lrcEncryptionDisabledException)
{
#ifdef NO_ENCRYPTION
	if (p_encType == lrc::NoneEncryption) {
		return new NoneEncryption();
	};

	throw lrcEncryptionDisabledException(p_resID);
#else
	switch (p_encType) {
		case lrc::NoneEncryption:
			return new NoneEncryption();
			break;
		case lrc::SerpentEncryption:
			return new SerpentEncryption();
			break;

		default:
			break;
	};

	return nullptr;
#endif /* NO_ENCRYPTION */
}
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.