AuroraRPC/Source/AuRPCServer.hpp
Jamie Reece Wilson aa7591967a [+] Broadcasts and client/server messages
[+] Async responses
[+] AuRPC::SetRecommendedPipeLength
2023-12-16 18:16:32 +00:00

40 lines
1.2 KiB
C++

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuRPCServer.hpp
Date: 2022-6-29
Author: Reece
***/
#pragma once
struct AuRPCRequest;
struct AuRPCServerChannel;
struct AuRPCServer : AuIRPCServer
{
bool Init(AuRPC* parent, AuAsync::WorkerPId_t worker);
bool RegisterService(const AuSPtr<AuIRPCService> &service) override;
void BroadcastMessage(const AuMemoryViewRead &view) override;
AuList<AuSPtr<AuIRPCSession>> GetClients() override;
void SetCallbacks(const AuSPtr<AuIRPCServerCallbacks> &pCallbacks) override;
AuString ExportToString() override;
AuSPtr<AuRPCServerChannel> ToPrimaryChannel();
AuSPtr<AuRPCServerChannel> NewChannel(bool bIsPrimary);
void Dispatch(AuRPCServerChannel *channel,
const AuSPtr<AuRPCRequest> &request,
AuByteBuffer *buffer);
private:
friend struct AuRPCServerChannel;
friend struct AuRPCPipe;
AuRPC* parent;
AuSPtr<AuRPCServerChannel> channel;
AuAsync::WorkerPId_t worker;
AuRWLock lock;
AuHashMap<AuUInt32, AuSPtr<AuIRPCService>> serviceTable;
AuSPtr<AuIRPCServerCallbacks> pCallbacks;
};