You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2017/11/20 20:33:38 UTC
[41/46] celix git commit: CELIX-417: Initial refactoring for CMake
usage
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/include/unzip.h
----------------------------------------------------------------------
diff --git a/deployment_admin/private/include/unzip.h b/deployment_admin/private/include/unzip.h
deleted file mode 100644
index 3183968..0000000
--- a/deployment_admin/private/include/unzip.h
+++ /dev/null
@@ -1,437 +0,0 @@
-/* unzip.h -- IO for uncompress .zip files using zlib
- Version 1.1, February 14h, 2010
- part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
-
- Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
-
- Modifications of Unzip for Zip64
- Copyright (C) 2007-2008 Even Rouault
-
- Modifications for Zip64 support on both zip and unzip
- Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
-
- For more info read MiniZip_info.txt
-
- ---------------------------------------------------------------------------------
-
- Condition of use and distribution are the same than zlib :
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- ---------------------------------------------------------------------------------
-
- Changes
-
- See header of unzip64.c
-
-*/
-
-#ifndef _unz64_H
-#define _unz64_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _ZLIB_H
-#include "zlib.h"
-#endif
-
-#ifndef _ZLIBIOAPI_H
-#include "ioapi.h"
-#endif
-
-#ifdef HAVE_BZIP2
-#include "bzlib.h"
-#endif
-
-#define Z_BZIP2ED 12
-
-#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
-/* like the STRICT of WIN32, we define a pointer that cannot be converted
- from (void*) without cast */
-typedef struct TagunzFile__ { int unused; } unzFile__;
-typedef unzFile__ *unzFile;
-#else
-typedef voidp unzFile;
-#endif
-
-
-#define UNZ_OK (0)
-#define UNZ_END_OF_LIST_OF_FILE (-100)
-#define UNZ_ERRNO (Z_ERRNO)
-#define UNZ_EOF (0)
-#define UNZ_PARAMERROR (-102)
-#define UNZ_BADZIPFILE (-103)
-#define UNZ_INTERNALERROR (-104)
-#define UNZ_CRCERROR (-105)
-
-/* tm_unz contain date/time info */
-typedef struct tm_unz_s
-{
- uInt tm_sec; /* seconds after the minute - [0,59] */
- uInt tm_min; /* minutes after the hour - [0,59] */
- uInt tm_hour; /* hours since midnight - [0,23] */
- uInt tm_mday; /* day of the month - [1,31] */
- uInt tm_mon; /* months since January - [0,11] */
- uInt tm_year; /* years - [1980..2044] */
-} tm_unz;
-
-/* unz_global_info structure contain global data about the ZIPfile
- These data comes from the end of central dir */
-typedef struct unz_global_info64_s
-{
- ZPOS64_T number_entry; /* total number of entries in
- the central dir on this disk */
- uLong size_comment; /* size of the global comment of the zipfile */
-} unz_global_info64;
-
-typedef struct unz_global_info_s
-{
- uLong number_entry; /* total number of entries in
- the central dir on this disk */
- uLong size_comment; /* size of the global comment of the zipfile */
-} unz_global_info;
-
-/* unz_file_info contain information about a file in the zipfile */
-typedef struct unz_file_info64_s
-{
- uLong version; /* version made by 2 bytes */
- uLong version_needed; /* version needed to extract 2 bytes */
- uLong flag; /* general purpose bit flag 2 bytes */
- uLong compression_method; /* compression method 2 bytes */
- uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
- uLong crc; /* crc-32 4 bytes */
- ZPOS64_T compressed_size; /* compressed size 8 bytes */
- ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */
- uLong size_filename; /* filename length 2 bytes */
- uLong size_file_extra; /* extra field length 2 bytes */
- uLong size_file_comment; /* file comment length 2 bytes */
-
- uLong disk_num_start; /* disk number start 2 bytes */
- uLong internal_fa; /* internal file attributes 2 bytes */
- uLong external_fa; /* external file attributes 4 bytes */
-
- tm_unz tmu_date;
-} unz_file_info64;
-
-typedef struct unz_file_info_s
-{
- uLong version; /* version made by 2 bytes */
- uLong version_needed; /* version needed to extract 2 bytes */
- uLong flag; /* general purpose bit flag 2 bytes */
- uLong compression_method; /* compression method 2 bytes */
- uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
- uLong crc; /* crc-32 4 bytes */
- uLong compressed_size; /* compressed size 4 bytes */
- uLong uncompressed_size; /* uncompressed size 4 bytes */
- uLong size_filename; /* filename length 2 bytes */
- uLong size_file_extra; /* extra field length 2 bytes */
- uLong size_file_comment; /* file comment length 2 bytes */
-
- uLong disk_num_start; /* disk number start 2 bytes */
- uLong internal_fa; /* internal file attributes 2 bytes */
- uLong external_fa; /* external file attributes 4 bytes */
-
- tm_unz tmu_date;
-} unz_file_info;
-
-extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
- const char* fileName2,
- int iCaseSensitivity));
-/*
- Compare two filename (fileName1,fileName2).
- If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
- If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
- or strcasecmp)
- If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
- (like 1 on Unix, 2 on Windows)
-*/
-
-
-extern unzFile ZEXPORT unzOpen OF((const char *path));
-extern unzFile ZEXPORT unzOpen64 OF((const void *path));
-/*
- Open a Zip file. path contain the full pathname (by example,
- on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
- "zlib/zlib113.zip".
- If the zipfile cannot be opened (file don't exist or in not valid), the
- return value is NULL.
- Else, the return value is a unzFile Handle, usable with other function
- of this unzip package.
- the "64" function take a const void* pointer, because the path is just the
- value passed to the open64_file_func callback.
- Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path
- is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char*
- does not describe the reality
-*/
-
-
-extern unzFile ZEXPORT unzOpen2 OF((const char *path,
- zlib_filefunc_def* pzlib_filefunc_def));
-/*
- Open a Zip file, like unzOpen, but provide a set of file low level API
- for read/write the zip file (see ioapi.h)
-*/
-
-extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
- zlib_filefunc64_def* pzlib_filefunc_def));
-/*
- Open a Zip file, like unz64Open, but provide a set of file low level API
- for read/write the zip file (see ioapi.h)
-*/
-
-extern int ZEXPORT unzClose OF((unzFile file));
-/*
- Close a ZipFile opened with unzipOpen.
- If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
- these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
- return UNZ_OK if there is no problem. */
-
-extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
- unz_global_info *pglobal_info));
-
-extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
- unz_global_info64 *pglobal_info));
-/*
- Write info about the ZipFile in the *pglobal_info structure.
- No preparation of the structure is needed
- return UNZ_OK if there is no problem. */
-
-
-extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
- char *szComment,
- uLong uSizeBuf));
-/*
- Get the global comment string of the ZipFile, in the szComment buffer.
- uSizeBuf is the size of the szComment buffer.
- return the number of byte copied or an error code <0
-*/
-
-
-/***************************************************************************/
-/* Unzip package allow you browse the directory of the zipfile */
-
-extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
-/*
- Set the current file of the zipfile to the first file.
- return UNZ_OK if there is no problem
-*/
-
-extern int ZEXPORT unzGoToNextFile OF((unzFile file));
-/*
- Set the current file of the zipfile to the next file.
- return UNZ_OK if there is no problem
- return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
-*/
-
-extern int ZEXPORT unzLocateFile OF((unzFile file,
- const char *szFileName,
- int iCaseSensitivity));
-/*
- Try locate the file szFileName in the zipfile.
- For the iCaseSensitivity signification, see unzStringFileNameCompare
-
- return value :
- UNZ_OK if the file is found. It becomes the current file.
- UNZ_END_OF_LIST_OF_FILE if the file is not found
-*/
-
-
-/* ****************************************** */
-/* Ryan supplied functions */
-/* unz_file_info contain information about a file in the zipfile */
-typedef struct unz_file_pos_s
-{
- uLong pos_in_zip_directory; /* offset in zip file directory */
- uLong num_of_file; /* # of file */
-} unz_file_pos;
-
-extern int ZEXPORT unzGetFilePos(
- unzFile file,
- unz_file_pos* file_pos);
-
-extern int ZEXPORT unzGoToFilePos(
- unzFile file,
- unz_file_pos* file_pos);
-
-typedef struct unz64_file_pos_s
-{
- ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */
- ZPOS64_T num_of_file; /* # of file */
-} unz64_file_pos;
-
-extern int ZEXPORT unzGetFilePos64(
- unzFile file,
- unz64_file_pos* file_pos);
-
-extern int ZEXPORT unzGoToFilePos64(
- unzFile file,
- const unz64_file_pos* file_pos);
-
-/* ****************************************** */
-
-extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
- unz_file_info64 *pfile_info,
- char *szFileName,
- uLong fileNameBufferSize,
- void *extraField,
- uLong extraFieldBufferSize,
- char *szComment,
- uLong commentBufferSize));
-
-extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
- unz_file_info *pfile_info,
- char *szFileName,
- uLong fileNameBufferSize,
- void *extraField,
- uLong extraFieldBufferSize,
- char *szComment,
- uLong commentBufferSize));
-/*
- Get Info about the current file
- if pfile_info!=NULL, the *pfile_info structure will contain somes info about
- the current file
- if szFileName!=NULL, the filemane string will be copied in szFileName
- (fileNameBufferSize is the size of the buffer)
- if extraField!=NULL, the extra field information will be copied in extraField
- (extraFieldBufferSize is the size of the buffer).
- This is the Central-header version of the extra field
- if szComment!=NULL, the comment string of the file will be copied in szComment
- (commentBufferSize is the size of the buffer)
-*/
-
-
-/** Addition for GDAL : START */
-
-extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
-
-/** Addition for GDAL : END */
-
-
-/***************************************************************************/
-/* for reading the content of the current zipfile, you can open it, read data
- from it, and close it (you can close it before reading all the file)
- */
-
-extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
-/*
- Open for reading data the current file in the zipfile.
- If there is no error, the return value is UNZ_OK.
-*/
-
-extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
- const char* password));
-/*
- Open for reading data the current file in the zipfile.
- password is a crypting password
- If there is no error, the return value is UNZ_OK.
-*/
-
-extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
- int* method,
- int* level,
- int raw));
-/*
- Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
- if raw==1
- *method will receive method of compression, *level will receive level of
- compression
- note : you can set level parameter as NULL (if you did not want known level,
- but you CANNOT set method parameter as NULL
-*/
-
-extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
- int* method,
- int* level,
- int raw,
- const char* password));
-/*
- Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
- if raw==1
- *method will receive method of compression, *level will receive level of
- compression
- note : you can set level parameter as NULL (if you did not want known level,
- but you CANNOT set method parameter as NULL
-*/
-
-
-extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
-/*
- Close the file in zip opened with unzOpenCurrentFile
- Return UNZ_CRCERROR if all the file was read but the CRC is not good
-*/
-
-extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
- voidp buf,
- unsigned len));
-/*
- Read bytes from the current file (opened by unzOpenCurrentFile)
- buf contain buffer where data must be copied
- len the size of buf.
-
- return the number of byte copied if somes bytes are copied
- return 0 if the end of file was reached
- return <0 with error code if there is an error
- (UNZ_ERRNO for IO error, or zLib error for uncompress error)
-*/
-
-extern z_off_t ZEXPORT unztell OF((unzFile file));
-
-extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
-/*
- Give the current position in uncompressed data
-*/
-
-extern int ZEXPORT unzeof OF((unzFile file));
-/*
- return 1 if the end of file was reached, 0 elsewhere
-*/
-
-extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
- voidp buf,
- unsigned len));
-/*
- Read extra field from the current file (opened by unzOpenCurrentFile)
- This is the local-header version of the extra field (sometimes, there is
- more info in the local-header version than in the central-header)
-
- if buf==NULL, it return the size of the local extra field
-
- if buf!=NULL, len is the size of the buffer, the extra header is copied in
- buf.
- the return value is the number of bytes copied in buf, or (if <0)
- the error code
-*/
-
-/***************************************************************************/
-
-/* Get the current file offset */
-extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file);
-extern uLong ZEXPORT unzGetOffset (unzFile file);
-
-/* Set the current file offset */
-extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos);
-extern int ZEXPORT unzSetOffset (unzFile file, uLong pos);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _unz64_H */
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/deployment_admin.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_admin.c b/deployment_admin/private/src/deployment_admin.c
deleted file mode 100644
index 17e78db..0000000
--- a/deployment_admin/private/src/deployment_admin.c
+++ /dev/null
@@ -1,809 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * deployment_admin.c
- *
- * \date Nov 7, 2011
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <dirent.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <curl/curl.h>
-#include <curl/easy.h>
-
-#include <uuid/uuid.h>
-
-#include "celixbool.h"
-#include "deployment_admin.h"
-#include "celix_errno.h"
-#include "bundle_context.h"
-#include "constants.h"
-#include "deployment_package.h"
-#include "bundle.h"
-#include "utils.h"
-
-#include "log.h"
-#include "log_store.h"
-#include "log_sync.h"
-
-#include "resource_processor.h"
-#include "miniunz.h"
-
-#define IDENTIFICATION_ID "deployment_admin_identification"
-#define DEFAULT_IDENTIFICATION_ID "celix"
-
-#define ADMIN_URL "deployment_admin_url"
-#define DEFAULT_ADMIN_URL "localhost:8080"
-
-#define DEPLOYMENT_CACHE_DIR "deployment_cache_dir"
-#define DEPLOYMENT_TAGS "deployment_tags"
-// "http://localhost:8080/deployment/"
-
-#define VERSIONS "/versions"
-
-static void* deploymentAdmin_poll(void *deploymentAdmin);
-celix_status_t deploymentAdmin_download(deployment_admin_pt admin, char * url, char **inputFile);
-size_t deploymentAdmin_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream);
-static celix_status_t deploymentAdmin_deleteTree(char * directory);
-celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_list_pt versions);
-
-celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt target);
-celix_status_t deploymentAdmin_updateDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source);
-celix_status_t deploymentAdmin_startDeploymentPackageCustomizerBundles(deployment_admin_pt admin, deployment_package_pt source, deployment_package_pt target);
-celix_status_t deploymentAdmin_processDeploymentPackageResources(deployment_admin_pt admin, deployment_package_pt source);
-celix_status_t deploymentAdmin_dropDeploymentPackageResources(deployment_admin_pt admin, deployment_package_pt source, deployment_package_pt target);
-celix_status_t deploymentAdmin_dropDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source, deployment_package_pt target);
-celix_status_t deploymentAdmin_startDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source);
-
-static celix_status_t deploymentAdmin_performRequest(deployment_admin_pt admin, char* entry);
-static celix_status_t deploymentAdmin_auditEventTargetPropertiesSet(deployment_admin_pt admin);
-static celix_status_t deploymentAdmin_auditEventFrameworkStarted(deployment_admin_pt admin);
-
-celix_status_t deploymentAdmin_create(bundle_context_pt context, deployment_admin_pt *admin) {
- celix_status_t status = CELIX_SUCCESS;
-
- *admin = calloc(1, sizeof(**admin));
- if (!*admin) {
- status = CELIX_ENOMEM;
- } else {
- (*admin)->running = true;
- (*admin)->context = context;
- (*admin)->current = NULL;
- (*admin)->packages = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
- (*admin)->targetIdentification = NULL;
- (*admin)->pollUrl = NULL;
- (*admin)->auditlogUrl = NULL;
-
- bundleContext_getProperty(context, IDENTIFICATION_ID, (const char**) &(*admin)->targetIdentification);
- if ((*admin)->targetIdentification == NULL) {
- (*admin)->targetIdentification = DEFAULT_IDENTIFICATION_ID;
- fw_log(logger, OSGI_FRAMEWORK_LOG_INFO, "Identification ID not set, using default '%s'. Set id by using '%s'",
- DEFAULT_IDENTIFICATION_ID, IDENTIFICATION_ID);
- }
-
- struct timeval tv;
- gettimeofday(&tv,NULL);
- (*admin)->auditlogId = tv.tv_sec*(uint64_t)1000000+tv.tv_usec;
- (*admin)->aditlogSeqNr = 0;
-
- if ((*admin)->targetIdentification == NULL ) {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Target name must be set using \"deployment_admin_identification\"");
- } else {
- const char *url = NULL;
- bundleContext_getProperty(context, ADMIN_URL, &url);
- if (url == NULL) {
- url = DEFAULT_ADMIN_URL;
- fw_log(logger, OSGI_FRAMEWORK_LOG_INFO, "Server URL is not set, using default '%s'. Set id by using '%s'",
- DEFAULT_ADMIN_URL, ADMIN_URL);
- }
-
- int pollUrlLength = strlen(url) + strlen((*admin)->targetIdentification) + strlen(VERSIONS) + 13;
- int auditlogUrlLength = strlen(url) + 10;
-
- char pollUrl[pollUrlLength];
- char auditlogUrl[auditlogUrlLength];
-
- snprintf(pollUrl, pollUrlLength, "%s/deployment/%s%s", url, (*admin)->targetIdentification, VERSIONS);
- snprintf(auditlogUrl, auditlogUrlLength, "%s/auditlog", url);
-
- (*admin)->pollUrl = strdup(pollUrl);
- (*admin)->auditlogUrl = strdup(auditlogUrl);
-
-// log_store_pt store = NULL;
-// log_pt log = NULL;
-// log_sync_pt sync = NULL;
-// logStore_create(subpool, &store);
-// log_create(subpool, store, &log);
-// logSync_create(subpool, (*admin)->targetIdentification, store, &sync);
-//
-// log_log(log, 20000, NULL);
-
-
- celixThread_create(&(*admin)->poller, NULL, deploymentAdmin_poll, *admin);
- }
- }
-
- return status;
-}
-
-
-
-celix_status_t deploymentAdmin_destroy(deployment_admin_pt admin) {
- celix_status_t status = CELIX_SUCCESS;
-
- admin->running = false;
-
- celixThread_join(admin->poller, NULL);
-
- hash_map_iterator_pt iter = hashMapIterator_create(admin->packages);
-
- while (hashMapIterator_hasNext(iter)) {
- deployment_package_pt target = (deployment_package_pt) hashMapIterator_nextValue(iter);
- deploymentPackage_destroy(target);
- }
-
- hashMapIterator_destroy(iter);
-
- hashMap_destroy(admin->packages, false, false);
-
- if (admin->current != NULL) {
- free(admin->current);
- }
-
- free(admin->pollUrl);
- free(admin->auditlogUrl);
-
- free(admin);
-
- return status;
-}
-
-
-static celix_status_t deploymentAdmin_performRequest(deployment_admin_pt admin, char* entry) {
- celix_status_t status = CELIX_SUCCESS;
-
- CURL *curl;
- CURLcode res;
- curl = curl_easy_init();
-
- if (!curl) {
- status = CELIX_BUNDLE_EXCEPTION;
-
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error initializing curl.");
- }
-
- char url[strlen(admin->auditlogUrl)+6];
- sprintf(url, "%s/send", admin->auditlogUrl);
-
- if (status == CELIX_SUCCESS) {
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_URL, url);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, entry);
- res = curl_easy_perform(curl);
-
- if (res != CURLE_OK ) {
- status = CELIX_BUNDLE_EXCEPTION;
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error sending auditlog, got curl error code %d", res);
- }
- }
-
- return status;
-}
-
-static celix_status_t deploymentAdmin_auditEventTargetPropertiesSet(deployment_admin_pt admin) {
- celix_status_t status = CELIX_SUCCESS;
-
- const char *tags = NULL;
-
- bundleContext_getProperty(admin->context, DEPLOYMENT_TAGS, &tags);
-
- if (tags != NULL) {
- char entry[512];
- int entrySize = 0;
-
- entrySize = snprintf(entry, 512, "%s,%llu,%u,0,%i,%s\n", admin->targetIdentification, admin->auditlogId, admin->aditlogSeqNr++, DEPLOYMENT_ADMIN_AUDIT_EVENT__TARGETPROPERTIES_SET, tags);
-
- if (entrySize >= 512) {
- status = CELIX_BUNDLE_EXCEPTION;
- }
- else {
- status = deploymentAdmin_performRequest(admin, entry);
- }
- }
-
- return status;
-}
-
-static celix_status_t deploymentAdmin_auditEventFrameworkStarted(deployment_admin_pt admin) {
- celix_status_t status = CELIX_SUCCESS;
-
- char entry[512];
- int entrySize = 0;
-
- entrySize = snprintf(entry, 512, "%s,%llu,%u,0,%i\n", admin->targetIdentification, admin->auditlogId, admin->aditlogSeqNr++, DEPLOYMENT_ADMIN_AUDIT_EVENT__FRAMEWORK_STARTED);
-
- if (entrySize >= 512) {
- status = CELIX_BUNDLE_EXCEPTION;
- }
- else {
- status = deploymentAdmin_performRequest(admin, entry);
- }
-
- return status;
-}
-
-
-static void *deploymentAdmin_poll(void *deploymentAdmin) {
- deployment_admin_pt admin = deploymentAdmin;
-
- /*first poll send framework started audit event, note this will register the target in Apache ACE*/
- deploymentAdmin_auditEventFrameworkStarted(admin);
- deploymentAdmin_auditEventTargetPropertiesSet(admin);
-
- while (admin->running) {
- int i;
-
- //poll ace
- array_list_pt versions = NULL;
- arrayList_create(&versions);
-
- deploymentAdmin_readVersions(admin, versions);
-
- char *last = arrayList_get(versions, arrayList_size(versions) - 1);
-
- if (last != NULL) {
- if (admin->current == NULL || strcmp(last, admin->current) != 0) {
- int length = strlen(admin->pollUrl) + strlen(last) + 2;
- char request[length];
-
- // TODO
- // We do not yet support fix packages
- // Check string lenght!
- // snprintf(request, length, "%s/%s?current=%s", admin->pollUrl, last, admin->current);
- snprintf(request, length, "%s/%s", admin->pollUrl, last);
-
- char *inputFilename = NULL;
- celix_status_t status = deploymentAdmin_download(admin ,request, &inputFilename);
- if (status == CELIX_SUCCESS) {
- bundle_pt bundle = NULL;
- bundleContext_getBundle(admin->context, &bundle);
- char *entry = NULL;
- bundle_getEntry(bundle, "/", &entry);
-
- // Handle file
- char tmpDir[256];
- char uuid[37];
- uuid_t uid;
- uuid_generate(uid);
- uuid_unparse(uid, uuid);
- snprintf(tmpDir, 256, "%s%s", entry, uuid);
- if( mkdir(tmpDir, S_IRWXU) == -1){
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Failed creating directory %s",tmpDir);
- }
-
- // TODO: update to use bundle cache DataFile instead of module entries.
- unzip_extractDeploymentPackage(inputFilename, tmpDir);
- int length = strlen(tmpDir) + 22;
- char manifest[length];
- snprintf(manifest, length, "%s/META-INF/MANIFEST.MF", tmpDir);
- manifest_pt mf = NULL;
- manifest_createFromFile(manifest, &mf);
- deployment_package_pt source = NULL;
- deploymentPackage_create(admin->context, mf, &source);
- const char *name = NULL;
- deploymentPackage_getName(source, &name);
-
- int repoDirLength = strlen(entry) + 5;
- char repoDir[repoDirLength];
- snprintf(repoDir, repoDirLength, "%srepo", entry);
- if( mkdir(repoDir, S_IRWXU) == -1){
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Failed creating directory %s",repoDir);
- }
-
- int repoCacheLength = strlen(entry) + strlen(name) + 6;
- char repoCache[repoCacheLength];
- snprintf(repoCache, repoCacheLength, "%srepo/%s", entry, name);
- deploymentAdmin_deleteTree(repoCache);
- int stat = rename(tmpDir, repoCache);
- if (stat != 0) {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "No success");
- }
-
- deployment_package_pt target = hashMap_get(admin->packages, name);
- if (target == NULL) {
-// target = empty package
- }
-
- deploymentAdmin_stopDeploymentPackageBundles(admin, target);
- deploymentAdmin_updateDeploymentPackageBundles(admin, source);
- deploymentAdmin_startDeploymentPackageCustomizerBundles(admin, source, target);
- deploymentAdmin_processDeploymentPackageResources(admin, source);
- deploymentAdmin_dropDeploymentPackageResources(admin, source, target);
- deploymentAdmin_dropDeploymentPackageBundles(admin, source, target);
- deploymentAdmin_startDeploymentPackageBundles(admin, source);
-
- deploymentAdmin_deleteTree(repoCache);
- deploymentAdmin_deleteTree(tmpDir);
- if( remove(inputFilename) == -1){
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Remove of %s failed",inputFilename);
- }
- admin->current = strdup(last);
- hashMap_put(admin->packages, (char*)name, source);
-
- free(entry);
- }
- if (inputFilename != NULL) {
- free(inputFilename);
- }
- }
- }
-
- sleep(5);
-
- for (i = arrayList_size(versions); i > 0; --i) {
- free(arrayList_remove(versions, 0));
- }
-
- arrayList_destroy(versions);
- }
-
- return NULL;
-}
-
-struct MemoryStruct {
- char *memory;
- size_t size;
-};
-
-size_t deploymentAdmin_parseVersions(void *contents, size_t size, size_t nmemb, void *userp) {
- size_t realsize = size * nmemb;
- struct MemoryStruct *mem = (struct MemoryStruct *)userp;
-
- mem->memory = realloc(mem->memory, mem->size + realsize + 1);
- if (mem->memory == NULL) {
- /* out of memory! */
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "not enough memory (realloc returned NULL)");
- exit(EXIT_FAILURE);
- }
-
- memcpy(&(mem->memory[mem->size]), contents, realsize);
- mem->size += realsize;
- mem->memory[mem->size] = 0;
-
- return realsize;
-}
-
-celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_list_pt versions) {
- celix_status_t status = CELIX_SUCCESS;
-
- CURL *curl;
- CURLcode res;
- curl = curl_easy_init();
- struct MemoryStruct chunk;
- chunk.memory = calloc(1, sizeof(char));
- chunk.size = 0;
- if (curl) {
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_URL, admin->pollUrl);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, deploymentAdmin_parseVersions);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &chunk);
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
- res = curl_easy_perform(curl);
- if (res != CURLE_OK) {
- status = CELIX_BUNDLE_EXCEPTION;
- }
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- char *last;
- char *token = strtok_r(chunk.memory, "\n", &last);
- while (token != NULL) {
- arrayList_add(versions, strdup(token));
- token = strtok_r(NULL, "\n", &last);
- }
- }
-
- if (chunk.memory) {
- free(chunk.memory);
- }
-
- return status;
-}
-
-
-celix_status_t deploymentAdmin_download(deployment_admin_pt admin, char * url, char **inputFile) {
- celix_status_t status = CELIX_SUCCESS;
- CURL *curl = NULL;
- CURLcode res = 0;
- curl = curl_easy_init();
- if (curl) {
- const char *dir = NULL;
- bundleContext_getProperty(admin->context, DEPLOYMENT_CACHE_DIR, &dir);
- if (dir != NULL) {
- *inputFile = calloc(1024, sizeof (char));
- snprintf(*inputFile, 1024, "%s/%s", dir, "updateXXXXXX");
- }
- else {
- *inputFile = strdup("updateXXXXXX");
- }
- umask(0011);
- int fd = mkstemp(*inputFile);
- if (fd != -1) {
- FILE *fp = fopen(*inputFile, "wb+");
- if(fp!=NULL){
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_URL, url);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, deploymentAdmin_writeData);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
- //curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
- //curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, updateCommand_downloadProgress);
- res = curl_easy_perform(curl);
-
- /* always cleanup */
- curl_easy_cleanup(curl);
- fclose(fp);
- }
- else{
- status = CELIX_FILE_IO_EXCEPTION;
- }
- }
- else{
- status = CELIX_FILE_IO_EXCEPTION;
- }
- }
- else{
- res = CURLE_FAILED_INIT;
- }
-
- if (res != CURLE_OK) {
- *inputFile[0] = '\0';
- status = CELIX_ILLEGAL_STATE;
- }
-
- return status;
-}
-
-size_t deploymentAdmin_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream) {
- size_t written = fwrite(ptr, size, nmemb, stream);
- return written;
-}
-
-
-static celix_status_t deploymentAdmin_deleteTree(char * directory) {
- DIR *dir;
- celix_status_t status = CELIX_SUCCESS;
- dir = opendir(directory);
- if (dir == NULL) {
- status = CELIX_FILE_IO_EXCEPTION;
- } else {
-
- struct dirent* dent = NULL;
-
- errno = 0;
- dent = readdir(dir);
- while (errno == 0 && dent != NULL) {
- if ((strcmp((dent->d_name), ".") != 0) && (strcmp((dent->d_name), "..") != 0)) {
- char subdir[512];
- snprintf(subdir, sizeof(subdir), "%s/%s", directory, dent->d_name);
-
- if (dent->d_type == DT_DIR) {
- status = deploymentAdmin_deleteTree(subdir);
- } else {
- if (remove(subdir) != 0) {
- status = CELIX_FILE_IO_EXCEPTION;
- break;
- }
- }
- }
-
- errno = 0;
- dent = readdir(dir);
- }
-
- if (errno != 0) {
- status = CELIX_FILE_IO_EXCEPTION;
- } else if (closedir(dir) != 0) {
- status = CELIX_FILE_IO_EXCEPTION;
- } else if (rmdir(directory) != 0) {
- status = CELIX_FILE_IO_EXCEPTION;
- }
- }
-
- framework_logIfError(logger, status, NULL, "Failed to delete tree");
-
- return status;
-}
-
-celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt target) {
- celix_status_t status = CELIX_SUCCESS;
-
- if (target != NULL) {
- array_list_pt infos = NULL;
- deploymentPackage_getBundleInfos(target, &infos);
- int i;
- for (i = 0; i < arrayList_size(infos); i++) {
- bundle_pt bundle = NULL;
- bundle_info_pt info = arrayList_get(infos, i);
- deploymentPackage_getBundle(target, info->symbolicName, &bundle);
- if (bundle != NULL) {
- bundle_stop(bundle);
- } else {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "DEPLOYMENT_ADMIN: Bundle %s not found", info->symbolicName);
- }
- }
- arrayList_destroy(infos);
- }
-
- return status;
-}
-
-celix_status_t deploymentAdmin_updateDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source) {
- celix_status_t status = CELIX_SUCCESS;
-
- array_list_pt infos = NULL;
- deploymentPackage_getBundleInfos(source, &infos);
- int i;
- for (i = 0; i < arrayList_size(infos); i++) {
- bundle_pt bundle = NULL;
- bundle_info_pt info = arrayList_get(infos, i);
-
- bundleContext_getBundle(admin->context, &bundle);
- char *entry = NULL;
- bundle_getEntry(bundle, "/", &entry);
- const char *name = NULL;
- deploymentPackage_getName(source, &name);
-
- int bundlePathLength = strlen(entry) + strlen(name) + strlen(info->path) + 7;
- int bsnLength = strlen(info->symbolicName) + 9;
-
- char bundlePath[bundlePathLength];
- snprintf(bundlePath, bundlePathLength, "%srepo/%s/%s", entry, name, info->path);
-
- char bsn[bsnLength];
- snprintf(bsn, bsnLength, "osgi-dp:%s", info->symbolicName);
-
- bundle_pt updateBundle = NULL;
- deploymentPackage_getBundle(source, info->symbolicName, &updateBundle);
- if (updateBundle != NULL) {
- //printf("Update bundle from: %s\n", bundlePath);
- bundle_update(updateBundle, bundlePath);
- } else {
- //printf("Install bundle from: %s\n", bundlePath);
- bundleContext_installBundle2(admin->context, bsn, bundlePath, &updateBundle);
- }
-
- free(entry);
- }
- arrayList_destroy(infos);
- return status;
-}
-
-celix_status_t deploymentAdmin_startDeploymentPackageCustomizerBundles(deployment_admin_pt admin, deployment_package_pt source, deployment_package_pt target) {
- celix_status_t status = CELIX_SUCCESS;
-
- array_list_pt bundles = NULL;
- array_list_pt sourceInfos = NULL;
-
- arrayList_create(&bundles);
-
- deploymentPackage_getBundleInfos(source, &sourceInfos);
- int i;
- for (i = 0; i < arrayList_size(sourceInfos); i++) {
- bundle_info_pt sourceInfo = arrayList_get(sourceInfos, i);
- if (sourceInfo->customizer) {
- bundle_pt bundle = NULL;
- deploymentPackage_getBundle(source, sourceInfo->symbolicName, &bundle);
- if (bundle != NULL) {
- arrayList_add(bundles, bundle);
- }
- }
- }
- arrayList_destroy(sourceInfos);
-
- if (target != NULL) {
- array_list_pt targetInfos = NULL;
- deploymentPackage_getBundleInfos(target, &targetInfos);
- for (i = 0; i < arrayList_size(targetInfos); i++) {
- bundle_info_pt targetInfo = arrayList_get(targetInfos, i);
- if (targetInfo->customizer) {
- bundle_pt bundle = NULL;
- deploymentPackage_getBundle(target, targetInfo->symbolicName, &bundle);
- if (bundle != NULL) {
- arrayList_add(bundles, bundle);
- }
- }
- }
- arrayList_destroy(targetInfos);
- }
-
- for (i = 0; i < arrayList_size(bundles); i++) {
- bundle_pt bundle = arrayList_get(bundles, i);
- bundle_start(bundle);
- }
-
- arrayList_destroy(bundles);
-
- return status;
-}
-
-celix_status_t deploymentAdmin_processDeploymentPackageResources(deployment_admin_pt admin, deployment_package_pt source) {
- celix_status_t status = CELIX_SUCCESS;
-
- array_list_pt infos = NULL;
- deploymentPackage_getResourceInfos(source, &infos);
- int i;
- for (i = 0; i < arrayList_size(infos); i++) {
- resource_info_pt info = arrayList_get(infos, i);
- array_list_pt services = NULL;
- int length = strlen(OSGI_FRAMEWORK_SERVICE_PID) + strlen(info->resourceProcessor) + 4;
- char filter[length];
-
- snprintf(filter, length, "(%s=%s)", OSGI_FRAMEWORK_SERVICE_PID, info->resourceProcessor);
-
- status = bundleContext_getServiceReferences(admin->context, DEPLOYMENTADMIN_RESOURCE_PROCESSOR_SERVICE, filter, &services);
- if (status == CELIX_SUCCESS) {
- if (services != NULL && arrayList_size(services) > 0) {
- service_reference_pt ref = arrayList_get(services, 0);
- // In Felix a check is done to assure the processor belongs to the deployment package
- // Is this according to spec?
- void *processorP = NULL;
- status = bundleContext_getService(admin->context, ref, &processorP);
- if (status == CELIX_SUCCESS) {
- bundle_pt bundle = NULL;
- char *entry = NULL;
- const char *name = NULL;
- const char *packageName = NULL;
- resource_processor_service_pt processor = processorP;
-
- bundleContext_getBundle(admin->context, &bundle);
- bundle_getEntry(bundle, "/", &entry);
- deploymentPackage_getName(source, &name);
-
- int length = strlen(entry) + strlen(name) + strlen(info->path) + 7;
- char resourcePath[length];
- snprintf(resourcePath, length, "%srepo/%s/%s", entry, name, info->path);
- deploymentPackage_getName(source, &packageName);
-
- processor->begin(processor->processor, (char*)packageName);
- processor->process(processor->processor, info->path, resourcePath);
-
- free(entry);
- }
- }
- }
-
- if(services != NULL) {
- arrayList_destroy(services);
- }
- }
-
- arrayList_destroy(infos);
-
-
- return status;
-}
-
-celix_status_t deploymentAdmin_dropDeploymentPackageResources(deployment_admin_pt admin, deployment_package_pt source, deployment_package_pt target) {
- celix_status_t status = CELIX_SUCCESS;
-
- if (target != NULL) {
- array_list_pt infos = NULL;
- deploymentPackage_getResourceInfos(target, &infos);
- int i;
- for (i = 0; i < arrayList_size(infos); i++) {
- resource_info_pt info = arrayList_get(infos, i);
- resource_info_pt sourceInfo = NULL;
- deploymentPackage_getResourceInfoByPath(source, info->path, &sourceInfo);
- if (sourceInfo == NULL) {
- array_list_pt services = NULL;
- int length = strlen(OSGI_FRAMEWORK_SERVICE_PID) + strlen(info->resourceProcessor) + 4;
- char filter[length];
-
- snprintf(filter, length, "(%s=%s)", OSGI_FRAMEWORK_SERVICE_PID, info->resourceProcessor);
- status = bundleContext_getServiceReferences(admin->context, DEPLOYMENTADMIN_RESOURCE_PROCESSOR_SERVICE, filter, &services);
- if (status == CELIX_SUCCESS) {
- if (services != NULL && arrayList_size(services) > 0) {
- service_reference_pt ref = arrayList_get(services, 0);
- // In Felix a check is done to assure the processor belongs to the deployment package
- // Is this according to spec?
- void *processorP = NULL;
- status = bundleContext_getService(admin->context, ref, &processorP);
- if (status == CELIX_SUCCESS) {
- const char *packageName = NULL;
- resource_processor_service_pt processor = processorP;
-
- deploymentPackage_getName(source, &packageName);
- processor->begin(processor->processor, (char*)packageName);
- processor->dropped(processor->processor, info->path);
- }
- }
- }
-
- if (services != NULL) {
- arrayList_destroy(services);
- }
-
- }
- }
-
- arrayList_destroy(infos);
- }
-
- return status;
-}
-
-celix_status_t deploymentAdmin_dropDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source, deployment_package_pt target) {
- celix_status_t status = CELIX_SUCCESS;
-
- if (target != NULL) {
- array_list_pt targetInfos = NULL;
- deploymentPackage_getBundleInfos(target, &targetInfos);
- int i;
- for (i = 0; i < arrayList_size(targetInfos); i++) {
- bundle_info_pt targetInfo = arrayList_get(targetInfos, i);
- if (!targetInfo->customizer) {
- bundle_info_pt info = NULL;
- deploymentPackage_getBundleInfoByName(source, targetInfo->symbolicName, &info);
- if (info == NULL) {
- bundle_pt bundle = NULL;
- deploymentPackage_getBundle(target, targetInfo->symbolicName, &bundle);
- bundle_uninstall(bundle);
- }
- }
- }
- arrayList_destroy(targetInfos);
- }
-
- return status;
-}
-
-celix_status_t deploymentAdmin_startDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source) {
- celix_status_t status = CELIX_SUCCESS;
-
- array_list_pt infos = NULL;
- deploymentPackage_getBundleInfos(source, &infos);
- int i;
- for (i = 0; i < arrayList_size(infos); i++) {
- bundle_pt bundle = NULL;
- bundle_info_pt info = arrayList_get(infos, i);
- if (!info->customizer) {
- deploymentPackage_getBundle(source, info->symbolicName, &bundle);
- if (bundle != NULL) {
- bundle_start(bundle);
- } else {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "DEPLOYMENT_ADMIN: Could not start bundle %s", info->symbolicName);
- }
- }
- }
- arrayList_destroy(infos);
-
- return status;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/deployment_admin_activator.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_admin_activator.c b/deployment_admin/private/src/deployment_admin_activator.c
deleted file mode 100644
index 93fd6b5..0000000
--- a/deployment_admin/private/src/deployment_admin_activator.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * deployment_admin_activator.c
- *
- * \date Nov 7, 2011
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-
-#include "bundle_activator.h"
-#include "deployment_admin.h"
-
-struct bundle_activator {
- deployment_admin_pt admin;
-};
-
-typedef struct bundle_activator* bundle_activator_pt;
-
-celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
- celix_status_t status = CELIX_SUCCESS;
-
- bundle_activator_pt activator = NULL;
-
- activator = calloc(1, sizeof(*activator));
- if (!activator) {
- status = CELIX_ENOMEM;
- } else {
- status = deploymentAdmin_create(context, &activator->admin);
-
- *userData = activator;
- }
-
- return status;
-}
-
-celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) {
- celix_status_t status = CELIX_SUCCESS;
-
- return status;
-}
-
-celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
- celix_status_t status = CELIX_SUCCESS;
-
- return status;
-}
-
-celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
- celix_status_t status;
-
- bundle_activator_pt activator = (bundle_activator_pt) userData;
-
- status = deploymentAdmin_destroy(activator->admin);
-
- free(activator);
-
- return status;
-}
-
-
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/deployment_package.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_package.c b/deployment_admin/private/src/deployment_package.c
deleted file mode 100644
index 1520db8..0000000
--- a/deployment_admin/private/src/deployment_package.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * deployment_package.c
- *
- * \date Nov 8, 2011
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <string.h>
-
-#include "celix_errno.h"
-
-#include "deployment_package.h"
-#include "constants.h"
-#include "utils.h"
-#include "bundle_context.h"
-#include "module.h"
-#include "bundle.h"
-
-static const char * const RESOURCE_PROCESSOR = "Resource-Processor";
-static const char * const DEPLOYMENTPACKAGE_CUSTOMIZER = "DeploymentPackage-Customizer";
-
-celix_status_t deploymentPackage_processEntries(deployment_package_pt package);
-static celix_status_t deploymentPackage_isBundleResource(properties_pt attributes, bool *isBundleResource);
-static celix_status_t deploymentPackage_parseBooleanHeader(const char *value, bool *boolValue);
-
-celix_status_t deploymentPackage_create(bundle_context_pt context, manifest_pt manifest, deployment_package_pt *package) {
- celix_status_t status = CELIX_SUCCESS;
-
- *package = calloc(1, sizeof(**package));
- if (!(*package)) {
- status = CELIX_ENOMEM;
- } else {
- (*package)->context = context;
- (*package)->manifest = manifest;
- (*package)->bundleInfos = NULL;
- (*package)->resourceInfos = NULL;
- (*package)->nameToBundleInfo = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
- (*package)->pathToEntry = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
- status = arrayList_create(&(*package)->bundleInfos);
- if (status == CELIX_SUCCESS) {
- status = arrayList_create(&(*package)->resourceInfos);
- if (status == CELIX_SUCCESS) {
- status = deploymentPackage_processEntries(*package);
- if (status == CELIX_SUCCESS) {
- int i;
- for (i = 0; i < arrayList_size((*package)->bundleInfos); i++) {
- bundle_info_pt info = arrayList_get((*package)->bundleInfos, i);
- hashMap_put((*package)->nameToBundleInfo, info->symbolicName, info);
- }
- for (i = 0; i < arrayList_size((*package)->resourceInfos); i++) {
- resource_info_pt info = arrayList_get((*package)->resourceInfos, i);
- hashMap_put((*package)->pathToEntry, info->path, info);
- }
- }
- }
- }
- }
-
- return status;
-}
-
-celix_status_t deploymentPackage_destroy(deployment_package_pt package) {
- celix_status_t status = CELIX_SUCCESS;
- int i;
-
-
- manifest_destroy(package->manifest);
-
- hashMap_destroy(package->nameToBundleInfo, false, false);
- hashMap_destroy(package->pathToEntry, false, false);
-
-
- for(i = arrayList_size(package->bundleInfos); i > 0; --i) {
- free(arrayList_remove(package->bundleInfos, 0));
- }
-
- arrayList_destroy(package->bundleInfos);
-
- for (i = arrayList_size(package->resourceInfos); i > 0; --i) {
- free(arrayList_remove(package->resourceInfos, 0));
- }
-
-
- arrayList_destroy(package->resourceInfos);
-
- free(package);
-
- return status;
-}
-
-celix_status_t deploymentPackage_getName(deployment_package_pt package, const char **name) {
- *name = manifest_getValue(package->manifest, "DeploymentPackage-SymbolicName");
- return CELIX_SUCCESS;
-}
-
-celix_status_t deploymentPackage_getBundleInfos(deployment_package_pt package, array_list_pt *infos) {
- *infos = arrayList_clone(package->bundleInfos);
- return CELIX_SUCCESS;
-}
-
-celix_status_t deploymentPackage_getBundleInfoByName(deployment_package_pt package, const char *name, bundle_info_pt *info) {
- *info = hashMap_get(package->nameToBundleInfo, name);
- return CELIX_SUCCESS;
-}
-
-celix_status_t deploymentPackage_getBundle(deployment_package_pt package, const char *name, bundle_pt *bundle) {
- if (hashMap_containsKey(package->nameToBundleInfo, name)) {
- array_list_pt bundles = NULL;
- bundleContext_getBundles(package->context, &bundles);
- int i;
- for (i = 0; i < arrayList_size(bundles); i++) {
- bundle_pt ibundle = arrayList_get(bundles, i);
- module_pt module = NULL;
- bundle_getCurrentModule(ibundle, &module);
- const char *bsn = NULL;
- module_getSymbolicName(module, &bsn);
- if (strcmp(bsn, name) == 0) {
- *bundle = ibundle;
- break;
- }
- }
-
- arrayList_destroy(bundles);
- }
-
- return CELIX_SUCCESS;
-}
-
-celix_status_t deploymentPackage_getResourceInfos(deployment_package_pt package, array_list_pt *infos) {
- *infos = arrayList_clone(package->resourceInfos);
- return CELIX_SUCCESS;
-}
-
-celix_status_t deploymentPackage_getResourceInfoByPath(deployment_package_pt package, const char *path, resource_info_pt *info) {
- *info = hashMap_get(package->pathToEntry, path);
- return CELIX_SUCCESS;
-}
-
-celix_status_t deploymentPackage_getVersion(deployment_package_pt package, version_pt *version) {
- const char *versionStr = manifest_getValue(package->manifest, "DeploymentPackage-Version");
- return version_createVersionFromString(versionStr, version);
-}
-
-celix_status_t deploymentPackage_processEntries(deployment_package_pt package) {
- celix_status_t status = CELIX_SUCCESS;
-
- hash_map_pt entries = NULL;
- manifest_getEntries(package->manifest, &entries);
- hash_map_iterator_pt iter = hashMapIterator_create(entries);
- while (hashMapIterator_hasNext(iter)) {
- hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
- char *name = hashMapEntry_getKey(entry);
- properties_pt values = hashMapEntry_getValue(entry);
-
- bool isBundleResource;
- deploymentPackage_isBundleResource(values, &isBundleResource);
- if (isBundleResource) {
- bundle_info_pt info = calloc(1, sizeof(*info));
- info->path = name;
- info->attributes = values;
- info->symbolicName = (char*)properties_get(values, OSGI_FRAMEWORK_BUNDLE_SYMBOLICNAME);
- const char *version = properties_get(values, OSGI_FRAMEWORK_BUNDLE_VERSION);
- info->version = NULL;
- status = version_createVersionFromString((char*)version, &info->version);
- const char *customizer = properties_get(values, DEPLOYMENTPACKAGE_CUSTOMIZER);
- deploymentPackage_parseBooleanHeader((char*)customizer, &info->customizer);
-
- arrayList_add(package->bundleInfos, info);
- } else {
- resource_info_pt info = calloc(1, sizeof(*info));
- info->path = name;
- info->attributes = values;
- info->resourceProcessor = (char*)properties_get(values,RESOURCE_PROCESSOR);
-
- arrayList_add(package->resourceInfos, info);
- }
- }
- hashMapIterator_destroy(iter);
-
- return status;
-}
-
-static celix_status_t deploymentPackage_isBundleResource(properties_pt attributes, bool *isBundleResource) {
- *isBundleResource = properties_get(attributes, (char *) OSGI_FRAMEWORK_BUNDLE_SYMBOLICNAME) != NULL;
- return CELIX_SUCCESS;
-}
-
-static celix_status_t deploymentPackage_parseBooleanHeader(const char *value, bool *boolValue) {
- *boolValue = false;
- if (value != NULL) {
- if (strcmp(value, "true") == 0) {
- *boolValue = true;
- } else {
- *boolValue = false;
- }
- }
- return CELIX_SUCCESS;
-}
-
-
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/ioapi.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/ioapi.c b/deployment_admin/private/src/ioapi.c
deleted file mode 100644
index 49958f6..0000000
--- a/deployment_admin/private/src/ioapi.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* ioapi.h -- IO base function header for compress/uncompress .zip
- part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
-
- Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
-
- Modifications for Zip64 support
- Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
-
- For more info read MiniZip_info.txt
-
-*/
-
-#if (defined(_WIN32))
- #define _CRT_SECURE_NO_WARNINGS
-#endif
-
-#include "ioapi.h"
-
-voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
-{
- if (pfilefunc->zfile_func64.zopen64_file != NULL)
- return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
- else
- {
- return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode);
- }
-}
-
-long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
-{
- if (pfilefunc->zfile_func64.zseek64_file != NULL)
- return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
- else
- {
- uLong offsetTruncated = (uLong)offset;
- if (offsetTruncated != offset)
- return -1;
- else
- return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
- }
-}
-
-ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
-{
- if (pfilefunc->zfile_func64.zseek64_file != NULL)
- return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
- else
- {
- uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
- if ((tell_uLong) == ((uLong)-1))
- return (ZPOS64_T)-1;
- else
- return tell_uLong;
- }
-}
-
-void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
-{
- p_filefunc64_32->zfile_func64.zopen64_file = NULL;
- p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
- p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
- p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
- p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
- p_filefunc64_32->zfile_func64.ztell64_file = NULL;
- p_filefunc64_32->zfile_func64.zseek64_file = NULL;
- p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file;
- p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
- p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
- p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
- p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
-}
-
-
-
-static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
-static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
-static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
-static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
-static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
-
-static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
-{
- FILE* file = NULL;
- const char* mode_fopen = NULL;
- if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
- mode_fopen = "rb";
- else
- if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
- mode_fopen = "r+b";
- else
- if (mode & ZLIB_FILEFUNC_MODE_CREATE)
- mode_fopen = "wb";
-
- if ((filename!=NULL) && (mode_fopen != NULL))
- file = fopen(filename, mode_fopen);
- return file;
-}
-
-static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
-{
- FILE* file = NULL;
- const char* mode_fopen = NULL;
- if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
- mode_fopen = "rb";
- else
- if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
- mode_fopen = "r+b";
- else
- if (mode & ZLIB_FILEFUNC_MODE_CREATE)
- mode_fopen = "wb";
-
- if ((filename!=NULL) && (mode_fopen != NULL))
- file = fopen64((const char*)filename, mode_fopen);
- return file;
-}
-
-
-static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
-{
- uLong ret;
- ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
- return ret;
-}
-
-static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
-{
- uLong ret;
- ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
- return ret;
-}
-
-static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
-{
- long ret;
- ret = ftell((FILE *)stream);
- return ret;
-}
-
-
-static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
-{
- ZPOS64_T ret;
- ret = ftello64((FILE *)stream);
- return ret;
-}
-
-static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin)
-{
- int fseek_origin=0;
- long ret;
- switch (origin)
- {
- case ZLIB_FILEFUNC_SEEK_CUR :
- fseek_origin = SEEK_CUR;
- break;
- case ZLIB_FILEFUNC_SEEK_END :
- fseek_origin = SEEK_END;
- break;
- case ZLIB_FILEFUNC_SEEK_SET :
- fseek_origin = SEEK_SET;
- break;
- default: return -1;
- }
- ret = 0;
- if (fseek((FILE *)stream, offset, fseek_origin) != 0)
- ret = -1;
- return ret;
-}
-
-static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
-{
- int fseek_origin=0;
- long ret;
- switch (origin)
- {
- case ZLIB_FILEFUNC_SEEK_CUR :
- fseek_origin = SEEK_CUR;
- break;
- case ZLIB_FILEFUNC_SEEK_END :
- fseek_origin = SEEK_END;
- break;
- case ZLIB_FILEFUNC_SEEK_SET :
- fseek_origin = SEEK_SET;
- break;
- default: return -1;
- }
- ret = 0;
-
- if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
- ret = -1;
-
- return ret;
-}
-
-
-static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
-{
- int ret;
- ret = fclose((FILE *)stream);
- return ret;
-}
-
-static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
-{
- int ret;
- ret = ferror((FILE *)stream);
- return ret;
-}
-
-void fill_fopen_filefunc (pzlib_filefunc_def)
- zlib_filefunc_def* pzlib_filefunc_def;
-{
- pzlib_filefunc_def->zopen_file = fopen_file_func;
- pzlib_filefunc_def->zread_file = fread_file_func;
- pzlib_filefunc_def->zwrite_file = fwrite_file_func;
- pzlib_filefunc_def->ztell_file = ftell_file_func;
- pzlib_filefunc_def->zseek_file = fseek_file_func;
- pzlib_filefunc_def->zclose_file = fclose_file_func;
- pzlib_filefunc_def->zerror_file = ferror_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
-
-void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
-{
- pzlib_filefunc_def->zopen64_file = fopen64_file_func;
- pzlib_filefunc_def->zread_file = fread_file_func;
- pzlib_filefunc_def->zwrite_file = fwrite_file_func;
- pzlib_filefunc_def->ztell64_file = ftell64_file_func;
- pzlib_filefunc_def->zseek64_file = fseek64_file_func;
- pzlib_filefunc_def->zclose_file = fclose_file_func;
- pzlib_filefunc_def->zerror_file = ferror_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/log.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/log.c b/deployment_admin/private/src/log.c
deleted file mode 100644
index 98e757d..0000000
--- a/deployment_admin/private/src/log.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * log.c
- *
- * \date Apr 19, 2012
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-
-#include <stddef.h>
-#include <stdlib.h>
-
-#include "celix_errno.h"
-
-#include "log.h"
-#include "log_store.h"
-
-struct log {
- log_store_pt logStore;
-};
-
-celix_status_t log_create(log_store_pt store, log_pt *log) {
- celix_status_t status = CELIX_SUCCESS;
-
- *log = calloc(1, sizeof(**log));
- if (!*log) {
- status = CELIX_ENOMEM;
- } else {
- (*log)->logStore = store;
- }
-
- return status;
-}
-
-celix_status_t log_destroy(log_pt *log) {
- free(*log);
- return CELIX_SUCCESS;
-}
-
-celix_status_t log_log(log_pt log, unsigned int type, properties_pt properties) {
- celix_status_t status;
-
- log_event_pt event = NULL;
-
- status = logStore_put(log->logStore, type, properties, &event);
-
- return status;
-}
-
-celix_status_t log_bundleChanged(void * listener, bundle_event_pt event) {
- return CELIX_SUCCESS;
-}
-
-celix_status_t log_frameworkEvent(void * listener, framework_event_pt event) {
- return CELIX_SUCCESS;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/log_store.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/log_store.c b/deployment_admin/private/src/log_store.c
deleted file mode 100644
index c2bfabc..0000000
--- a/deployment_admin/private/src/log_store.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * log_store.c
- *
- * \date Apr 18, 2012
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-
-#include <time.h>
-
-#include "celix_errno.h"
-#include "array_list.h"
-
-#include "log_store.h"
-#include "log.h"
-
-struct log_store {
- unsigned long storeId;
-
- array_list_pt logEvents;
-};
-
-static celix_status_t logStore_getNextID(log_store_pt store, unsigned long *id);
-
-celix_status_t logStore_create(log_store_pt *store) {
- celix_status_t status = CELIX_SUCCESS;
- *store = calloc(1, sizeof(**store));
- if (!*store) {
- status = CELIX_ENOMEM;
- } else {
- (*store)->storeId = 1;
- arrayList_create(&(*store)->logEvents);
- }
-
- return status;
-}
-
-celix_status_t logStore_put(log_store_pt store, unsigned int type, properties_pt properties, log_event_pt *event) {
- celix_status_t status = CELIX_SUCCESS;
-
- *event = calloc(1, sizeof(**event));
- (*event)->targetId = NULL;
- (*event)->logId = store->storeId;
- (*event)->id = 0;
- (*event)->time = time(NULL);
- (*event)->type = type;
- (*event)->properties = properties;
-
- logStore_getNextID(store, &(*event)->id);
-
- arrayList_add(store->logEvents, *event);
-
- return status;
-}
-
-celix_status_t logStore_getLogId(log_store_pt store, unsigned long *id) {
- *id = store->storeId;
- return CELIX_SUCCESS;
-}
-
-celix_status_t logStore_getEvents(log_store_pt store, array_list_pt *events) {
- *events = store->logEvents;
- return CELIX_SUCCESS;
-}
-
-celix_status_t logStore_getHighestId(log_store_pt store, long *id) {
- *id = ((long) arrayList_size(store->logEvents)) - 1;
- return CELIX_SUCCESS;
-}
-
-static celix_status_t logStore_getNextID(log_store_pt store, unsigned long *id) {
- *id = arrayList_size(store->logEvents);
- return CELIX_SUCCESS;
-}
-
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/log_sync.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/log_sync.c b/deployment_admin/private/src/log_sync.c
deleted file mode 100644
index 242beea..0000000
--- a/deployment_admin/private/src/log_sync.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * log_sync.c
- *
- * \date Apr 19, 2012
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <curl/curl.h>
-#include <curl/easy.h>
-
-#include "celix_errno.h"
-#include "celix_log.h"
-#include "celixbool.h"
-
-#include "celix_threads.h"
-
-#include "log_sync.h"
-#include "log_event.h"
-
-struct log_sync {
- log_store_pt logStore;
-
- char *targetId;
- bool running;
-
- celix_thread_t syncTask;
-};
-
-struct log_descriptor {
- char *targetId;
- unsigned long logId;
- unsigned long low;
- unsigned long high;
-};
-
-typedef struct log_descriptor *log_descriptor_pt;
-
-celix_status_t logSync_queryLog(log_sync_pt logSync, char *targetId, long logId, char **queryReply);
-static size_t logSync_readQeury(void *contents, size_t size, size_t nmemb, void *userp);
-static void *logSync_synchronize(void *logSyncP);
-
-celix_status_t logSync_create(char *targetId, log_store_pt store, log_sync_pt *logSync) {
- celix_status_t status = CELIX_SUCCESS;
-
- *logSync = calloc(1, sizeof(**logSync));
- if (!*logSync) {
- status = CELIX_ENOMEM;
- } else {
- (*logSync)->logStore = store;
- (*logSync)->targetId = targetId;
- (*logSync)->syncTask = celix_thread_default;
- (*logSync)->running = true;
-
- celixThread_create(&(*logSync)->syncTask, NULL, logSync_synchronize, *logSync);
- }
-
- return status;
-}
-
-celix_status_t logSync_parseLogDescriptor(log_sync_pt logSync, char *descriptorString, log_descriptor_pt *descriptor) {
- celix_status_t status = CELIX_SUCCESS;
-
- fw_log(logger, OSGI_FRAMEWORK_LOG_DEBUG, "Descriptor: %s", descriptorString);
- char *last = NULL;
- char *targetId = strtok_r(descriptorString, ",", &last);
- char *logIdStr = strtok_r(NULL, ",", &last);
- long logId = 0;
- if (logIdStr != NULL) {
- logId = atol(logIdStr);
- }
- char *range = strtok_r(NULL, ",", &last);
- fw_log(logger, OSGI_FRAMEWORK_LOG_DEBUG, "Range: %s", range);
-
- long low = 0;
- long high = 0;
- if (range != NULL) {
- char *rangeToken = NULL;
- low = atol(strtok_r(range, "-", &rangeToken));
- high = atol(strtok_r(NULL, "-", &rangeToken));
- }
-
- *descriptor = calloc(1, sizeof(**descriptor));
- if (!*descriptor) {
- status = CELIX_ENOMEM;
- } else {
- (*descriptor)->targetId = targetId;
- (*descriptor)->logId = logId;
- (*descriptor)->low = low;
- (*descriptor)->high = high;
- }
-
- return status;
-}
-
-static void *logSync_synchronize(void *logSyncP) {
- log_sync_pt logSync = logSyncP;
-
- while (logSync->running) {
-
- //query current log
- // http://localhost:8080/auditlog/query?tid=targetid&logid=logid
- char *logDescriptorString = NULL;
- unsigned long id = 0;
- logStore_getLogId(logSync->logStore, &id);
- logSync_queryLog(logSync, logSync->targetId, id, &logDescriptorString);
- log_descriptor_pt descriptor = NULL;
- logSync_parseLogDescriptor(logSync, logDescriptorString, &descriptor);
-
- long highest = 0;
- logStore_getHighestId(logSync->logStore, &highest);
-
- if (highest >= 0) {
- int i;
- for (i = descriptor->high + 1; i <= highest; i++) {
- array_list_pt events = NULL;
- logStore_getEvents(logSync->logStore, &events);
- }
- }
-
- if(descriptor!=NULL){
- free(descriptor);
- }
-
- sleep(10);
- }
-
-
- celixThread_exit(NULL);
- return NULL;
-}
-
-struct MemoryStruct {
- char *memory;
- size_t size;
-};
-
-celix_status_t logSync_queryLog(log_sync_pt logSync, char *targetId, long logId, char **queryReply) {
- // http://localhost:8080/auditlog/query?tid=targetid&logid=logid
- celix_status_t status = CELIX_SUCCESS;
- int length = strlen(targetId) + 60;
- char query[length];
- snprintf(query, length, "http://localhost:8080/auditlog/query?tid=%s&logid=1", targetId);
-
- CURL *curl;
- CURLcode res;
- curl = curl_easy_init();
- struct MemoryStruct chunk;
- chunk.memory = calloc(1, sizeof(char));
- chunk.size = 0;
- if (curl) {
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_URL, query);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, logSync_readQeury);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &chunk);
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
- res = curl_easy_perform(curl);
- if (res != CURLE_OK) {
- status = CELIX_BUNDLE_EXCEPTION;
- }
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Error: %d", res);
- /* always cleanup */
- curl_easy_cleanup(curl);
-
- *queryReply = strdup(chunk.memory);
- }
-
- return status;
-}
-
-static size_t logSync_readQeury(void *contents, size_t size, size_t nmemb, void *userp) {
- size_t realsize = size * nmemb;
- struct MemoryStruct *mem = (struct MemoryStruct *)userp;
-
- mem->memory = realloc(mem->memory, mem->size + realsize + 1);
- if (mem->memory == NULL) {
- /* out of memory! */
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "not enough memory (realloc returned NULL)");
- exit(EXIT_FAILURE);
- }
-
- memcpy(&(mem->memory[mem->size]), contents, realsize);
- mem->size += realsize;
- mem->memory[mem->size] = 0;
-
- return realsize;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/deployment_admin/private/src/miniunz.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/miniunz.c b/deployment_admin/private/src/miniunz.c
deleted file mode 100644
index e543c3b..0000000
--- a/deployment_admin/private/src/miniunz.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/** License
- * ----------------------------------------------------------
- * Condition of use and distribution are the same than zlib :
- *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- * claim that you wrote the original software. If you use this software
- * in a product, an acknowledgment in the product documentation would be
- * appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- * misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- *
- * ----------------------------------------------------------
- */
-/*
- miniunz.c
- Version 1.1, February 14h, 2010
- sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
-
- Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
-
- Modifications of Unzip for Zip64
- Copyright (C) 2007-2008 Even Rouault
-
- Modifications for Zip64 support on both zip and unzip
- Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
-
- Changes made to the original source specific for Apache Celix:
- * Updated several parts to use output directory fitting Celix.
- * Removed several parts not needed (main function etc).
- * Added some checks for OSX/Apple
-*/
-
-#ifndef _WIN32
- #ifndef __USE_FILE_OFFSET64
- #define __USE_FILE_OFFSET64
- #endif
- #ifndef __USE_LARGEFILE64
- #define __USE_LARGEFILE64
- #endif
- #ifndef _LARGEFILE64_SOURCE
- #define _LARGEFILE64_SOURCE
- #endif
- #ifndef _FILE_OFFSET_BIT
- #define _FILE_OFFSET_BIT 64
- #endif
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-#include <fcntl.h>
-
-#include <unistd.h>
-#include <utime.h>
-#include <sys/stat.h>
-
-#include "unzip.h"
-#include "archive.h"
-
-#define CASESENSITIVITY (0)
-#define WRITEBUFFERSIZE (8192)
-#define MAXFILENAME (256)
-
-#ifdef _WIN32
-#define USEWIN32IOAPI
-#include "iowin32.h"
-#endif
-/*
- mini unzip, demo of unzip package
-
- usage :
- Usage : miniunz [-exvlo] file.zip [file_to_extract] [-d extractdir]
-
- list the file in the zipfile, and print the content of FILE_ID.ZIP or README.TXT
- if it exists
-*/
-
-
-/* change_file_date : change the date/time of a file
- filename : the filename of the file where date/time must be modified
- dosdate : the new date at the MSDos format (4 bytes)
- tmu_date : the SAME new date at the tm_unz format */
-void change_file_date(filename,dosdate,tmu_date)
- const char *filename;
- uLong dosdate;
- tm_unz tmu_date;
-{
-#ifdef _WIN32
- HANDLE hFile;
- FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite;
-
- hFile = CreateFileA(filename,GENERIC_READ | GENERIC_WRITE,
- 0,NULL,OPEN_EXISTING,0,NULL);
- GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite);
- DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal);
- LocalFileTimeToFileTime(&ftLocal,&ftm);
- SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
- CloseHandle(hFile);
-#else
-#if defined(unix) || defined(__APPLE__)
- struct utimbuf ut;
- struct tm newdate;
- newdate.tm_sec = tmu_date.tm_sec;
- newdate.tm_min=tmu_date.tm_min;
- newdate.tm_hour=tmu_date.tm_hour;
- newdate.tm_mday=tmu_date.tm_mday;
- newdate.tm_mon=tmu_date.tm_mon;
- if (tmu_date.tm_year > 1900)
- newdate.tm_year=tmu_date.tm_year - 1900;
- else
- newdate.tm_year=tmu_date.tm_year ;
- newdate.tm_isdst=-1;
-
- ut.actime=ut.modtime=mktime(&newdate);
- utime(filename,&ut);
-#endif
-#endif
-}
-
-
-/* mymkdir and change_file_date are not 100 % portable
- As I don't know well Unix, I wait feedback for the unix portion */
-
-int mymkdir(dirname)
- const char* dirname;
-{
- int ret=0;
-#ifdef _WIN32
- ret = _mkdir(dirname);
-#else
-#if defined unix || defined __APPLE__
- ret = mkdir(dirname,0775);
-#endif
-#endif
- return ret;
-}
-
-int makedir (newdir)
- char *newdir;
-{
- char *buffer ;
- char *p;
- int len = (int)strlen(newdir);
-
- if (len <= 0)
- return 0;
-
- buffer = (char*)malloc(len+1);
- if (buffer==NULL)
- {
- printf("Error allocating memory\n");
- return UNZ_INTERNALERROR;
- }
- strcpy(buffer,newdir);
-
- if (buffer[len-1] == '/') {
- buffer[len-1] = '\0';
- }
- if (mymkdir(buffer) == 0)
- {
- free(buffer);
- return 1;
- }
-
- p = buffer+1;
- while (1)
- {
- char hold;
-
- while(*p && *p != '\\' && *p != '/')
- p++;
- hold = *p;
- *p = 0;
- if ((mymkdir(buffer) == -1) && (errno == ENOENT))
- {
- printf("couldn't create directory %s\n",buffer);
- free(buffer);
- return 0;
- }
- if (hold == 0)
- break;
- *p++ = hold;
- }
- free(buffer);
- return 1;
-}
-
-int do_extract_currentfile(unzFile uf, char * revisionRoot) {
- char filename_inzip[256];
- char* filename_withoutpath;
- char* p;
- int err=UNZ_OK;
- FILE *fout=NULL;
- void* buf;
- uInt size_buf;
-
- unz_file_info64 file_info;
- err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0);
-
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzGetCurrentFileInfo\n",err);
- return err;
- }
-
- size_buf = WRITEBUFFERSIZE;
- buf = (void*)malloc(size_buf);
- if (buf==NULL)
- {
- printf("Error allocating memory\n");
- return UNZ_INTERNALERROR;
- }
-
- p = filename_withoutpath = filename_inzip;
- while ((*p) != '\0')
- {
- if (((*p)=='/') || ((*p)=='\\'))
- filename_withoutpath = p+1;
- p++;
- }
-
- if ((*filename_withoutpath)=='\0') {
- char dir[strlen(revisionRoot) + strlen(filename_inzip) + 2];
- strcpy(dir, revisionRoot);
- strcat(dir, "/");
- strcat(dir, filename_inzip);
- mymkdir(dir);
- }
- else
- {
- const char* write_filename;
- int skip=0;
- write_filename = filename_inzip;
-
- int length = strlen(write_filename) + strlen(revisionRoot) + 2;
- char fWFN[length];
- strcpy(fWFN, revisionRoot);
- strcat(fWFN, "/");
- strcat(fWFN, write_filename);
-
- err = unzOpenCurrentFile(uf);
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzOpenCurrentFilePassword\n",err);
- }
-
- if ((skip==0) && (err==UNZ_OK))
- {
- fout=fopen64(fWFN,"wb");
-
- /* some zipfile don't contain directory alone before file */
- if ((fout==NULL) && (filename_withoutpath!=(char*)filename_inzip))
- {
- char c=*(filename_withoutpath-1);
- *(filename_withoutpath-1)='\0';
- int length = strlen(write_filename) + strlen(revisionRoot) + 2;
- char dir[length];
- strcpy(dir, revisionRoot);
- strcat(dir, "/");
- strcat(dir, write_filename);
- makedir(dir);
- *(filename_withoutpath-1)=c;
-
- fout=fopen64(fWFN,"wb");
- }
-
- if (fout==NULL)
- {
- printf("error opening %s\n",write_filename);
- }
- }
-
- if (fout!=NULL)
- {
- do
- {
- err = unzReadCurrentFile(uf,buf,size_buf);
- if (err<0)
- {
- printf("error %d with zipfile in unzReadCurrentFile\n",err);
- break;
- }
- if (err>0)
- if (fwrite(buf,err,1,fout)!=1)
- {
- printf("error in writing extracted file\n");
- err=UNZ_ERRNO;
- break;
- }
- }
- while (err>0);
- if (fout)
- fclose(fout);
-
- if (err==0)
- change_file_date(fWFN,file_info.dosDate,
- file_info.tmu_date);
- }
-
- if (err==UNZ_OK)
- {
- err = unzCloseCurrentFile (uf);
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzCloseCurrentFile\n",err);
- }
- }
- else
- unzCloseCurrentFile(uf); /* don't lose the error */
- }
-
- free(buf);
- return err;
-}
-
-
-int do_extract(unzFile uf, char * revisionRoot) {
- uLong i;
- unz_global_info64 gi;
- int err;
-
- err = unzGetGlobalInfo64(uf,&gi);
- if (err!=UNZ_OK)
- printf("error %d with zipfile in unzGetGlobalInfo \n",err);
-
- for (i=0;i<gi.number_entry;i++)
- {
- if (do_extract_currentfile(uf, revisionRoot) != UNZ_OK)
- break;
-
- if ((i+1)<gi.number_entry)
- {
- err = unzGoToNextFile(uf);
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzGoToNextFile\n",err);
- break;
- }
- }
- }
-
- return 0;
-}
-
-celix_status_t unzip_extractDeploymentPackage(char * packageName, char * destination) {
- celix_status_t status = CELIX_SUCCESS;
- char filename_try[MAXFILENAME+16] = "";
- unzFile uf=NULL;
-
- if (packageName!=NULL)
- {
-
-# ifdef USEWIN32IOAPI
- zlib_filefunc64_def ffunc;
-# endif
-
- strncpy(filename_try, packageName,MAXFILENAME-1);
- /* strncpy doesnt append the trailing NULL, of the string is too long. */
- filename_try[ MAXFILENAME ] = '\0';
-
-# ifdef USEWIN32IOAPI
- fill_win32_filefunc64A(&ffunc);
- uf = unzOpen2_64(bundleName,&ffunc);
-# else
- uf = unzOpen64(packageName);
-# endif
- if (uf==NULL)
- {
- strcat(filename_try,".zip");
-# ifdef USEWIN32IOAPI
- uf = unzOpen2_64(filename_try,&ffunc);
-# else
- uf = unzOpen64(filename_try);
-# endif
- }
- }
-
- if (uf==NULL)
- {
- printf("Cannot open %s or %s.zip\n",packageName,packageName);
- status = CELIX_FILE_IO_EXCEPTION;
- } else {
- if (do_extract(uf, destination) != 0) {
- status = CELIX_FILE_IO_EXCEPTION;
- }
-
- unzClose(uf);
- }
-
- return status;
-}