CIRCT 23.0.0git
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
esi::backends::cosim::RpcClient::Impl Class Reference
Collaboration diagram for esi::backends::cosim::RpcClient::Impl:
Collaboration graph
[legend]

Classes

struct  ChannelMeta
 
struct  ReadCallbackEntry
 

Public Member Functions

 Impl (Logger &logger, const std::string &hostname, uint16_t port)
 
 ~Impl ()
 
LoggergetLogger ()
 
uint32_t getEsiVersion () const
 
std::vector< uint8_t > getCompressedManifest () const
 
bool getChannelDesc (const std::string &name, RpcClient::ChannelDesc &desc) const
 
std::vector< RpcClient::ChannelDesclistChannels () const
 
void writeToServer (const std::string &channelName, const MessageData &data)
 
std::unique_ptr< RpcClient::ReadChannelConnectionconnectClientReceiver (const std::string &channelName, RpcClient::ReadCallback callback)
 
void unsubscribe (uint64_t channelId)
 
void unregisterCallback (uint64_t channelId)
 

Private Types

enum class  OpenState
 

Private Member Functions

void onMessage (const ix::WebSocketMessagePtr &msg)
 
void handleControlFrame (const std::string &text)
 
void handleBinaryFrame (const std::string &data)
 
void failAllPending (const std::string &reason)
 
json call (const std::string &method, json params)
 Issue a JSON-RPC style request and synchronously await the response.
 
void transportLoop ()
 

Private Attributes

std::string host
 
Loggerlogger
 
ix::WebSocket ws
 
uint32_t esiVersion = 0
 
std::vector< uint8_t > manifest
 
std::unordered_map< std::string, ChannelMetachannelsByName
 
std::unordered_map< uint64_t, ChannelMetachannelsById
 
std::mutex pendingMutex
 
std::atomic< uint64_t > nextRequestId {1}
 
std::unordered_map< uint64_t, std::shared_ptr< std::promise< json > > > pending
 
std::mutex readCallbacksMutex
 
std::unordered_map< uint64_t, std::shared_ptr< ReadCallbackEntry > > readCallbacks
 
utils::ReadyIdSet< uint64_t > readyIds
 
std::thread transportThread
 
std::mutex openMutex
 
std::condition_variable openCV
 
enum RpcClient::Impl::OpenState Pending
 
std::string openError
 
std::mutex lastServerErrorMutex
 
std::string lastServerError
 
std::atomic< bool > disconnecting {false}
 
::esi::cosim::FaultStash faultStash
 

Detailed Description

Definition at line 53 of file RpcClient.cpp.

Member Enumeration Documentation

◆ OpenState

enum class RpcClient::Impl::OpenState
strongprivate

Definition at line 156 of file RpcClient.cpp.

Constructor & Destructor Documentation

◆ Impl()

esi::backends::cosim::RpcClient::Impl::Impl ( Logger logger,
const std::string &  hostname,
uint16_t  port 
)

◆ ~Impl()

esi::backends::cosim::RpcClient::Impl::~Impl ( )

Definition at line 282 of file RpcClient.cpp.

Member Function Documentation

◆ call()

json esi::backends::cosim::RpcClient::Impl::call ( const std::string &  method,
json  params 
)
private

Issue a JSON-RPC style request and synchronously await the response.

Throws on error (transport or server-reported).

Definition at line 504 of file RpcClient.cpp.

References esi::backends::cosim::RpcClient::Impl::call().

Referenced by esiaccel.types.FunctionPort::__call__(), esi::backends::cosim::RpcClient::Impl::call(), and esi::backends::cosim::RpcClient::Impl::Impl().

◆ connectClientReceiver()

std::unique_ptr< RpcClient::ReadChannelConnection > esi::backends::cosim::RpcClient::Impl::connectClientReceiver ( const std::string &  channelName,
RpcClient::ReadCallback  callback 
)

◆ failAllPending()

void esi::backends::cosim::RpcClient::Impl::failAllPending ( const std::string &  reason)
private

◆ getChannelDesc()

bool esi::backends::cosim::RpcClient::Impl::getChannelDesc ( const std::string &  name,
RpcClient::ChannelDesc desc 
) const

◆ getCompressedManifest()

std::vector< uint8_t > esi::backends::cosim::RpcClient::Impl::getCompressedManifest ( ) const
inline

Definition at line 61 of file RpcClient.cpp.

References esi::backends::cosim::RpcClient::Impl::manifest.

◆ getEsiVersion()

uint32_t esi::backends::cosim::RpcClient::Impl::getEsiVersion ( ) const
inline

Definition at line 60 of file RpcClient.cpp.

References esi::backends::cosim::RpcClient::Impl::esiVersion.

◆ getLogger()

Logger & esi::backends::cosim::RpcClient::Impl::getLogger ( )
inline

Definition at line 58 of file RpcClient.cpp.

