AuroraRPC/Source/AuRPCServer.hpp
2022-07-02 23:13:53 +01:00

33 lines
871 B
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;
AuString ExportString() override;
AuSPtr<AuRPCServerChannel> ToPrimaryChannel();
AuSPtr<AuRPCServerChannel> NewChannel();
void Dispatch(AuRPCServerChannel *channel,
const AuSPtr<AuRPCRequest> &request,
AuByteBuffer *buffer);
private:
AuRPC* parent;
AuSPtr<AuRPCServerChannel> channel;
AuAsync::WorkerPId_t worker;
AuThreadPrimitives::RWLockUnique_t lock;
AuHashMap<AuUInt32, AuSPtr<AuIRPCService>> serviceTable;
};