Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Implementation of network handler #13

Draft
wants to merge 25 commits into
base: dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f984296
Add handler submodule
kachsheev Oct 13, 2023
9ce1b74
Add Expected class to Common. Fix 'Utils' -> 'UtilsTest'
kachsheev Dec 24, 2023
475470c
Add implementation of network hadler
kachsheev Dec 24, 2023
57636fd
Merge branch 'dev' into Handler/Network
kachsheev Sep 12, 2024
b6b2b99
Move files and fix headers
kachsheev Sep 16, 2024
d7b382c
Add 'Common/TypeMapper' with tests
kachsheev Sep 17, 2024
b392d0b
Redesign UDP part of Hanler
kachsheev Sep 23, 2024
81169f6
Add pull() member function to Optional
kachsheev Sep 23, 2024
2cd47f2
Fix compilation errors and warnings
kachsheev Sep 23, 2024
b9022ce
Rename Handler tests
kachsheev Sep 24, 2024
7a17097
Fix build on MSVC 2017
kachsheev Sep 24, 2024
dc93f32
Change returning type in 'Handler::ServerHandle::getSessionHandle()'
kachsheev Sep 24, 2024
745f99a
Multiple changes
kachsheev Sep 24, 2024
282640a
Common/Expected: add 'ifResultGet()' and 'ifErrorGet()' for change da…
kachsheev Dec 14, 2024
6f514e1
Common/ReferenceWrapper: update, add default copy/move ctorss add ass…
kachsheev Dec 14, 2024
429815c
Handler/Network/Tests: fix tests location
kachsheev Dec 14, 2024
c765f10
Dump changes
kachsheev Dec 14, 2024
d7a833f
Templates/Array: fix compilation error
kachsheev Dec 14, 2024
6cb32a1
Os/Async/Network/Registrar: remove useless header
kachsheev Dec 14, 2024
00c0ebe
Os/Threads/ConditionVariable: remove tryWait and unwait
kachsheev Dec 14, 2024
52c6fae
Os/Threads/Counter: update
kachsheev Dec 14, 2024
ff0eb23
Templates/Object: fix compilation error
kachsheev Dec 14, 2024
59e777a
Templates/SimpleAlgorithms: fix
kachsheev Dec 14, 2024
f24ae30
Common/Tests: small fixes in FunctionTrait and VoidType tests
kachsheev Dec 14, 2024
7860296
Handler/Tests/Network/Udp: add test templates; add tests for UDP storage
kachsheev Dec 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions include/FlameIDE/Handler/Network/Handler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,14 @@ class Handler::ServerHandle
/// @brief getSessionHandle
/// @return
///
Handler::SessionHandle getSessionHandle() noexcept;
Handler::ExpectedSessionHandle getSessionHandle() noexcept;

private:
friend class Handler::Internal;
friend class Handler::Udp;
friend class Handler::Tcp;

using CallbackGetSessionHandle = Handler::SessionHandle (*)(void *);
using CallbackGetSessionHandle = Handler::ExpectedSessionHandle (*)(void *);

private:
void *data = nullptr;
Expand Down Expand Up @@ -195,13 +195,13 @@ class Handler::SessionHandle
private:
static constexpr Types::size_t OBJECT_SIZE = 64;

