The Winamp Remote Control suite
a remote control client and plugin for Winamp 2.x, 5.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ServerTester.cpp
Go to the documentation of this file.
1 /*
2  * ServerTester.cpp
3  *
4  * Created on: 12 Feb 2012
5  * Author: Patrick
6  */
7 
8 #include "ServerTester.h"
9 #include "RPCBind.h"
10 #include "RPCException.h"
11 #include "waint.h"
12 #include "WinampClientBase.h"
13 
14 ServerTester::ServerTester() : _endPoint("\\pipe\\winampremote"),
15  _abort(false)
16 
17 {
18  // constructor
19 
20 }
21 
23 {
24  // destructor
25 }
26 
27 void ServerTester::DoMessage(const AnsiString& remoteName,
28  const AnsiString& data,
29  const int level)
30 {
31  // TODO: handle dispatching this
32 }
33 
34 void ServerTester::DoResult(const AnsiString& remoteName, const bool success)
35 {
36  // TODO: handle dispatching this
37 }
38 
39 void ServerTester::testServers(std::map<AnsiString, ServerInfo>& servers)
40 {
41 
42  for (map<AnsiString, ServerInfo>::iterator i = servers.begin();
43  !_abort && (i != servers.end());
44  ++i)
45  {
46  pair<AnsiString, ServerInfo> remote = *i;
47  testServer(remote.first, remote.second);
48 
49  }
50  }
51 
52 void ServerTester::testServer(const AnsiString& remote, ServerInfo& serverInfo)
53 {
54  int retval;
55 
56  clock_t start, end;
57  bool result = false;
58  string versionString;
59 
60  // static method from RPCFuncs
61  Bind(remote.c_str(), _endPoint.c_str(), pszProtocolSequenceNP);
62  try
63  {
64  DoMessage(remote, "beginning", 1);
65  start = clock();
66 
68 
69 
70  retval = client.winampVersion();
71 
72  end = clock();
73  DoMessage(remote, AnsiString().sprintf("response after %.2fs ", (end - start) / CLK_TCK), 1);
74  versionString = WinampVersionString(retval);
75  DoMessage(remote, WinampVersionString(retval), 1);
76  result = true;
77  }
78  catch( ERPCException& E)
79  {
80  DoMessage(remote, AnsiString("failed: " ) + E.what(), 3);
81  }
82  DoResult(remote, result);
83  serverInfo.comment = versionString.c_str();
84  serverInfo.status = (result)?SI_SUCCESS:SI_FAILED;
85 
86 }