diff options
Diffstat (limited to 'src/CommonAPI/utils.h')
-rw-r--r-- | src/CommonAPI/utils.h | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/src/CommonAPI/utils.h b/src/CommonAPI/utils.h deleted file mode 100644 index c0e78eb..0000000 --- a/src/CommonAPI/utils.h +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright (C) 2013 BMW Group - * Author: Manfred Bathelt (manfred.bathelt@bmw.de) - * Author: Juergen Gehring (juergen.gehring@bmw.de) - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef COMMONAPI_UTILS_H_ -#define COMMONAPI_UTILS_H_ - -#ifndef WIN32 -#include <dirent.h> -#include <dlfcn.h> -#endif -#include <sys/stat.h> - -#include <cstring> -#include <string> -#include <sstream> -#include <vector> -#include <algorithm> -#include <iostream> - -#include <locale> -#include <functional> - -#ifdef WIN32 -#include <xfunctional> -#define WIN32_LEAN_AND_MEAN // this prevents windows.h from including winsock.h, which causes duplicate definitions with winsock2.h -#include <windows.h> -#else -#include <unistd.h> -#endif - -namespace CommonAPI { - - -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) -# define COMMONAPI_DEPRECATED __attribute__ ((__deprecated__)) -#elif defined(_MSC_VER) && (_MSC_VER >= 1300) -# define COMMONAPI_DEPRECATED __declspec(deprecated) -#else -# define COMMONAPI_DEPRECATED -#endif - - -/** - * \brief Returns the fully qualified name of the binary. - * - * @return The name of the currently executing binary. - */ -std::string getCurrentBinaryFileFQN(); - -/** - * \brief Splits a std::string according to the given delim-char. - * - * The string will be splitted at each position the delim char is encountered. The delim itself - * will be removed from the result. - * - * @param s: The string that is to be splitted - * @param delim: The character that separates the resulting string tokens in the original string - * @param elems: Reference to the vector that shall be filled with the splitted string elements. - * - * @return A reference to the vector you passed in (elems) - */ -std::vector<std::string>& split(const std::string& s, char delim, std::vector<std::string>& elems); - -/** - * \brief Splits a std::string according to the given delim-char. - * - * The string will be splitted at each position the delim char is encountered. The delim itself - * will be removed from the result. - * - * @param s: The string that is to be splitted - * @param delim: The character that separates the resulting string tokens in the original string - * - * @return A vector containing the splitted string elements. - */ -std::vector<std::string> split(const std::string& s, char delim); - -inline bool isspace(char c) { - return std::isspace(c, std::locale()); -} - -/** - * \brief Trims whitespaces from beginning and end of a std::string. - * - * @param toTrim: The string that is to be trimmed. - */ -void trim(std::string& toTrim); - -bool notIsdigit(char c); - -/** - * \brief Checks whether the given string contains nothing but digits. - * - * @param toCheck: The string that is to be checked on the presence of anything but digits. - * - * @return true if toCheck contains nothing but digits, false otherwise. - */ -bool containsOnlyDigits(const std::string& toCheck); - -bool notIsalnum(char c); - -/** - * \brief Checks whether the given string contains nothing but alphanumeric characters. - * - * @param toCheck: The string that is to be checked on the presence of anything but alphanumeric characters. - * - * @return true if toCheck contains nothing but alphanumeric characters, false otherwise. - */ -bool containsOnlyAlphanumericCharacters(const std::string& toCheck); - -/** - * \brief Checks whether the given std::string is a valid CommonAPI domain name. - * - * @param domainName: The std::string that is to be checked. - * - * @return true if domainName is a valid CommonAPI domainName, false otherwise. - */ -bool isValidDomainName(const std::string& domainName); - -/** - * \brief Checks whether the given std::string is a valid CommonAPI service name. - * - * @param serviceName: The std::string that is to be checked. - * - * @return true if serviceName is a valid CommonAPI serviceName, false otherwise. - */ -bool isValidServiceName(const std::string& serviceName); - -/** - * \brief Checks whether the given std::string is a valid CommonAPI instance ID. - * - * @param instanceId: The std::string that is to be checked. - * - * @return true if instanceId is a valid CommonAPI instance ID, false otherwise. - */ -bool isValidInstanceId(const std::string& instanceId); - -/** - * \brief Checks whether the given std::string is a valid CommonAPI address. - * - * @param commonApiAddressName: The std::string that is to be checked. - * - * @return true if commonApiAddress is a valid CommonAPI address, false otherwise. - */ -bool isValidCommonApiAddress(const std::string& commonApiAddress); - -#ifndef WIN32 -/** - * \brief Loads a specific generic library at runtime. - * - * The library will be loaded using dlopen(3) with the flags (RTLD_NOW | RTLD_GLOBAL), if all pre-checks are - * successful. Pre-checks include the verification that the given parameters actually point to a library and - * optionally if the library matches the standard name pattern for CommonAPI generic libraries. The standard - * name pattern is "lib<wellKnownMiddlewareName>Gen-<arbitraryName>.so[.major[.minor.revision]]". - * - * @param wellKnownMiddlewareName: The name of the middleware that requests the loading of the library. - * @param libraryName: The name of the library that shall be loaded. - * @param path: The path at which the library is to be found. path + library name together make up the fully - * qualified name of the library. - * @param checkStandardNamePattern: If set to true, it will be ensured the library matches the CommonAPI - * standard name pattern for generic libraries. This is meant as a safety measure - * to prevent the loading of unnecessary or the wrong libraries. Set to false if - * you are sure about what you are doing. - * @return true if the library could be loaded successfully, false otherwise. - * - * @note The well known middleware name is included as a parameter because the additional libraries normally are needed - * only by specific middlewares. This name however will only be taken into consideration during name checking - * if the checkStandardNamePattern flag is set to true. - */ -bool loadGenericLibrary(const std::string& wellKnownMiddlewareName, const std::string& libraryName, const std::string& path, bool checkStandardNamePattern = true); - -/** - * \brief Loads a specific generic library at runtime. - * - * The library will be loaded using dlopen(3) with the flags (RTLD_NOW | RTLD_GLOBAL), if all pre-checks are - * successful. Pre-checks include the verification that the given parameters actually point to a library and - * optionally if the library matches the standard name pattern for CommonAPI generic libraries. The standard - * name pattern is "lib<wellKnownMiddlewareName>Gen-<arbitraryName>.so[.major[.minor.revision]]". - * - * @param wellKnownMiddlewareName: The name of the middleware that requests the loading of the library. - * @param fqnOfLibrary: The fully qualified name of the library. - * @param checkStandardNamePattern: If set to true, it will be ensured the library matches the CommonAPI - * standard name pattern for generic libraries. This is meant as a safety measure - * to prevent the loading of unnecessary or the wrong libraries. Set to false if - * you are sure about what you are doing. - * @return true if the library could be loaded successfully, false otherwise. - * - * @note The well known middleware name is included as a parameter because the additional libraries normally are needed - * only by specific middlewares. This name however will only be taken into consideration during name checking - * if the checkStandardNamePattern flag is set to true. - */ -bool loadGenericLibrary(const std::string& wellKnownMiddlewareName, - const std::string& fqnOfLibrary, - bool checkStandardNamePattern = true); - -/** - * \brief Searches the given path for additional generic CommonAPI libraries and loads them. - * - * All libraries for which the pre-checks are successful will be loaded using dlopen(3) with the flags - * (RTLD_NOW | RTLD_GLOBAL). Pre-checks include the verification that the given parameters actually point - * to a library and if the library matches the standard name pattern for CommonAPI generic libraries. - * The standard name pattern is "lib<wellKnownMiddlewareName>Gen-<arbitraryName>.so[.major[.minor.revision]]". - * - * @param wellKnownMiddlewareName: The name of the middleware that requests the loading of the library. Will - * be used to perform the name check. - * @param singleSearchPath: The directory that is to be searched for libraries. - */ -void findAndLoadGenericLibraries(const std::string& requestedMiddlewareName, const std::string& singleSearchPath); - -/** - * \brief Searches the given paths for additional generic CommonAPI libraries and loads them. - * - * All libraries for which the pre-checks are successful will be loaded using dlopen(3) with the flags - * (RTLD_NOW | RTLD_GLOBAL). Pre-checks include the verification that the given parameters actually point - * to a library and if the library matches the standard name pattern for CommonAPI generic libraries. - * The standard name pattern is "lib<wellKnownMiddlewareName>Gen-<arbitraryName>.so[.major[.minor.revision]]". - * - * @param wellKnownMiddlewareName: The name of the middleware that requests the loading of the library. Will - * be used to perform the name check. - * @param searchPaths: The directories that are to be searched for libraries. - */ -void findAndLoadGenericLibraries(const std::string& requestedMiddlewareName, const std::vector<std::string>& searchPaths); -#endif - -} //namespace CommonAPI - - -#endif /* COMMONAPI_UTILS_H_ */ |