diff --git a/TODO b/TODO
index d91ec20..d22f382 100644
--- a/TODO
+++ b/TODO
@@ -1,2 +1,3 @@
initialization code for other operating systems - currently VoidNet only supports windows
-initialization code for tcp client for other operating systems - "
\ No newline at end of file
+initialization code for tcp client for other operating systems - "
+implement thread pool - god dammit so many tries and it doesnt work
\ No newline at end of file
diff --git a/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog b/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog
index 46b134b..2d0bd35 100644
Binary files a/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog and b/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog differ
diff --git a/TestsVS/Tests/Release/Tests.tlog/CL.read.1.tlog b/TestsVS/Tests/Release/Tests.tlog/CL.read.1.tlog
new file mode 100644
index 0000000..e3d9241
Binary files /dev/null and b/TestsVS/Tests/Release/Tests.tlog/CL.read.1.tlog differ
diff --git a/TestsVS/Tests/Release/Tests.tlog/CL.write.1.tlog b/TestsVS/Tests/Release/Tests.tlog/CL.write.1.tlog
new file mode 100644
index 0000000..e85ba54
Binary files /dev/null and b/TestsVS/Tests/Release/Tests.tlog/CL.write.1.tlog differ
diff --git a/TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog b/TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog
index 7d676d7..46b134b 100644
Binary files a/TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog and b/TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog differ
diff --git a/TestsVS/Tests/Release/Tests.tlog/link.read.1.tlog b/TestsVS/Tests/Release/Tests.tlog/link.read.1.tlog
index aa32f17..46b134b 100644
Binary files a/TestsVS/Tests/Release/Tests.tlog/link.read.1.tlog and b/TestsVS/Tests/Release/Tests.tlog/link.read.1.tlog differ
diff --git a/TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog b/TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog
index 33fb381..46b134b 100644
Binary files a/TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog and b/TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog differ
diff --git a/TestsVS/Tests/Tests.vcxproj b/TestsVS/Tests/Tests.vcxproj
index d7e1ff8..95630e1 100644
--- a/TestsVS/Tests/Tests.vcxproj
+++ b/TestsVS/Tests/Tests.vcxproj
@@ -117,6 +117,7 @@
true
WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
F:\VoidNet\include;
+ MultiThreaded
Console
diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog
index f06a63f..da2a240 100644
Binary files a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog and b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog differ
diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.read.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.read.1.tlog
index 72e3d43..02d72cf 100644
Binary files a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.read.1.tlog and b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.read.1.tlog differ
diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.write.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.write.1.tlog
index bfd30b5..99fa2d0 100644
Binary files a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.write.1.tlog and b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.write.1.tlog differ
diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib-link.write.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib-link.write.1.tlog
index bd81a63..a56c9d6 100644
Binary files a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib-link.write.1.tlog and b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib-link.write.1.tlog differ
diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib.read.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib.read.1.tlog
index d1d9bcb..713dfb9 100644
Binary files a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib.read.1.tlog and b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib.read.1.tlog differ
diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/lib.command.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/lib.command.1.tlog
index 3e3d46b..46e8865 100644
Binary files a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/lib.command.1.tlog and b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/lib.command.1.tlog differ
diff --git a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj
index 788028c..4fd9b6b 100644
--- a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj
+++ b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj
@@ -27,7 +27,6 @@
-
@@ -42,7 +41,6 @@
-
diff --git a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters
index 11506fe..06e1184 100644
--- a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters
+++ b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters
@@ -45,9 +45,6 @@
include
-
- include
-
@@ -80,9 +77,6 @@
src
-
- src
-
diff --git a/include/TcpClient.hpp b/include/TcpClient.hpp
index 1d890a8..2c17a3f 100644
--- a/include/TcpClient.hpp
+++ b/include/TcpClient.hpp
@@ -3,9 +3,9 @@
#include "Defs.hpp"
#include "NetworkMessage.hpp"
-#include "ThreadPool.hpp"
#include
+#include
#ifdef _MSC_VER
#pragma once
@@ -30,17 +30,20 @@ public:
NetworkBuffer ReceiveDataArray();
const NetworkMessage &ReceiveData();
+ void StartSender();
VoidCode SendMessage(const NetworkMessage &message);
private:
- static VoidCode SendNetworkMessage(const NetworkMessage &message, TcpClient *client);
+ void SendNetworkMessage(const NetworkMessage &message);
+ void SendNetworkMessageNow(const NetworkMessage &message);
VoidCode Initialize(const std::string &ip, uint16 port = default_port);
std::string ip;
uint16 port = 0;
- bool initialized;
+ bool initialized = false;
+ bool run_sender = false;
- ThreadPool thread_pool;
+ std::vector network_message_queue;
#ifdef _MSC_VER
SOCKET tcp_socket = INVALID_SOCKET;
diff --git a/include/ThreadPool.hpp b/include/ThreadPool.hpp
deleted file mode 100644
index 6cfc0be..0000000
--- a/include/ThreadPool.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef THREAD_POOL_HPP
-#define THREAD_POOL_HPP
-
-#ifdef _MSC_VER
-#pragma once
-#endif
-
-#include
-#include
-#include
-#include
-#include
-
-class ThreadPool
-{
-public:
- ThreadPool(int threads);
- ~ThreadPool();
- void Enqueue(std::function f);
- void Shutdown();
- const ThreadPool &operator=(ThreadPool &pool);
-
-private:
- std::vector threadPool;
- std::queue> tasks;
- std::mutex tasksMutex;
- std::condition_variable condition;
- bool terminate;
- bool stopped;
- void Invoke();
-};
-
-#endif
\ No newline at end of file
diff --git a/include/VoidNetClient.hpp b/include/VoidNetClient.hpp
index c425648..ae27026 100644
--- a/include/VoidNetClient.hpp
+++ b/include/VoidNetClient.hpp
@@ -11,7 +11,6 @@
#include "Callbacks.hpp"
#include "NetworkBuffer.hpp"
#include "NetworkMessage.hpp"
-#include "ThreadPool.hpp"
#include
#include
diff --git a/src/TcpClientWindows.cpp b/src/TcpClientWindows.cpp
index eb367da..d003232 100644
--- a/src/TcpClientWindows.cpp
+++ b/src/TcpClientWindows.cpp
@@ -6,6 +6,7 @@
#include "Tags.hpp"
#include
+#include
#undef SendMessage
@@ -45,12 +46,12 @@ VoidCode TcpClient::Initialize(const std::string &ip, uint16 port)
return VOID_SUCCESS;
}
-TcpClient::TcpClient() : port(default_port), thread_pool(50)
+TcpClient::TcpClient() : port(default_port)
{
}
TcpClient::TcpClient(const std::string &ip, uint16 port) :
- ip(ip), port(port), thread_pool(50)
+ ip(ip), port(port)
{
}
@@ -134,16 +135,26 @@ const NetworkMessage &TcpClient::ReceiveData()
return message;
}
-VoidCode TcpClient::SendNetworkMessage(const NetworkMessage &message, TcpClient *client)
+void TcpClient::SendNetworkMessage(const NetworkMessage &message)
+{
+ network_message_queue.emplace_back(message);
+}
+
+void TcpClient::SendNetworkMessageNow(const NetworkMessage &message)
{
NetworkBuffer buffer = message.EncodeMessage(message);
- int32 sent_bytes = send(client->tcp_socket, reinterpret_cast(buffer.body), buffer.body_size, 0);
+ int32 sent_bytes = send(tcp_socket, reinterpret_cast(buffer.body), buffer.body_size, 0);
+ if (sent_bytes != buffer.body_size)
+ {
+
+ }
}
VoidCode TcpClient::SendMessage(const NetworkMessage &message)
{
- thread_pool.Enqueue([]()
- {
- //SendNetworkMessage(message, this);
- });
+}
+
+void TcpClient::StartSender()
+{
+ //std::thread thread = std::thread(&SendNetworkMessageNow, message);
}
\ No newline at end of file
diff --git a/src/ThreadPool.cpp b/src/ThreadPool.cpp
deleted file mode 100644
index 3d59a85..0000000
--- a/src/ThreadPool.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "ThreadPool.hpp"
-
-ThreadPool::ThreadPool(int threads) :
- terminate(false),
- stopped(false)
-{
- for (int i = 0; i < threads; i++)
- threadPool.emplace_back(std::thread(&ThreadPool::Invoke, this));
-}
-
-void ThreadPool::Enqueue(std::function f)
-{
- std::unique_lock lock(tasksMutex);
- tasks.push(f);
- condition.notify_one();
-}
-
-void ThreadPool::Invoke() {
-
- std::function task;
- while (true)
- {
- std::unique_lock lock(tasksMutex);
- condition.wait(lock, [this] { return !tasks.empty() || terminate; });
- if (terminate && tasks.empty())
- {
- return;
- }
- task = tasks.front();
- tasks.pop();
- task();
- }
-}
-
-void ThreadPool::Shutdown()
-{
- std::unique_lock lock(tasksMutex);
- terminate = true;
- condition.notify_all();
-
- for (std::thread &thread : threadPool)
- thread.join();
-
- threadPool.empty();
- stopped = true;
-}
-
-const ThreadPool &ThreadPool::operator=(ThreadPool &pool)
-{
- return pool;
-}
-
-ThreadPool::~ThreadPool()
-{
- if (!stopped)
- Shutdown();
-}
\ No newline at end of file