SNode.C
Loading...
Searching...
No Matches
apps::echo::model::EchoSocketContext Class Reference

#include <EchoSocketContext.h>

Inheritance diagram for apps::echo::model::EchoSocketContext:
Collaboration diagram for apps::echo::model::EchoSocketContext:

Public Types

enum class  Role { SERVER , CLIENT }
 

Public Member Functions

 EchoSocketContext (core::socket::stream::SocketConnection *socketConnection, Role role)
 
- Public Member Functions inherited from core::socket::stream::SocketContext
 SocketContext (core::socket::stream::SocketConnection *socketConnection)
 
void sendToPeer (const char *chunk, std::size_t chunkLen) const final
 
bool streamToPeer (core::pipe::Source *source) const
 
void streamEof ()
 
std::size_t readFromPeer (char *chunk, std::size_t chunklen) const final
 
void setTimeout (const utils::Timeval &timeout) final
 
void shutdownRead ()
 
void shutdownWrite (bool forceClose=false)
 
void close () override
 
SocketConnectiongetSocketConnection () const
 
virtual void switchSocketContext (SocketContext *newSocketContext)
 
void sendToPeer (const std::string &data) const
 
- Public Member Functions inherited from core::socket::SocketContext
 SocketContext (const SocketContext &)=delete
 
 SocketContext (SocketContext &&)=delete
 
SocketContextoperator= (const SocketContext &)=delete
 
SocketContextoperator= (SocketContext &&)=delete
 
void sendToPeer (const std::string &data) const
 

Private Member Functions

void onConnected () override
 
void onDisconnected () override
 
bool onSignal (int signum) override
 
std::size_t onReceivedFromPeer () override
 

Private Attributes

Role role
 

Additional Inherited Members

- Protected Member Functions inherited from core::socket::stream::SocketContext
void onWriteError (int errnum) override
 
void onReadError (int errnum) override
 
- Protected Member Functions inherited from core::socket::SocketContext
 SocketContext ()=default
 
virtual ~SocketContext ()
 

Detailed Description

Definition at line 38 of file EchoSocketContext.h.

Member Enumeration Documentation

◆ Role

Constructor & Destructor Documentation

◆ EchoSocketContext()

apps::echo::model::EchoSocketContext::EchoSocketContext ( core::socket::stream::SocketConnection * socketConnection,
Role role )
explicit

Member Function Documentation

◆ onConnected()

void apps::echo::model::EchoSocketContext::onConnected ( )
overrideprivatevirtual

Implements core::socket::stream::SocketContext.

Definition at line 37 of file EchoSocketContext.cpp.

37 {
38 VLOG(1) << "Echo connected";
39
40 if (role == Role::CLIENT) {
41 sendToPeer("Hello peer! Nice to see you!!!");
42 }
43 }
void sendToPeer(const char *chunk, std::size_t chunkLen) const final

◆ onDisconnected()

void apps::echo::model::EchoSocketContext::onDisconnected ( )
overrideprivatevirtual

Implements core::socket::stream::SocketContext.

Definition at line 45 of file EchoSocketContext.cpp.

45 {
46 VLOG(1) << "Echo disconnected";
47 }

◆ onReceivedFromPeer()

std::size_t apps::echo::model::EchoSocketContext::onReceivedFromPeer ( )
overrideprivatevirtual

Implements core::socket::SocketContext.

Definition at line 53 of file EchoSocketContext.cpp.

53 {
54 char chunk[4096];
55
56 const std::size_t chunklen = readFromPeer(chunk, 4096);
57
58 if (chunklen > 0) {
59 VLOG(1) << "Data to reflect: " << std::string(chunk, chunklen);
60 sendToPeer(chunk, chunklen);
61 }
62
63 return chunklen;
64 }
std::size_t readFromPeer(char *chunk, std::size_t chunklen) const final

◆ onSignal()

bool apps::echo::model::EchoSocketContext::onSignal ( int signum)
overrideprivatevirtual

Implements core::socket::SocketContext.

Definition at line 49 of file EchoSocketContext.cpp.

49 {
50 return true;
51 }

Member Data Documentation

◆ role

Role apps::echo::model::EchoSocketContext::role
private

Definition at line 52 of file EchoSocketContext.h.


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