PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
IRpcTransport.h
Go to the documentation of this file.
1#include <asio.hpp>
2#include <chrono>
3
4#include "profinet/protocol.h"
5namespace profinet::rpc
6{
8{
9 public:
10 virtual ~IRpcTransport() = default;
11
12 virtual Bytes SendReceive(const profinet::Bytes& request, std::chrono::milliseconds timeout) = 0;
13
14 virtual void Send(const Bytes& request) = 0;
15
20 virtual void Open(const std::string& address, std::uint16_t port, bool isListener = false) = 0;
21
26 virtual Bytes Receive(std::chrono::milliseconds timeout, asio::ip::udp::endpoint& remoteEndpoint) = 0;
27
31 virtual void SendTo(const Bytes& data, const asio::ip::udp::endpoint& targetEndpoint) = 0;
32
34 virtual void Close() noexcept = 0;
35};
36} // namespace profinet::rpc
virtual void Close() noexcept=0
Close the transport.
virtual Bytes SendReceive(const profinet::Bytes &request, std::chrono::milliseconds timeout)=0
virtual Bytes Receive(std::chrono::milliseconds timeout, asio::ip::udp::endpoint &remoteEndpoint)=0
Wait for an incoming byte array and capture the sender's endpoint.
virtual void SendTo(const Bytes &data, const asio::ip::udp::endpoint &targetEndpoint)=0
Send a byte array of data to a specific remote asio endpoint.
virtual void Send(const Bytes &request)=0
virtual void Open(const std::string &address, std::uint16_t port, bool isListener=false)=0
Open the transport and configure the remote endpoint.
virtual ~IRpcTransport()=default
std::vector< std::uint8_t > Bytes
Generic byte buffer alias used throughout the library for raw wire data.
Definition protocol.h:55
PROFINET protocol wire-format structures and serialization helpers.
asio::ip::udp::endpoint remoteEndpoint