X-Git-Url: https://develop.uap-core.de/gitweb/mizunara.git/blobdiff_plain/b0a25671970e6d8c7418ae07f5c2601ba56b413c..2f4baaacb05f4d69dac8d2888b8b8eb07606e67c:/mizucp/main.h diff --git a/mizucp/main.h b/mizucp/main.h index f30b12a..872b06f 100644 --- a/mizucp/main.h +++ b/mizucp/main.h @@ -1,29 +1,23 @@ /* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * Copyright 2021 Olaf Wintermann * - * Copyright 2021 Olaf Wintermann. All rights reserved. + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. */ #ifndef MAIN_H @@ -33,6 +27,8 @@ #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -44,21 +40,73 @@ extern "C" { #define CLIENT_MSG_BUFSIZE 512 +#define MAX_COPY_THREADS 32 + typedef char CPBool; +typedef struct SrcFile SrcFile; +typedef struct MZLock MZLock; +typedef struct MZQueue MZQueue; + typedef struct { char *from; char *to; + size_t num_threads; CPBool url; CPBool pause; CPBool printsocket; } CPSettings; +struct MZLock { + pthread_mutex_t mutex; + pthread_cond_t cond; +}; + +struct SrcFile { + /* + * src file path relative to CPSettings.from + */ + char *path; + + /* + * is the file a directory + */ + CPBool isdir; + + /* + * file successfully copied + */ + CPBool finished; + + /* + * processing this file depends on another file (directory) + */ + SrcFile *depends_on; + + /* + * lock used for waiting, until this resource is successfully copied + */ + MZLock *lock; +}; + +struct MZQueue { + SrcFile *file; + MZQueue *next; +}; + const char* mzcp_get_cfgdir(void); const char* mzcp_get_copydir(void); int mzcp_copy(CPSettings *settings); +int mzcp_start_scan(CPSettings *settings); +void* scan_run(void *data); + +int enqueue_file(SrcFile *file); + +int mzcp_start_copy_threads(CPSettings *settings); +void* copy_run(void *data); + #ifdef __cplusplus