using Object = templates::Object<OBJECT_SIZE>;
using CallbackBytesToRead = Types::ssize_t (*)(const Object *);
using CallbackReceive = Types::ssize_t (*)(
Object *, flame_ide::templates::Range<byte_t *>
using Object = ::flame_ide::templates::Object<OBJECT_SIZE>;
using CallbackBytesToRead = ::flame_ide::Types::ssize_t (*)(const Object *);
using CallbackReceive = ::flame_ide::Types::ssize_t (*)(
Object *, ::flame_ide::templates::Range<byte_t *>
);
using CallbackSend = Types::ssize_t (*)(
Object *, flame_ide::templates::Range<const byte_t *>
using CallbackSend = ::flame_ide::Types::ssize_t (*)(
Object *, ::flame_ide::templates::Range<const byte_t *>
);

private:
Expand Down
2 changes: 2 additions & 0 deletions src/Handler/Network/Headers.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
set (HEADER_LIST
${CMAKE_CURRENT_SOURCE_DIR}/Functions.hpp
${CMAKE_CURRENT_SOURCE_DIR}/Internal.hpp
${CMAKE_CURRENT_SOURCE_DIR}/Tcp.hpp
${CMAKE_CURRENT_SOURCE_DIR}/Udp.hpp
${CMAKE_CURRENT_SOURCE_DIR}/Worker.hpp
)
68 changes: 1 addition & 67 deletions src/Handler/Network/Internal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,76 +10,10 @@ namespace flame_ide
{namespace network
{

// Hanler::Udp

Handler::ExpectedServerHandle Handler::Udp::push(os::network::UdpServer &&server) noexcept
{
flame_ide::unused(server);

udp::Server *udpServer = udp.push(move(server));
flame_ide::unused(udpServer);
return { os::STATUS_FAILED };
}

Handler::ExpectedSessionHandle Handler::Udp::push(os::network::UdpClient &&client) noexcept
{
flame_ide::unused(client);

udp::Client *udpClient = udp.push(move(client));
flame_ide::unused(udpClient);
return { os::STATUS_FAILED };
}

Handler::ExpectedUdpServer Handler::Udp::pop(Handler::ServerHandle &handle)
{
flame_ide::unused(handle);
return { os::STATUS_FAILED };
}

Handler::ExpectedUdpClient Handler::Udp::pop(Handler::SessionHandle &handle)
{
flame_ide::unused(handle);
return { os::STATUS_FAILED };
}

// Handler::Tcp

Handler::ExpectedServerHandle Handler::Tcp::push(os::network::TcpServer &&server) noexcept
{
flame_ide::unused(server);
return { os::STATUS_FAILED };
}

Handler::ExpectedSessionHandle Handler::Tcp::push(os::network::TcpClient &&client) noexcept
{
flame_ide::unused(client);
return { os::STATUS_FAILED };
}

Handler::ExpectedTcpServer Handler::Tcp::pop(Handler::ServerHandle &handle)
{
flame_ide::unused(handle);
return { os::STATUS_FAILED };
}

Handler::ExpectedTcpClient Handler::Tcp::pop(Handler::SessionHandle &handle)
{
flame_ide::unused(handle);
return { os::STATUS_FAILED };
}

}}} // namespace flame_ide::handler::network

// Handler::Internal implementation
namespace flame_ide
{namespace handler
{namespace network
{

Handler::Internal::Internal() noexcept
{}

Handler::Internal::~Internal() = default;
Handler::Internal::~Internal() noexcept = default;

Handler::Udp &Handler::Internal::udp() noexcept
{
Expand Down
57 changes: 2 additions & 55 deletions src/Handler/Network/Internal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,14 @@
#include <FlameIDE/Templates/Pointers.hpp>
#include <FlameIDE/Os/Async/Network/Registrar.hpp>

#include <FlameIDE/../../src/Handler/Network/Udp/Udp.hpp>
#include <FlameIDE/../../src/Handler/Network/Tcp/Tcp.hpp>
#include <FlameIDE/../../src/Handler/Network/Udp.hpp>
#include <FlameIDE/../../src/Handler/Network/Tcp.hpp>
#include <FlameIDE/../../src/Handler/Network/Worker.hpp>

namespace flame_ide
{namespace handler
{namespace network
{

class Handler::Udp
{
public:
using CallbackGetSessionHandle = Handler::ServerHandle::CallbackGetSessionHandle;

public:
// TODO
Handler::ExpectedServerHandle push(os::network::UdpServer &&server) noexcept;
// TODO
Handler::ExpectedSessionHandle push(os::network::UdpClient &&client) noexcept;

// TODO
Handler::ExpectedUdpServer pop(Handler::ServerHandle &handle);
// TODO
Handler::ExpectedUdpClient pop(Handler::SessionHandle &handle);

/// @brief serverHandleCallback
/// @return
// TODO
CallbackGetSessionHandle serverHandleCallback() const noexcept;

private:
udp::Udp udp;
};

class Handler::Tcp
{
public:
using CallbackGetSessionHandle = Handler::ServerHandle::CallbackGetSessionHandle;

public:
// TODO
Handler::ExpectedServerHandle push(os::network::TcpServer &&server) noexcept;
// TODO
Handler::ExpectedSessionHandle push(os::network::TcpClient &&client) noexcept;

// TODO
Handler::ExpectedTcpServer pop(Handler::ServerHandle &handle);
// TODO
Handler::ExpectedTcpClient pop(Handler::SessionHandle &handle);

/// @brief serverHandleCallback
/// @return
// TODO
CallbackGetSessionHandle serverHandleCallback() const noexcept;

private:
tcp::Tcp tcp;
};

}}} // namespace flame_ide::handler::network

namespace flame_ide
Expand Down Expand Up @@ -94,12 +43,10 @@ class Handler::Internal

/// @brief start
/// @return
// TODO
os::Status start() noexcept;

/// @brief stop
/// @return
// TODO
os::Status stop() noexcept;

private:
Expand Down
2 changes: 1 addition & 1 deletion src/Handler/Network/ServerHandle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Handler::ServerHandle::operator bool() const noexcept
return data && callbackGetSessionHandle;
}

Handler::SessionHandle Handler::ServerHandle::getSessionHandle() noexcept
Handler::ExpectedSessionHandle Handler::ServerHandle::getSessionHandle() noexcept
{
return callbackGetSessionHandle(data);
}
Expand Down
2 changes: 2 additions & 0 deletions src/Handler/Network/Sources.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ set (SOURCE_LIST
${CMAKE_CURRENT_SOURCE_DIR}/Handler.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Internal.cpp
${CMAKE_CURRENT_SOURCE_DIR}/ServerHandle.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Tcp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Udp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Worker.cpp
)
32 changes: 32 additions & 0 deletions src/Handler/Network/Tcp.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include <FlameIDE/../../src/Handler/Network/Tcp.hpp>

namespace flame_ide
{namespace handler
{namespace network
{

Handler::ExpectedServerHandle Handler::Tcp::push(os::network::TcpServer &&server) noexcept
{
flame_ide::unused(server);
return { os::STATUS_FAILED };
}

Handler::ExpectedSessionHandle Handler::Tcp::push(os::network::TcpClient &&client) noexcept
{
flame_ide::unused(client);
return { os::STATUS_FAILED };
}

Handler::ExpectedTcpServer Handler::Tcp::pop(Handler::ServerHandle &handle)
{
flame_ide::unused(handle);
return { os::STATUS_FAILED };
}

Handler::ExpectedTcpClient Handler::Tcp::pop(Handler::SessionHandle &handle)
{
flame_ide::unused(handle);
return { os::STATUS_FAILED };
}

}}} // namespace flame_ide::handler::network
40 changes: 40 additions & 0 deletions src/Handler/Network/Tcp.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#ifndef HANDLERINTERNALTCP_HPP
#define HANDLERINTERNALTCP_HPP

#include <FlameIDE/Handler/Network/Handler.hpp>

#include <FlameIDE/../../src/Handler/Network/Tcp/Tcp.hpp>

namespace flame_ide
{namespace handler
{namespace network
{

class Handler::Tcp
{
public:
using CallbackGetSessionHandle = Handler::ServerHandle::CallbackGetSessionHandle;

public:
// TODO
Handler::ExpectedServerHandle push(os::network::TcpServer &&server) noexcept;
// TODO
Handler::ExpectedSessionHandle push(os::network::TcpClient &&client) noexcept;

// TODO
Handler::ExpectedTcpServer pop(Handler::ServerHandle &handle);
// TODO
Handler::ExpectedTcpClient pop(Handler::SessionHandle &handle);

/// @brief serverHandleCallback
/// @return
// TODO
CallbackGetSessionHandle serverHandleCallback() const noexcept;

private:
tcp::Tcp tcp;
};

}}} // namespace flame_ide::handler::network

#endif // HANDLERINTERNALTCP_HPP
12 changes: 6 additions & 6 deletions src/Handler/Network/Tcp/InternalData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,39 @@ namespace flame_ide
// client

// TODO
Types::ssize_t clientBytesToRead(void */*data*/) noexcept
Types::ssize_t clientBytesToRead(void * /* data */) noexcept
{
return os::STATUS_FAILED;
}

// TODO
Types::ssize_t clientReceive(void */*data*/, templates::Range<byte_t *>) noexcept
Types::ssize_t clientReceive(void * /* data */, templates::Range<byte_t *>) noexcept
{
return os::STATUS_FAILED;
}

// TODO
Types::ssize_t clientSend(void */*data*/, templates::Range<const byte_t *>) noexcept
Types::ssize_t clientSend(void * /* data */, templates::Range<const byte_t *>) noexcept
{
return os::STATUS_FAILED;
}

// server

// TODO
Types::ssize_t serverBytesToRead(void */*data*/) noexcept
Types::ssize_t serverBytesToRead(void * /* data */) noexcept
{
return os::STATUS_FAILED;
}

// TODO
Types::ssize_t serverReceive(void */*data*/, templates::Range<byte_t *>) noexcept
Types::ssize_t serverReceive(void * /* data */, templates::Range<byte_t *>) noexcept
{
return os::STATUS_FAILED;
}

// TODO
Types::ssize_t serverSend(void */*data*/, templates::Range<const byte_t *>) noexcept
Types::ssize_t serverSend(void * /* data */, templates::Range<const byte_t *>) noexcept
{
return os::STATUS_FAILED;
}
Expand Down
6 changes: 3 additions & 3 deletions src/Handler/Network/Tcp/Tcp.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef HANDLERINTERNALTCP_HPP
#define HANDLERINTERNALTCP_HPP
#ifndef HANDLERINTERNALTCPTCP_HPP
#define HANDLERINTERNALTCPTCP_HPP

#include <FlameIDE/Common/Traits/Functional.hpp>
#include <FlameIDE/Os/Threads/Spin.hpp>
Expand Down Expand Up @@ -70,4 +70,4 @@ struct Tcp

}}}} // namespace flame_ide::handler::network::tcp

#endif // HANDLERINTERNALTCP_HPP
#endif // HANDLERINTERNALTCPTCP_HPP
Loading