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
 
virtual void sendToPeer (const char *chunk, std::size_t chunkLen) const=0
 
- 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 60 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

Definition at line 54 of file EchoSocketContext.cpp.

References role, and core::socket::stream::SocketContext::SocketContext().

Referenced by apps::echo::model::EchoServerSocketContextFactory::create(), and apps::echo::model::EchoClientSocketContextFactory::create().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ onConnected()

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

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

Definition at line 59 of file EchoSocketContext.cpp.

59 {
60 VLOG(1) << "Echo connected";
61
62 if (role == Role::CLIENT) {
63 sendToPeer("Hello peer! Nice to see you!!!");
64 }
65 }
void sendToPeer(const char *chunk, std::size_t chunkLen) const final

References CLIENT, role, and core::socket::SocketContext::sendToPeer().

Here is the call graph for this function:

◆ onDisconnected()

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

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

Definition at line 67 of file EchoSocketContext.cpp.

67 {
68 VLOG(1) << "Echo disconnected";
69 }

◆ onReceivedFromPeer()

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

Implements core::socket::SocketContext.

Definition at line 75 of file EchoSocketContext.cpp.

75 {
76 char chunk[4096];
77
78 const std::size_t chunklen = readFromPeer(chunk, 4096);
79
80 if (chunklen > 0) {
81 VLOG(1) << "Data to reflect: " << std::string(chunk, chunklen);
82 sendToPeer(chunk, chunklen);
83 }
84
85 return chunklen;
86 }
std::size_t readFromPeer(char *chunk, std::size_t chunklen) const final

References core::socket::stream::SocketContext::readFromPeer(), and core::socket::stream::SocketContext::sendToPeer().

Here is the call graph for this function:

◆ onSignal()

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

Implements core::socket::SocketContext.

Definition at line 71 of file EchoSocketContext.cpp.

71 {
72 return true;
73 }

Member Data Documentation

◆ role

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

Definition at line 74 of file EchoSocketContext.h.

Referenced by EchoSocketContext(), and onConnected().


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