AuroraRPC/Source/AuRPCServer.hpp

40 lines
1.2 KiB
C++
Raw Normal View History

2022-07-02 22:08:52 +00:00
/***
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;
2022-07-02 22:08:52 +00:00
AuString ExportToString() override;
2022-07-02 22:08:52 +00:00
AuSPtr<AuRPCServerChannel> ToPrimaryChannel();
AuSPtr<AuRPCServerChannel> NewChannel(bool bIsPrimary);
2022-07-02 22:08:52 +00:00
void Dispatch(AuRPCServerChannel *channel,
const AuSPtr<AuRPCRequest> &request,
AuByteBuffer *buffer);
private:
friend struct AuRPCServerChannel;
friend struct AuRPCPipe;
2022-07-02 22:08:52 +00:00
AuRPC* parent;
AuSPtr<AuRPCServerChannel> channel;
AuAsync::WorkerPId_t worker;
AuRWLock lock;
2022-07-02 22:08:52 +00:00
AuHashMap<AuUInt32, AuSPtr<AuIRPCService>> serviceTable;
AuSPtr<AuIRPCServerCallbacks> pCallbacks;
2022-07-02 22:08:52 +00:00
};