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

52 lines
1.4 KiB
C++

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuRPCClientChannel.hpp
Date: 2022-6-29
Author: Reece
***/
#pragma once
#include "AuRPCChannel.hpp"
#include "AuRPCPipe.hpp"
struct AuRPCClientChannel :
AuRPCChannel,
AuIRPCClientChannel,
AuEnableSharedFromThis<AuRPCClientChannel>
{
AuRPCClientChannel(AuSPtr<AuRPC> parent);
bool Init(const AuString& ipc);
void Finalize();
void Disconnect() override;
void SendRequest(AuSPtr<AuIRPCRequest> response) override;
void FatalIOError();
virtual AuUInt64 GetConnectTimeNS() override;
virtual void SendMessage(const AuMemoryViewRead &view) override;
virtual AuSPtr<AuRPC> ToContext() override;
virtual bool OnConnect() override;
virtual void OnDisconnect(bool error) override;
virtual bool OnDataAvailable(AuByteBuffer& view) override;
void ProcessConnectionOK();
void ProcessResponse(const AuSPtr<AuRPCResponse>& response);
AuList<AuSPtr<AuRPCRequest>> outstandingRequests;
virtual bool IsConnected() override;
virtual void SetCallbacks(const AuSPtr<AuIRPCChannelCallbacks> &callbacks) override;
private:
bool bConnectingAlternate_{};
bool bConnected_{};
bool bIsDead_ {};
AuSPtr<AuIRPCChannelCallbacks> callbacks_;
AuRPCPipe pipe_;
AuSPtr<AuRPC> parent_;
AuUInt64 uConnectTime_ {};
};