From b5e7587b5352bc014577d569654c1092eb16f33d Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Mon, 18 Mar 2019 11:08:29 +0100
Subject: [PATCH] fix windows warnings

---
 CMakeLists.txt                                     |  1 +
 common/cpp/src/system_io/system_io.cpp             |  6 +++---
 producer/api/src/producer_impl.cpp                 |  2 +-
 producer/api/src/receiver_discovery_service.cpp    |  2 +-
 producer/api/src/request_handler_filesystem.cpp    |  2 +-
 producer/api/src/request_handler_tcp.cpp           |  2 +-
 .../unittests/test_request_handler_filesystem.cpp  |  8 ++++----
 .../api/unittests/test_request_handler_tcp.cpp     |  6 +++---
 .../event_monitor_producer/src/main_eventmon.cpp   |  2 +-
 receiver/src/request.cpp                           |  4 ++--
 receiver/src/request_handler_file_write.cpp        |  2 +-
 receiver/src/statistics.cpp                        |  2 +-
 worker/api/cpp/src/folder_data_broker.cpp          |  2 +-
 worker/api/cpp/src/tcp_client.cpp                  |  4 ++--
 worker/api/cpp/unittests/test_tcp_client.cpp       |  2 +-
 worker/api/python/setup.py.in                      | 14 +++++++++++---
 .../tools/folder_to_db/src/folder_db_importer.cpp  |  2 +-
 17 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 84426e951..84299a75a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,7 @@ IF(WIN32)
     set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
     set(CMAKE_CXX_FLAGS_RELEASE "/MT")
     add_definitions(-DWIN32)
