m_SendQueue = make_shared<FIFO>();
m_RecvQueue = make_shared<FIFO>();
-
- m_PeerPort = 0;
}
TCPClientRole TCPClient::GetRole(void) const
}
m_Role = RoleOutbound;
- m_PeerHost = hostname;
- m_PeerPort = port;
}
FIFO::Ptr TCPClient::GetSendQueue(void)
return m_RecvQueue;
}
-
-string TCPClient::GetPeerHost(void)
-{
- return m_PeerHost;
-}
-
-int TCPClient::GetPeerPort(void)
-{
- return m_PeerPort;
-}
-
int TCPClient::ReadableEventHandler(const EventArgs& ea)
{
int rc;
private:
TCPClientRole m_Role;
- string m_PeerHost;
- int m_PeerPort;
-
FIFO::Ptr m_SendQueue;
FIFO::Ptr m_RecvQueue;
FIFO::Ptr GetSendQueue(void);
FIFO::Ptr GetRecvQueue(void);
- string GetPeerHost(void);
- int GetPeerPort(void);
-
virtual bool WantsToRead(void) const;
virtual bool WantsToWrite(void) const;
else
IpAddress = &(((sockaddr_in6 *)address)->sin6_addr);
- if (inet_ntop(address->sa_family, address, buffer, sizeof(buffer)) == NULL)
+ if (inet_ntop(address->sa_family, IpAddress, buffer, sizeof(buffer)) == NULL)
return string();
#endif /* _WIN32 */
}
}
-void TCPSocket::GetClientSockaddr(sockaddr_storage *address)
+bool TCPSocket::GetClientSockaddr(sockaddr_storage *address)
{
socklen_t len = sizeof(*address);
- if (getsockname(GetFD(), (sockaddr *)address, &len) < 0)
+ if (getsockname(GetFD(), (sockaddr *)address, &len) < 0) {
HandleSocketError();
+
+ return false;
+ }
+
+ return true;
}
-void TCPSocket::GetPeerSockaddr(sockaddr_storage *address)
+bool TCPSocket::GetPeerSockaddr(sockaddr_storage *address)
{
socklen_t len = sizeof(*address);
- if (getpeername(GetFD(), (sockaddr *)address, &len) < 0)
+ if (getpeername(GetFD(), (sockaddr *)address, &len) < 0) {
HandleSocketError();
+
+ return false;
+ }
+
+ return true;
}
string TCPSocket::GetClientAddress(void)
{
sockaddr_storage sin;
- GetClientSockaddr(&sin);
+ if (!GetClientSockaddr(&sin))
+ return "";
return GetAddressFromSockaddr((sockaddr *)&sin);
}
{
sockaddr_storage sin;
- GetPeerSockaddr(&sin);
+ if (!GetPeerSockaddr(&sin))
+ return "";
return GetAddressFromSockaddr((sockaddr *)&sin);
}
void Bind(unsigned short port);
void Bind(const char *hostname, unsigned short port);
- void GetClientSockaddr(sockaddr_storage *address);
- void GetPeerSockaddr(sockaddr_storage *address);
+ bool GetClientSockaddr(sockaddr_storage *address);
+ bool GetPeerSockaddr(sockaddr_storage *address);
string GetClientAddress(void);
string GetPeerAddress(void);
void EndpointManager::AddListener(unsigned short port)
{
- Application::Log("Adding new listener: port " + port);
+ stringstream s;
+ s << "Adding new listener: port " << port;
+ Application::Log(s.str());
JsonRpcServer::Ptr server = make_shared<JsonRpcServer>(m_SSLContext);
RegisterServer(server);
void JsonRpcEndpoint::Connect(string host, unsigned short port, shared_ptr<SSL_CTX> sslContext)
{
+ m_PeerHostname = host;
+ m_PeerPort = port;
+
JsonRpcClient::Ptr client = make_shared<JsonRpcClient>(RoleOutbound, sslContext);
client->MakeSocket();
client->Connect(host, port);
m_PendingCalls.clear();
- if (m_Client->GetPeerHost() != string()) {
+ if (m_PeerHostname != string()) {
Timer::Ptr timer = make_shared<Timer>();
timer->SetInterval(30);
timer->SetUserArgs(ea);
JsonRpcClient::Ptr client = static_pointer_cast<JsonRpcClient>(ea.UserArgs.Source);
Timer::Ptr timer = static_pointer_cast<Timer>(ea.Source);
- GetEndpointManager()->AddConnection(client->GetPeerHost(), client->GetPeerPort());
+ GetEndpointManager()->AddConnection(m_PeerHostname, m_PeerPort);
timer->Stop();
m_ReconnectTimer.reset();
set<string> m_AllowedMethodSinkPrefixes;
set<string> m_AllowedMethodSourcePrefixes;
+ string m_PeerHostname;
+ unsigned short m_PeerPort;
+
bool IsConnected(void) const;
int NewMessageHandler(const NewMessageEventArgs& nmea);