Skip to content
Merged
10 changes: 5 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
#-----------------------------------------------------------------
# The project
#-----------------------------------------------------------------
project (SolidFrame VERSION 12.2)
project (SolidFrame VERSION 12.3)

message("SolidFrame version: ${PROJECT_VERSION} - ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
#-----------------------------------------------------------------
Expand Down Expand Up @@ -125,8 +125,8 @@ if((NOT CMAKE_SYSTEM MATCHES "Windows*") AND CMAKE_BUILD_TYPE STREQUAL "coverage
#force a single configuration type on Windows builds
set(CMAKE_CONFIGURATION_TYPES "debug")
set(CONFIGURATION_TYPE "debug")
add_compile_options("SHELL: -coverage -fprofile-arcs -ftest-coverage")
add_link_options("SHELL: -fprofile-arcs -ftest-coverage")
add_compile_options("SHELL: --coverage")
add_link_options("SHELL: --coverage")
elseif(CMAKE_SYSTEM MATCHES "Windows*" AND CMAKE_BUILD_TYPE STREQUAL "coverage")
message(FATAL_ERROR "\r\n === Coverage not yet supported for Windows systems ===\r\n")
endif()
Expand Down Expand Up @@ -382,9 +382,9 @@ if(NOT ON_CROSS)
find_program( MEMORYCHECK_COMMAND valgrind )
set( MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full" )
set( MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/cmake/valgrind_suppress.txt" )

set(SOLID_TEST_ALL TRUE CACHE BOOL "Enable/Disable all tests")

enable_testing()
include(CTest)
else()
Expand Down
7 changes: 7 additions & 0 deletions JOURNAL.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 20250119
* release 12.3
* Experimental Mutable/ConstSharedBuffer
* Experimental Mutable/ConstIntrusivePtr
* Fixed FreeBSD 14.2 build
* Fixed aioreactor for FreeBSD

## 20250119
* release 12.2

Expand Down
6 changes: 3 additions & 3 deletions solid/frame/aio/src/aioreactor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -567,10 +567,10 @@ inline ReactorEventE systemEventsToReactorEvents(const uint32_t _events)

inline constexpr ReactorEventE systemEventsToReactorEvents(const unsigned short _flags, const short _filter)
{
ReactorEventE retval = ReactorEventE::None;
if (_flags & (EV_EOF | EV_ERROR)) {
if (_flags & (EV_ERROR)) {
return ReactorEventE::Hangup;
}

if (_filter == EVFILT_READ) {
return ReactorEventE::Recv;
} else if (_filter == EVFILT_WRITE) {
Expand All @@ -579,7 +579,7 @@ inline constexpr ReactorEventE systemEventsToReactorEvents(const unsigned short
return ReactorEventE::Recv;
}

return retval;
return ReactorEventE::None;
}
#elif defined(SOLID_USE_WSAPOLL)
inline ReactorEventE systemEventsToReactorEvents(const uint32_t _events, decltype(WSAPOLLFD::events)& _revs)
Expand Down
39 changes: 0 additions & 39 deletions solid/frame/manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,6 @@ class Manager final : NonCopyable {
template <class F>
bool visit(ActorIdT const& _ruid, F _f);

#if false // TODO:vapa:delete
template <class T, class F>
bool visitDynamicCast(ActorIdT const& _ruid, F _f);

template <class T, class F>
bool visitExplicitCast(ActorIdT const& _ruid, F _f);
#endif

ActorIdT id(const ActorBase& _ractor) const;

Service& service(const ActorBase& _ractor) const;
Expand Down Expand Up @@ -189,37 +181,6 @@ inline bool Manager::visit(ActorIdT const& _ruid, F _f)
{
return doVisit(_ruid, ActorVisitFunctionT{_f});
}
#if false
template <class T, class F>
inline bool Manager::visitDynamicCast(ActorIdT const& _ruid, F _f)
{
auto lambda = [&_f](VisitContext& _rctx) {
T* pt = dynamic_cast<T*>(&_rctx.actor());
if (pt) {
return _f(_rctx, *pt);
}
return false;
};
ActorVisitFunctionT fct(std::ref(lambda));
return doVisit(_ruid, fct);
}

template <class T, class F>
inline bool Manager::visitExplicitCast(ActorIdT const& _ruid, F _f)
{
auto lambda = [&_f](VisitContext& _rctx) {
const std::type_info& req_type = typeid(T);
const std::type_info& val_type = doGetTypeId(*(&_rctx.actor()));

if (std::type_index(req_type) == std::type_index(val_type)) {
return _f(_rctx, static_cast<T&>(_rctx.actor()));
}
return false;
};

return doVisit(_ruid, ActorVisitFunctionT{lambda});
}
#endif

template <typename F>
inline size_t Manager::forEachServiceActor(const Service& _rservice, F _f)
Expand Down
179 changes: 0 additions & 179 deletions solid/frame/mprpc/mprpcservice.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,13 +348,6 @@ class Service : public frame::Service {
const MessageFlagsT& _flags = 0);

// send message using connection uid -------------------------------------
#if 0
template <class T>
ErrorConditionT sendMessage(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
const MessageFlagsT& _flags = 0);
#endif
template <class T>
ErrorConditionT sendMessage(
const RecipientUrl& _recipient_url,
Expand Down Expand Up @@ -401,23 +394,6 @@ class Service : public frame::Service {
MessagePointerT<T> const& _rmsgptr,
MessageId& _rmsg_id,
const MessageFlagsT& _flags = 0);
// send request using connection uid --------------------------------------
#if 0
template <class T, class Fnc>
ErrorConditionT sendRequest(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
const MessageFlagsT& _flags = 0);

template <class T, class Fnc>
ErrorConditionT sendRequest(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
MessageId& _rmsguid,
const MessageFlagsT& _flags = 0);
#endif
// send message with complete using recipient name ------------------------

template <class T, class Fnc>
Expand All @@ -444,45 +420,13 @@ class Service : public frame::Service {
MessageId& _rmsguid,
const MessageFlagsT& _flags);

// send message with complete using connection uid ------------------------
#if 0
template <class T, class Fnc>
ErrorConditionT sendMessage(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
const MessageFlagsT& _flags);

template <class T, class Fnc>
ErrorConditionT sendMessage(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
MessageId& _rmsguid,
const MessageFlagsT& _flags);
#endif
// send message using ConnectionContext ----------------------------------

template <class T>
ErrorConditionT sendResponse(
ConnectionContext& _rctx,
MessagePointerT<T> const& _rmsgptr,
const MessageFlagsT& _flags = 0);
#if 0
template <class T>
ErrorConditionT sendMessage(
ConnectionContext& _rctx,
MessagePointerT<T> const& _rmsgptr,
const MessageFlagsT& _flags = 0);

template <class T, class Fnc>
ErrorConditionT sendMessage(
ConnectionContext& _rctx,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
const MessageFlagsT& _flags = 0);

#endif
//-------------------------------------------------------------------------
ErrorConditionT sendRelay(const ActorIdT& _rconid, RelayData&& _urelmsg);
ErrorConditionT sendRelayCancel(RelayData&& _urelmsg);
Expand Down Expand Up @@ -741,19 +685,6 @@ ErrorConditionT Service::sendMessage(
MessageCompleteFunctionT complete_handler;
return doSendMessage(_recipient_url, msgptr, complete_handler, &_rrecipient_id, &_rmsg_id, _flags);
}
// send message using connection uid -------------------------------------
#if 0
template <class T>
ErrorConditionT Service::sendMessage(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
const MessageFlagsT& _flags)
{
auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
MessageCompleteFunctionT complete_handler;
return doSendMessage(nullptr, _rrecipient_id, msgptr, complete_handler, nullptr, nullptr, _flags);
}
#endif
//-------------------------------------------------------------------------
template <class T>
ErrorConditionT Service::sendMessage(
Expand Down Expand Up @@ -825,46 +756,6 @@ ErrorConditionT Service::sendRequest(
return doSendMessage(_recipient_url, msgptr, complete_handler, &_rrecipient_id, &_rmsguid, _flags | MessageFlagsE::AwaitResponse);
}
//-------------------------------------------------------------------------
#if 0
// send request using connection uid --------------------------------------
template <class T, class Fnc>
ErrorConditionT Service::sendRequest(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
const MessageFlagsT& _flags)
{
using CompleteHandlerT = CompleteHandler<Fnc,
typename message_complete_traits<decltype(_complete_fnc)>::send_type,
typename message_complete_traits<decltype(_complete_fnc)>::recv_type>;

auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
CompleteHandlerT fnc(std::forward<Fnc>(_complete_fnc));
MessageCompleteFunctionT complete_handler(std::move(fnc));

return doSendMessage(nullptr, _rrecipient_id, msgptr, complete_handler, nullptr, nullptr, _flags | MessageFlagsE::AwaitResponse);
}
//-------------------------------------------------------------------------
template <class T, class Fnc>
ErrorConditionT Service::sendRequest(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
MessageId& _rmsguid,
const MessageFlagsT& _flags)
{
using CompleteHandlerT = CompleteHandler<Fnc,
typename message_complete_traits<decltype(_complete_fnc)>::send_type,
typename message_complete_traits<decltype(_complete_fnc)>::recv_type>;

auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
CompleteHandlerT fnc(std::forward<Fnc>(_complete_fnc));
MessageCompleteFunctionT complete_handler(std::move(fnc));

return doSendMessage(nullptr, _rrecipient_id, msgptr, complete_handler, nullptr, &_rmsguid, _flags | MessageFlagsE::AwaitResponse);
}
#endif
//-------------------------------------------------------------------------
// send response using recipient id ---------------------------------------

template <class T>
Expand Down Expand Up @@ -951,46 +842,6 @@ ErrorConditionT Service::sendMessage(
return doSendMessage(_recipient_url, msgptr, complete_handler, &_rrecipient_id, &_rmsguid, _flags);
}
//-------------------------------------------------------------------------
// send message with complete using connection uid ------------------------
#if 0
template <class T, class Fnc>
ErrorConditionT Service::sendMessage(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
const MessageFlagsT& _flags)
{
using CompleteHandlerT = CompleteHandler<Fnc,
typename message_complete_traits<decltype(_complete_fnc)>::send_type,
typename message_complete_traits<decltype(_complete_fnc)>::recv_type>;

auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
CompleteHandlerT fnc(std::forward<Fnc>(_complete_fnc));
MessageCompleteFunctionT complete_handler(std::move(fnc));

return doSendMessage(nullptr, _rrecipient_id, msgptr, complete_handler, nullptr, nullptr, _flags);
}
//-------------------------------------------------------------------------
template <class T, class Fnc>
ErrorConditionT Service::sendMessage(
RecipientId const& _rrecipient_id,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
MessageId& _rmsguid,
const MessageFlagsT& _flags)
{
using CompleteHandlerT = CompleteHandler<Fnc,
typename message_complete_traits<decltype(_complete_fnc)>::send_type,
typename message_complete_traits<decltype(_complete_fnc)>::recv_type>;

auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
CompleteHandlerT fnc(std::forward<Fnc>(_complete_fnc));
MessageCompleteFunctionT complete_handler(std::move(fnc));

return doSendMessage(nullptr, _rrecipient_id, msgptr, complete_handler, nullptr, &_rmsguid, _flags);
}
#endif
//-------------------------------------------------------------------------
// send message using ConnectionContext ----------------------------------

template <class T>
Expand All @@ -1003,36 +854,6 @@ ErrorConditionT Service::sendResponse(
MessageCompleteFunctionT complete_handler;
return doSendMessage(_rctx, msgptr, complete_handler, nullptr, nullptr, _flags | MessageFlagsE::Response);
}
#if 0
template <class T>
ErrorConditionT Service::sendMessage(
ConnectionContext& _rctx,
MessagePointerT<T> const& _rmsgptr,
const MessageFlagsT& _flags)
{
auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
MessageCompleteFunctionT complete_handler;
return doSendMessage(_rctx, msgptr, complete_handler, nullptr, nullptr, _flags);
}

template <class T, class Fnc>
ErrorConditionT Service::sendMessage(
ConnectionContext& _rctx,
MessagePointerT<T> const& _rmsgptr,
Fnc _complete_fnc,
const MessageFlagsT& _flags)
{
using CompleteHandlerT = CompleteHandler<Fnc,
typename message_complete_traits<decltype(_complete_fnc)>::send_type,
typename message_complete_traits<decltype(_complete_fnc)>::recv_type>;

auto msgptr(solid::static_pointer_cast<Message>(_rmsgptr));
CompleteHandlerT fnc(std::forward<Fnc>(_complete_fnc));
MessageCompleteFunctionT complete_handler(std::move(fnc));

return doSendMessage(_rctx, msgptr, complete_handler, nullptr, nullptr, _flags);
}
#endif

//-------------------------------------------------------------------------
template <typename F>
Expand Down
30 changes: 0 additions & 30 deletions solid/frame/mprpc/src/mprpcconfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,36 +39,6 @@ std::ostream& operator<<(std::ostream& _ros, const RelayDataFlagsT& _flags)
return _ros;
}

#if false
/*virtual*/ BufferBase::~BufferBase()
{
}

RecvBufferPointerT make_recv_buffer(const size_t _cp)
{
switch (_cp) {
case 512:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<512>>());
case 1 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<1 * 1024>>());
case 2 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<2 * 1024>>());
case 4 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<4 * 1024>>());
case 8 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<8 * 1024>>());
case 16 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<16 * 1024>>());
case 32 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<32 * 1024>>());
case 64 * 1024:
return std::dynamic_pointer_cast<BufferBase>(std::make_shared<Buffer<64 * 1024>>());
default:
return std::make_shared<Buffer<0>>(_cp);
}
}
#endif

namespace {
SharedBuffer default_allocate_recv_buffer(const uint32_t _cp)
{
Expand Down
2 changes: 1 addition & 1 deletion solid/frame/mprpc/src/mprpcconnection.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ class Connection : public frame::aio::Actor {
bool poll_pool_more_ = true;
bool send_posted_ = false;
Any<> any_data_;
char socket_emplace_buf_[static_cast<size_t>(ConnectionValues::SocketEmplacementSize)];
char socket_emplace_buf_[static_cast<size_t>(ConnectionValues::SocketEmplacementSize)] = {};
SocketStubPtrT sock_ptr_;
NanoTime timeout_recv_ = NanoTime::max(); // client and server
NanoTime timeout_send_soft_ = NanoTime::max(); // client and server
Expand Down
Loading
Loading