+    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "GNU")
     SET( CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
 #todo: added fPIC to be able to create shared libs for Python - check it does not change performance
diff --git a/common/cpp/src/system_io/system_io.cpp b/common/cpp/src/system_io/system_io.cpp
index 89c829218..7dd9819da 100644
--- a/common/cpp/src/system_io/system_io.cpp
+++ b/common/cpp/src/system_io/system_io.cpp
@@ -72,7 +72,7 @@ std::unique_ptr<std::tuple<std::string, uint16_t>> SystemIO::SplitAddressToHostn
 uint8_t* AllocateArray(uint64_t fsize, Error* err) {
     uint8_t* data_array = nullptr;
     try {
-        data_array = new uint8_t[fsize];
+        data_array = new uint8_t[(size_t)fsize];
     } catch (...) {
         *err = ErrorTemplates::kMemoryAllocationError.Generate();
         return nullptr;
@@ -103,7 +103,7 @@ FileData SystemIO::GetDataFromFile(const std::string& fname, uint64_t* fsize, Er
         return nullptr;
     }
 
-    Read(fd, data_array, *fsize, err);
+    Read(fd, data_array, (size_t)*fsize, err);
     if (*err != nullptr) {
         (*err)->Append(fname);
         Close(fd, nullptr);
@@ -194,7 +194,7 @@ std::string SystemIO::ReadFileToString(const std::string& fname, Error* err) con
         return "";
     }
 
-    return std::string(reinterpret_cast<const char*>(data.get()), size);
+    return std::string(reinterpret_cast<const char*>(data.get()), (size_t)size);
 }
 
 std::unique_ptr<std::thread> SystemIO::NewThread(std::function<void()> function) const {
diff --git a/producer/api/src/producer_impl.cpp b/producer/api/src/producer_impl.cpp
index f86003f65..026e224f6 100644
--- a/producer/api/src/producer_impl.cpp
+++ b/producer/api/src/producer_impl.cpp
@@ -50,7 +50,7 @@ Error ProducerImpl::Send(const EventHeader& event_header,
                          FileData data,
                          std::string full_path,
                          RequestCallback callback) {
-    auto err = CheckProducerRequest(event_header.file_size, event_header.file_name.size());
+    auto err = CheckProducerRequest((size_t)event_header.file_size, event_header.file_name.size());
     if (err) {
         log__->Error("error checking request - " + err->Explain());
         return err;
diff --git a/producer/api/src/receiver_discovery_service.cpp b/producer/api/src/receiver_discovery_service.cpp
index ebf87761f..2f10a3152 100644
--- a/producer/api/src/receiver_discovery_service.cpp
+++ b/producer/api/src/receiver_discovery_service.cpp
@@ -100,7 +100,7 @@ ReceiversList ReceiverDiscoveryService::RotatedUriList(uint64_t nthread) {
     }
     ReceiversList list{uri_list_};
     lock.unlock();
-    auto shift = nthread % size;
+    auto shift = (int) nthread % size;
     std::rotate(list.begin(), list.begin() + shift, list.end());
     return list;
 }
diff --git a/producer/api/src/request_handler_filesystem.cpp b/producer/api/src/request_handler_filesystem.cpp
index dcd27a114..ac49aea6e 100644
--- a/producer/api/src/request_handler_filesystem.cpp
+++ b/producer/api/src/request_handler_filesystem.cpp
@@ -25,7 +25,7 @@ Error RequestHandlerFilesystem::ProcessRequestUnlocked(GenericRequest* request)
     }
 
     err = io__->WriteDataToFile(destination_folder_, request->header.message, (uint8_t*)producer_request->data.get(),
-                                request->header.data_size, true);
+                                (size_t)request->header.data_size, true);
     if (producer_request->callback) {
         producer_request->callback(request->header, std::move(err));
     }
diff --git a/producer/api/src/request_handler_tcp.cpp b/producer/api/src/request_handler_tcp.cpp
index e7cb40916..5d6cb9dc9 100644
--- a/producer/api/src/request_handler_tcp.cpp
+++ b/producer/api/src/request_handler_tcp.cpp
@@ -55,7 +55,7 @@ Error RequestHandlerTcp::SendHeaderAndData(const ProducerRequest* request) {
         return io_error;
     }
 
-    io__->Send(sd_, (void*) request->data.get(), request->header.data_size, &io_error);
+    io__->Send(sd_, (void*) request->data.get(), (size_t)request->header.data_size, &io_error);
     if(io_error) {
         return io_error;
     }
diff --git a/producer/api/unittests/test_request_handler_filesystem.cpp b/producer/api/unittests/test_request_handler_filesystem.cpp
index c3f69e5a4..f0093d4bb 100644
--- a/producer/api/unittests/test_request_handler_filesystem.cpp
+++ b/producer/api/unittests/test_request_handler_filesystem.cpp
@@ -90,7 +90,7 @@ MATCHER_P2(M_CheckSendDataRequest, file_id, file_size,
 }
 
 TEST_F(RequestHandlerFilesystemTests, CallBackErrorIfCannotSaveFile) {
-    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr, expected_file_size, true))
+    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr, (size_t)expected_file_size, true))
     .WillOnce(
         Return(
             asapo::IOErrorTemplates::kUnknownIOError.Generate().release())
@@ -105,7 +105,7 @@ TEST_F(RequestHandlerFilesystemTests, CallBackErrorIfCannotSaveFile) {
 }
 
 TEST_F(RequestHandlerFilesystemTests, WorksWithemptyCallback) {
-    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr, expected_file_size, true))
+    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr,(size_t) expected_file_size, true))
     .WillOnce(
         Return(nullptr)
     );
@@ -140,7 +140,7 @@ TEST_F(RequestHandlerFilesystemTests, FileRequestOK) {
             Return(nullptr)
         ));
 
-    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr, expected_file_size, true))
+    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr, (size_t)expected_file_size, true))
     .WillOnce(
         Return(nullptr)
     );