References esi::backends::cosim::RpcClient::Impl::logger.

◆ handleBinaryFrame()

void esi::backends::cosim::RpcClient::Impl::handleBinaryFrame ( const std::string &  data)
private

Definition at line 453 of file RpcClient.cpp.

References esi::cosim::parseDataFrame(), and esi::Logger::warning().

◆ handleControlFrame()

void esi::backends::cosim::RpcClient::Impl::handleControlFrame ( const std::string &  text)
private

Definition at line 373 of file RpcClient.cpp.

References esi::Logger::debug().

◆ listChannels()

std::vector< RpcClient::ChannelDesc > esi::backends::cosim::RpcClient::Impl::listChannels ( ) const

◆ onMessage()

void esi::backends::cosim::RpcClient::Impl::onMessage ( const ix::WebSocketMessagePtr &  msg)
private

◆ transportLoop()

void esi::backends::cosim::RpcClient::Impl::transportLoop ( )
private

Definition at line 668 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ unregisterCallback()

void esi::backends::cosim::RpcClient::Impl::unregisterCallback ( uint64_t  channelId)

◆ unsubscribe()

void esi::backends::cosim::RpcClient::Impl::unsubscribe ( uint64_t  channelId)

◆ writeToServer()

void esi::backends::cosim::RpcClient::Impl::writeToServer ( const std::string &  channelName,
const MessageData data 
)

Member Data Documentation

◆ channelsById

std::unordered_map<uint64_t, ChannelMeta> esi::backends::cosim::RpcClient::Impl::channelsById
private

Definition at line 105 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ channelsByName

std::unordered_map<std::string, ChannelMeta> esi::backends::cosim::RpcClient::Impl::channelsByName
private

Definition at line 104 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ disconnecting

std::atomic<bool> esi::backends::cosim::RpcClient::Impl::disconnecting {false}
private

Definition at line 166 of file RpcClient.cpp.

◆ esiVersion

uint32_t esi::backends::cosim::RpcClient::Impl::esiVersion = 0
private

◆ faultStash

::esi::cosim::FaultStash esi::backends::cosim::RpcClient::Impl::faultStash
private

Definition at line 170 of file RpcClient.cpp.

◆ host

std::string esi::backends::cosim::RpcClient::Impl::host
private

Definition at line 97 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ lastServerError

std::string esi::backends::cosim::RpcClient::Impl::lastServerError
private

Definition at line 164 of file RpcClient.cpp.

◆ lastServerErrorMutex

std::mutex esi::backends::cosim::RpcClient::Impl::lastServerErrorMutex
private

Definition at line 163 of file RpcClient.cpp.

◆ logger

Logger& esi::backends::cosim::RpcClient::Impl::logger
private

Definition at line 98 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::getLogger().

◆ manifest

std::vector<uint8_t> esi::backends::cosim::RpcClient::Impl::manifest
private

◆ nextRequestId

std::atomic<uint64_t> esi::backends::cosim::RpcClient::Impl::nextRequestId {1}
private

Definition at line 109 of file RpcClient.cpp.

◆ openCV

std::condition_variable esi::backends::cosim::RpcClient::Impl::openCV
private

Definition at line 155 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ openError

std::string esi::backends::cosim::RpcClient::Impl::openError
private

Definition at line 157 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ openMutex

std::mutex esi::backends::cosim::RpcClient::Impl::openMutex
private

Definition at line 154 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ pending

std::unordered_map<uint64_t, std::shared_ptr<std::promise<json> > > esi::backends::cosim::RpcClient::Impl::pending
private

Definition at line 110 of file RpcClient.cpp.

◆ Pending

enum RpcClient::Impl::OpenState esi::backends::cosim::RpcClient::Impl::Pending
private

◆ pendingMutex

std::mutex esi::backends::cosim::RpcClient::Impl::pendingMutex
private

Definition at line 108 of file RpcClient.cpp.

◆ readCallbacks

std::unordered_map<uint64_t, std::shared_ptr<ReadCallbackEntry> > esi::backends::cosim::RpcClient::Impl::readCallbacks
private

Definition at line 143 of file RpcClient.cpp.

◆ readCallbacksMutex

std::mutex esi::backends::cosim::RpcClient::Impl::readCallbacksMutex
private

Definition at line 141 of file RpcClient.cpp.

◆ readyIds

utils::ReadyIdSet<uint64_t> esi::backends::cosim::RpcClient::Impl::readyIds
private

Definition at line 147 of file RpcClient.cpp.

◆ transportThread

std::thread esi::backends::cosim::RpcClient::Impl::transportThread
private

Definition at line 148 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().

◆ ws

ix::WebSocket esi::backends::cosim::RpcClient::Impl::ws
private

Definition at line 99 of file RpcClient.cpp.

Referenced by esi::backends::cosim::RpcClient::Impl::Impl().


The documentation for this class was generated from the following file: