summaryrefslogtreecommitdiff
path: root/orkbasecxx
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2007-02-07 19:49:16 +0000
committerHenri Herscher <henri@oreka.org>2007-02-07 19:49:16 +0000
commitb13c688b135bb2328d6aba83681bd0caeb1424f3 (patch)
treec938ed665bd47e771eb92a11da5c42796d3c2c63 /orkbasecxx
parentbd40f20a3945b421f8b3cd3c8056da3a869daeac (diff)
Added tcpping command in order to test DNS/TCP/IP connectivity from orkaudio to another network location.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@402 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkbasecxx')
-rw-r--r--orkbasecxx/messages/PingMsg.cpp55
-rw-r--r--orkbasecxx/messages/PingMsg.h14
2 files changed, 69 insertions, 0 deletions
diff --git a/orkbasecxx/messages/PingMsg.cpp b/orkbasecxx/messages/PingMsg.cpp
index 1f90bbe..e75beb8 100644
--- a/orkbasecxx/messages/PingMsg.cpp
+++ b/orkbasecxx/messages/PingMsg.cpp
@@ -11,6 +11,9 @@
*
*/
+#include "ace/INET_Addr.h"
+#include "ace/SOCK_Connector.h"
+#include "ace/SOCK_Stream.h"
#include "PingMsg.h"
#define PING_CLASS "ping"
@@ -58,3 +61,55 @@ ObjectRef PingMsg::Process()
return ref;
}
+//===============================
+#define TCP_PING_CLASS "tcpping"
+
+void TcpPingMsg::Define(Serializer* s)
+{
+ CStdString tcpPingClass(TCP_PING_CLASS);
+ s->StringValue(OBJECT_TYPE_TAG, tcpPingClass, true);
+ s->StringValue("hostname", m_hostname, true);
+ s->IntValue("port", (int&)m_port, true);
+}
+
+
+CStdString TcpPingMsg::GetClassName()
+{
+ return CStdString(TCP_PING_CLASS);
+}
+
+ObjectRef TcpPingMsg::NewInstance()
+{
+ return ObjectRef(new TcpPingMsg);
+}
+
+ObjectRef TcpPingMsg::Process()
+{
+ bool success = true;
+ CStdString logMsg;
+ ACE_SOCK_Connector connector;
+ ACE_SOCK_Stream peer;
+ ACE_INET_Addr peer_addr;
+ ACE_Time_Value aceTimeout (5);
+
+ if (peer_addr.set (m_port, (PCSTR)m_hostname) == -1)
+ {
+ logMsg.Format("peer_addr.set() errno=%d", errno);
+ success = false;
+ }
+ else if (connector.connect (peer, peer_addr, &aceTimeout) == -1)
+ {
+ if (errno == ETIME)
+ {
+ }
+ logMsg.Format("connector.connect() errno=%d", errno);
+ success = false;
+ }
+
+ SimpleResponseMsg* msg = new SimpleResponseMsg;
+ ObjectRef ref(msg);
+ msg->m_success = success;
+ msg->m_comment = logMsg;
+ return ref;
+}
+
diff --git a/orkbasecxx/messages/PingMsg.h b/orkbasecxx/messages/PingMsg.h
index 52a46c4..71ab240 100644
--- a/orkbasecxx/messages/PingMsg.h
+++ b/orkbasecxx/messages/PingMsg.h
@@ -42,5 +42,19 @@ public:
ObjectRef Process();
};
+class DLL_IMPORT_EXPORT_ORKBASE TcpPingMsg : public SyncMessage
+{
+public:
+ void Define(Serializer* s);
+ inline void Validate() {};
+
+ CStdString GetClassName();
+ ObjectRef NewInstance();
+ ObjectRef Process();
+
+ CStdString m_hostname;
+ int m_port;
+};
+
#endif