@@ -152,7 +152,7 @@ TEST_F(RequestHandlerFilesystemTests, FileRequestOK) {
 
 
 TEST_F(RequestHandlerFilesystemTests, TransferOK) {
-    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr, expected_file_size, true))
+    EXPECT_CALL(mock_io, WriteDataToFile_t(expected_destination, expected_file_name, nullptr,(size_t) expected_file_size, true))
     .WillOnce(
         Return(
             nullptr)
diff --git a/producer/api/unittests/test_request_handler_tcp.cpp b/producer/api/unittests/test_request_handler_tcp.cpp
index e8e18a2a1..3583c722a 100644
--- a/producer/api/unittests/test_request_handler_tcp.cpp
+++ b/producer/api/unittests/test_request_handler_tcp.cpp
@@ -247,7 +247,7 @@ void RequestHandlerTcpTests::ExpectFailSendHeader(bool only_once) {
 void RequestHandlerTcpTests::ExpectFailSendData(bool only_once) {
     int i = 0;
     for (auto expected_sd : expected_sds) {
-        EXPECT_CALL(mock_io, Send_t(expected_sd, nullptr, expected_file_size, _))
+        EXPECT_CALL(mock_io, Send_t(expected_sd, nullptr,(size_t) expected_file_size, _))
         .Times(1)
         .WillOnce(
             DoAll(
@@ -305,12 +305,12 @@ void RequestHandlerTcpTests::ExpectFailReceive(bool only_once) {
 
 void RequestHandlerTcpTests::ExpectOKSendData(bool only_once) {
     for (auto expected_sd : expected_sds) {
-        EXPECT_CALL(mock_io, Send_t(expected_sd, nullptr, expected_file_size, _))
+        EXPECT_CALL(mock_io, Send_t(expected_sd, nullptr,(size_t)expected_file_size, _))
         .Times(1)
         .WillOnce(
             DoAll(
                 testing::SetArgPointee<3>(nullptr),
-                Return(expected_file_size)
+                Return((size_t) expected_file_size)
             ));
         if (only_once) break;
     }
diff --git a/producer/event_monitor_producer/src/main_eventmon.cpp b/producer/event_monitor_producer/src/main_eventmon.cpp
index 4191bfbd4..e780754ad 100644
--- a/producer/event_monitor_producer/src/main_eventmon.cpp
+++ b/producer/event_monitor_producer/src/main_eventmon.cpp
@@ -38,7 +38,7 @@ std::unique_ptr<Producer> CreateProducer() {
 
 
     Error err;
-    auto producer = Producer::Create(config->asapo_endpoint, config->nthreads,
+    auto producer = Producer::Create(config->asapo_endpoint,(uint8_t) config->nthreads,
                                      config->mode, config->beamtime_id, &err);
     if(err) {
         std::cerr << "cannot create producer: " << err << std::endl;
diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp
index 7a857f2f6..9f22f81a2 100644
--- a/receiver/src/request.cpp
+++ b/receiver/src/request.cpp
@@ -13,7 +13,7 @@ Request::Request(const GenericRequestHeader& header,
 Error Request::PrepareDataBuffer() {
     if (cache__ == nullptr) {
         try {
-            data_buffer_.reset(new uint8_t[request_header_.data_size]);
+            data_buffer_.reset(new uint8_t[(size_t)request_header_.data_size]);
         } catch(std::exception& e) {
             auto err = ErrorTemplates::kMemoryAllocationError.Generate();
             err->Append(e.what());
@@ -36,7 +36,7 @@ Error Request::ReceiveData() {
     if (err) {
         return err;
     }
-    io__->Receive(socket_fd_, GetData(), request_header_.data_size, &err);
+    io__->Receive(socket_fd_, GetData(),(size_t) request_header_.data_size, &err);
     if (slot_meta_) {
         cache__->UnlockSlot(slot_meta_);
     }
diff --git a/receiver/src/request_handler_file_write.cpp b/receiver/src/request_handler_file_write.cpp
index dc074ca8c..4119f4f97 100644
--- a/receiver/src/request_handler_file_write.cpp
+++ b/receiver/src/request_handler_file_write.cpp
@@ -19,7 +19,7 @@ Error RequestHandlerFileWrite::ProcessRequest(Request* request) const {
     auto root_folder = GetReceiverConfig()->root_folder + kPathSeparator
                        + request->GetBeamline() + kPathSeparator
                        + request->GetBeamtimeId();
-    auto err =  io__->WriteDataToFile(root_folder, fname, (uint8_t*)data, fsize, true);
+    auto err =  io__->WriteDataToFile(root_folder, fname, (uint8_t*)data,(size_t) fsize, true);
     if (!err) {
         log__->Debug("saved file of size " + std::to_string(fsize) + " to " + root_folder + kPathSeparator + fname);
     }
diff --git a/receiver/src/statistics.cpp b/receiver/src/statistics.cpp
index eac194d04..e33421385 100644
--- a/receiver/src/statistics.cpp
+++ b/receiver/src/statistics.cpp
@@ -39,7 +39,7 @@ uint64_t Statistics::GetTotalElapsedMs() const noexcept {
 
 
 void Statistics::SetWriteInterval(uint64_t interval_ms) {
-    write_interval_ = interval_ms;
+    write_interval_ = (size_t) interval_ms;
 }
 
 void Statistics::ResetStatistics() noexcept {
diff --git a/worker/api/cpp/src/folder_data_broker.cpp b/worker/api/cpp/src/folder_data_broker.cpp
index 8115ffaa9..6214c505f 100644
--- a/worker/api/cpp/src/folder_data_broker.cpp
+++ b/worker/api/cpp/src/folder_data_broker.cpp
@@ -48,7 +48,7 @@ Error FolderDataBroker::GetFileByIndex(uint64_t nfile_to_get, FileInfo* info, Fi
         return err;
     }
 
-    *info = filelist_[nfile_to_get];
+    *info = filelist_[(size_t)nfile_to_get];
 
     if (data == nullptr) {
         return nullptr;
diff --git a/worker/api/cpp/src/tcp_client.cpp b/worker/api/cpp/src/tcp_client.cpp
index eff190999..61ed3580c 100644
--- a/worker/api/cpp/src/tcp_client.cpp
+++ b/worker/api/cpp/src/tcp_client.cpp
@@ -68,12 +68,12 @@ Error TcpClient::ReceiveData(SocketDescriptor sd, const FileInfo* info, FileData
     Error err;
     uint8_t* data_array = nullptr;
     try {
-        data_array = new uint8_t[info->size];
+        data_array = new uint8_t[(size_t)info->size];
     } catch (...) {
         connection_pool__->ReleaseConnection(sd);
         return ErrorTemplates::kMemoryAllocationError.Generate();
     }
-    io__->Receive(sd, data_array, info->size, &err);
+    io__->Receive(sd, data_array, (size_t)info->size, &err);
     connection_pool__->ReleaseConnection(sd);
     if (!err) {
         *data = FileData{data_array};
diff --git a/worker/api/cpp/unittests/test_tcp_client.cpp b/worker/api/cpp/unittests/test_tcp_client.cpp
index 55342f0ac..eab268a57 100644
--- a/worker/api/cpp/unittests/test_tcp_client.cpp
+++ b/worker/api/cpp/unittests/test_tcp_client.cpp
@@ -128,7 +128,7 @@ class TcpClientTests : public Test {
 
     void ExpectGetData(asapo::SocketDescriptor sd, bool ok) {
 
-        EXPECT_CALL(mock_io, Receive_t(sd, _, expected_size, _))
+        EXPECT_CALL(mock_io, Receive_t(sd, _,(size_t) expected_size, _))
         .WillOnce(
             DoAll(
                 testing::SetArgPointee<3>(ok ? nullptr : asapo::IOErrorTemplates::kTimeout.Generate().release()),
diff --git a/worker/api/python/setup.py.in b/worker/api/python/setup.py.in
index 6d61825cf..fce22d782 100644
--- a/worker/api/python/setup.py.in
+++ b/worker/api/python/setup.py.in
@@ -1,6 +1,6 @@
 from distutils.core import setup
 from distutils.core import Extension
-
+import setuptools
 from Cython.Build import cythonize
 
 import numpy
@@ -14,6 +14,14 @@ module = Extension("asapo_worker", ["asapo_worker.pyx"],
                        language="c++",
          )
 
-ext_modules = cythonize([module])
+setup(ext_modules=cythonize("asapo_worker.pyx", extra_objects=['@ASAPO_WORKER_LIB@',
+                           '@CURL_LIBRARIES@'],
+                            include_dirs=["@ASAPO_CXX_COMMON_INCLUDE_DIR@","@ASAPO_WORKER_INCLUDE_DIR@",numpy.get_include()],
+                            extra_compile_args=@EXTRA_COMPILE_ARGS@,
+                            extra_link_args=@EXTRA_LINK_ARGS@,
+                            language="c++",
+                            build_dir="build"),
+                            script_args=['build'],
+                            options={'build':{'build_lib':'.'}})
+
 
-setup(ext_modules = ext_modules)
diff --git a/worker/tools/folder_to_db/src/folder_db_importer.cpp b/worker/tools/folder_to_db/src/folder_db_importer.cpp
index 0116d8a5a..75f5263fb 100644
--- a/worker/tools/folder_to_db/src/folder_db_importer.cpp
+++ b/worker/tools/folder_to_db/src/folder_db_importer.cpp
@@ -27,7 +27,7 @@ Error FolderToDbImporter::ImportSingleFile(const std::unique_ptr<asapo::Database
 Error FolderToDbImporter::ImportFilelistChunk(const std::unique_ptr<asapo::Database>& db,
                                               const FileInfos& file_list, uint64_t begin, uint64_t end) const {
     for (auto i = begin; i < end; i++) {
-        auto err = ImportSingleFile(db, file_list[i]);
+        auto err = ImportSingleFile(db, file_list[(size_t)i]);
         if (err != nullptr) {
             return err;
         }
-- 
GitLab