Commit 7e44cbbe authored by Filip Hauzvic's avatar Filip Hauzvic
Browse files

Move call_remote with params to cpp

parent 16ca0c8a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ namespace net
    struct Driver final : public com::Runner
    {
        const ConnectionId SERVER_ID = 0;
        static inline std::string self_name() { return "net_driver"; }
        static inline std::string self_name() { return "driver"; }

        Driver();
        ~Driver() override;
+1 −13
Original line number Diff line number Diff line
@@ -27,19 +27,7 @@ namespace net
            const std::string& method_name,
            ConnectionId target,
            ReliabilityMode reliability,
            const std::vector<com::Reflection::ValuePtr>& params)
        {
            int written_bytes = 0;
            auto buffer = create_packet(context_item, method_name, params, written_bytes);
            std::span<const uint8_t> buffer_span(buffer.data(), written_bytes);
            if (target == BROADCAST_ID)
            {
                driver()->broadcast(buffer_span, reliability);
                return;
            }

            driver()->send(target, buffer_span, reliability);
        }
            const std::vector<com::Reflection::ValuePtr>& params);

        template<typename... Args>
        void call_remote(
+20 −1
Original line number Diff line number Diff line
@@ -30,13 +30,32 @@ void RPCSystem::register_functions()
    });
}

void RPCSystem::call_remote(
    com::ContextItem* context_item,
    const std::string& method_name,
    ConnectionId target,
    ReliabilityMode reliability,
    const std::vector<com::Reflection::ValuePtr>& params)
{
    int written_bytes = 0;
    auto buffer = create_packet(context_item, method_name, params, written_bytes);
    std::span<const uint8_t> buffer_span(buffer.data(), written_bytes);
    if (target == BROADCAST_ID)
    {
        driver()->broadcast(buffer_span, reliability);
        return;
    }

    driver()->send(target, buffer_span, reliability);
}

void RPCSystem::process_packet(ConnectionId from, void* deserializer)
{
    auto des = static_cast<Deserializer*>(deserializer);

    std::vector<std::string> context_item_path;
    des->container(context_item_path, MAX_PATH_DEPTH, [](auto& s, std::string& str) {
    des->container(context_item_path, MAX_PATH_DEPTH, [](auto& s, std::string& str)
    {
        s.text1b(str, MAX_STRING_LENGTH);
    });
    if (context_item_path.empty())