class ugcs::vsm::Socket_processor::Stream¶
Overview¶
Socket specific stream. More…
#include <socket_processor.h> class Stream: public ugcs::vsm::Io_stream { public: // typedefs typedef std::shared_ptr<Stream> Ptr; typedef std::weak_ptr<Stream> Weak_ptr; typedef Reference_guard<Stream::Ptr> Ref; typedef Callback_proxy<void, Io_buffer::Ptr, Io_result, Socket_address::Ptr> Read_from_handler; typedef std::unique_ptr<std::vector<uint8_t>> Buf_ptr; // classes template <typename T> class Circular_buffer; // construction template <typename... Args> Stream( Socket_processor::Ptr processor, Args&&... args ); // methods template <typename... Args> static Ptr Create(Args&&... args); void Set_state(Io_stream::State state); void Set_connect_request(Io_request::Ptr request); void Close_socket(); Io_request::Ptr Get_connect_request(); void Abort_pending_requests(Io_result result = Io_result::CLOSED); virtual Operation_waiter Read_from(size_t max_to_read, Read_from_handler completion_handler, Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create()); virtual Operation_waiter Write_to(Io_buffer::Ptr, Socket_address::Ptr dest_addr, Write_handler completion_handler, Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create()); Socket_address::Ptr Get_peer_address(); void Set_peer_address(Socket_address::Ptr); Socket_address::Ptr Get_local_address(); bool Add_multicast_group( Socket_address::Ptr interface, Socket_address::Ptr multicast ); bool Remove_multicast_group( Socket_address::Ptr interface, Socket_address::Ptr multicast ); bool Enable_broadcast(bool enable); };
Inherited Members¶
public: // typedefs typedef std::shared_ptr<Io_stream> Ptr; typedef std::weak_ptr<Io_stream> Weak_ptr; typedef Reference_guard<Io_stream::Ptr> Ref; typedef int64_t Offset; typedef Callback_proxy<void, Io_result> Write_handler; typedef Callback_proxy<void, Io_buffer::Ptr, Io_result> Read_handler; typedef Callback_proxy<void> Close_handler; // enums enum State; enum Type; // fields static const Offset OFFSET_NONE; static const Offset OFFSET_END; // methods template <typename... Args> static Ptr Create(Args&&... args); static const char* Io_result_as_char(const Io_result res); void Add_ref(); void Release_ref(); Operation_waiter Write(Io_buffer::Ptr buffer, Offset offset, Write_handler completion_handler = Make_dummy_callback<void, Io_result>(), Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create()); Operation_waiter Write(Io_buffer::Ptr buffer, Write_handler completion_handler = Make_dummy_callback<void, Io_result>(), Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create()); Operation_waiter Read( size_t max_to_read, size_t min_to_read, Offset offset, Read_handler completion_handler = Make_dummy_callback<void, Io_buffer::Ptr, Io_result>(), Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create() ); Operation_waiter Read( size_t max_to_read, size_t min_to_read = 1, Read_handler completion_handler = Make_dummy_callback<void, Io_buffer::Ptr, Io_result>(), Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create() ); Operation_waiter Close(Close_handler completion_handler = Make_dummy_callback<void>(), Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create()); State Get_state() const; bool Is_closed() const; std::string Get_name() const; Type Get_type() const;
Detailed Documentation¶
Socket specific stream.
Typedefs¶
typedef std::shared_ptr<Stream> Ptr
Pointer type.
typedef std::weak_ptr<Stream> Weak_ptr
Pointer type.
typedef Callback_proxy<void, Io_buffer::Ptr, Io_result, Socket_address::Ptr> Read_from_handler
Default prototype for read operation completion handler.
Methods¶
template <typename... Args> static Ptr Create(Args&&... args)
Create an instance.
virtual Operation_waiter Read_from(size_t max_to_read, Read_from_handler completion_handler, Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create())
Used to read from udp socket.
Wrapper for recvfrom() call completion handler has source address as parameters. It can be used to subsequent Write_to() calls.
virtual Operation_waiter Write_to( Io_buffer::Ptr, Socket_address::Ptr dest_addr, Write_handler completion_handler, Request_completion_context::Ptr comp_ctx = Request_temp_completion_context::Create() )
Used to write to udp socket.
Wrapper for sendto() call.