[ros-ros-comm] 05/06: Shorten patch
Jochen Sprickerhof
jspricke at moszumanska.debian.org
Mon Sep 19 08:42:34 UTC 2016
This is an automated email from the git hooks/post-receive script.
jspricke pushed a commit to annotated tag debian/1.12.3-1
in repository ros-ros-comm.
commit 562b35c4a7f936b9a5c400c426120e4b6ba1092d
Author: Jochen Sprickerhof <git at jochen.sprickerhof.de>
Date: Mon Sep 19 10:40:14 2016 +0200
Shorten patch
---
.../0007-move-heaers-to-include-xmlrpcpp.patch | 3376 ++------------------
1 file changed, 236 insertions(+), 3140 deletions(-)
diff --git a/debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch b/debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch
index 510234d..15ecad5 100644
--- a/debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch
+++ b/debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch
@@ -3,95 +3,69 @@ Date: Sat, 16 Jan 2016 11:56:42 +0100
Subject: move heaers to include/xmlrpcpp
---
- clients/roscpp/include/ros/master.h | 2 +-
- clients/roscpp/include/ros/node_handle.h | 2 +-
- clients/roscpp/include/ros/param.h | 2 +-
- clients/roscpp/include/ros/publication.h | 2 +-
- clients/roscpp/include/ros/service_publication.h | 2 +-
- clients/roscpp/include/ros/subscription.h | 2 +-
- clients/roscpp/include/ros/topic_manager.h | 2 +-
- clients/roscpp/include/ros/xmlrpc_manager.h | 2 +-
- clients/roscpp/src/libros/init.cpp | 2 +-
- clients/roscpp/src/libros/master.cpp | 2 +-
- clients/roscpp/src/libros/node_handle.cpp | 2 +-
- clients/roscpp/src/libros/service_manager.cpp | 2 +-
- clients/roscpp/src/libros/topic_manager.cpp | 2 +-
- test/test_roscpp/test/src/check_master.cpp | 2 +-
- tools/rosbag/src/recorder.cpp | 2 +-
- utilities/xmlrpcpp/CMakeLists.txt | 3 +-
- utilities/xmlrpcpp/include/XmlRpc.h | 102 ------
- utilities/xmlrpcpp/include/XmlRpcClient.h | 133 --------
- utilities/xmlrpcpp/include/XmlRpcDecl.h | 55 ---
- utilities/xmlrpcpp/include/XmlRpcDispatch.h | 89 -----
- utilities/xmlrpcpp/include/XmlRpcException.h | 44 ---
- utilities/xmlrpcpp/include/XmlRpcServer.h | 114 -------
- .../xmlrpcpp/include/XmlRpcServerConnection.h | 103 ------
- utilities/xmlrpcpp/include/XmlRpcServerMethod.h | 49 ---
- utilities/xmlrpcpp/include/XmlRpcSocket.h | 80 -----
- utilities/xmlrpcpp/include/XmlRpcSource.h | 57 ----
- utilities/xmlrpcpp/include/XmlRpcUtil.h | 63 ----
- utilities/xmlrpcpp/include/XmlRpcValue.h | 195 -----------
- utilities/xmlrpcpp/include/base64.h | 380 ---------------------
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h | 102 ++++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h | 133 ++++++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h | 55 +++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h | 89 +++++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcException.h | 44 +++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h | 114 +++++++
- .../include/xmlrpcpp/XmlRpcServerConnection.h | 103 ++++++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h | 49 +++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h | 80 +++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h | 57 ++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h | 63 ++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h | 195 +++++++++++
- utilities/xmlrpcpp/include/xmlrpcpp/base64.h | 380 +++++++++++++++++++++
- utilities/xmlrpcpp/src/XmlRpcClient.cpp | 6 +-
- utilities/xmlrpcpp/src/XmlRpcDispatch.cpp | 6 +-
- utilities/xmlrpcpp/src/XmlRpcServer.cpp | 12 +-
- utilities/xmlrpcpp/src/XmlRpcServerConnection.cpp | 6 +-
- utilities/xmlrpcpp/src/XmlRpcServerMethod.cpp | 4 +-
- utilities/xmlrpcpp/src/XmlRpcSocket.cpp | 4 +-
- utilities/xmlrpcpp/src/XmlRpcSource.cpp | 6 +-
- utilities/xmlrpcpp/src/XmlRpcUtil.cpp | 4 +-
- utilities/xmlrpcpp/src/XmlRpcValue.cpp | 8 +-
- utilities/xmlrpcpp/test/FileClient.cpp | 2 +-
- utilities/xmlrpcpp/test/HelloClient.cpp | 2 +-
- utilities/xmlrpcpp/test/HelloServer.cpp | 2 +-
- utilities/xmlrpcpp/test/TestBase64Client.cpp | 2 +-
- utilities/xmlrpcpp/test/TestBase64Server.cpp | 2 +-
- utilities/xmlrpcpp/test/TestValues.cpp | 2 +-
- utilities/xmlrpcpp/test/TestValuesWin32.cpp | 2 +-
- utilities/xmlrpcpp/test/TestXml.cpp | 2 +-
- utilities/xmlrpcpp/test/Validator.cpp | 2 +-
- utilities/xmlrpcpp/test/bool_test.cpp | 2 +-
- utilities/xmlrpcpp/test/port_zero_server.cpp | 2 +-
- 62 files changed, 1519 insertions(+), 1520 deletions(-)
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpc.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcClient.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcDecl.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcDispatch.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcException.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcServer.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcServerConnection.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcServerMethod.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcSocket.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcSource.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcUtil.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcValue.h
- delete mode 100644 utilities/xmlrpcpp/include/base64.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/base64.h
+ clients/roscpp/include/ros/master.h | 2 +-
+ clients/roscpp/include/ros/node_handle.h | 2 +-
+ clients/roscpp/include/ros/param.h | 2 +-
+ clients/roscpp/include/ros/publication.h | 2 +-
+ clients/roscpp/include/ros/service_publication.h | 2 +-
+ clients/roscpp/include/ros/subscription.h | 2 +-
+ clients/roscpp/include/ros/topic_manager.h | 2 +-
+ clients/roscpp/include/ros/xmlrpc_manager.h | 2 +-
+ clients/roscpp/src/libros/init.cpp | 2 +-
+ clients/roscpp/src/libros/master.cpp | 2 +-
+ clients/roscpp/src/libros/node_handle.cpp | 2 +-
+ clients/roscpp/src/libros/service_manager.cpp | 2 +-
+ clients/roscpp/src/libros/topic_manager.cpp | 2 +-
+ test/test_roscpp/test/src/check_master.cpp | 2 +-
+ tools/rosbag/src/recorder.cpp | 2 +-
+ utilities/xmlrpcpp/CMakeLists.txt | 3 +--
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpc.h | 12 ++++++------
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcClient.h | 6 +++---
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcDecl.h | 0
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcDispatch.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcException.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcServer.h | 6 +++---
+ .../xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcServerConnection.h | 6 +++---
+ .../xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcServerMethod.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcSocket.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcSource.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcUtil.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcValue.h | 2 +-
+ utilities/xmlrpcpp/include/{ => xmlrpcpp}/base64.h | 0
+ utilities/xmlrpcpp/src/XmlRpcClient.cpp | 6 +++---
+ utilities/xmlrpcpp/src/XmlRpcDispatch.cpp | 6 +++---
+ utilities/xmlrpcpp/src/XmlRpcServer.cpp | 12 ++++++------
+ utilities/xmlrpcpp/src/XmlRpcServerConnection.cpp | 6 +++---
+ utilities/xmlrpcpp/src/XmlRpcServerMethod.cpp | 4 ++--
+ utilities/xmlrpcpp/src/XmlRpcSocket.cpp | 4 ++--
+ utilities/xmlrpcpp/src/XmlRpcSource.cpp | 6 +++---
+ utilities/xmlrpcpp/src/XmlRpcUtil.cpp | 4 ++--
+ utilities/xmlrpcpp/src/XmlRpcValue.cpp | 8 ++++----
+ utilities/xmlrpcpp/test/FileClient.cpp | 2 +-
+ utilities/xmlrpcpp/test/HelloClient.cpp | 2 +-
+ utilities/xmlrpcpp/test/HelloServer.cpp | 2 +-
+ utilities/xmlrpcpp/test/TestBase64Client.cpp | 2 +-
+ utilities/xmlrpcpp/test/TestBase64Server.cpp | 2 +-
+ utilities/xmlrpcpp/test/TestValues.cpp | 2 +-
+ utilities/xmlrpcpp/test/TestValuesWin32.cpp | 2 +-
+ utilities/xmlrpcpp/test/TestXml.cpp | 2 +-
+ utilities/xmlrpcpp/test/Validator.cpp | 2 +-
+ utilities/xmlrpcpp/test/bool_test.cpp | 2 +-
+ utilities/xmlrpcpp/test/port_zero_server.cpp | 2 +-
+ 49 files changed, 77 insertions(+), 78 deletions(-)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpc.h (93%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcClient.h (97%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcDecl.h (100%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcDispatch.h (98%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcException.h (96%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcServer.h (96%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcServerConnection.h (96%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcServerMethod.h (97%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcSocket.h (98%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcSource.h (98%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcUtil.h (98%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/XmlRpcValue.h (99%)
+ rename utilities/xmlrpcpp/include/{ => xmlrpcpp}/base64.h (100%)
diff --git a/clients/roscpp/include/ros/master.h b/clients/roscpp/include/ros/master.h
index 9eefdf3..6cabd01 100644
@@ -198,7 +172,7 @@ index 7dc55ee..2dc5034 100644
#include <ros/time.h>
diff --git a/clients/roscpp/src/libros/init.cpp b/clients/roscpp/src/libros/init.cpp
-index 920e665..a122bfb 100644
+index 8837898..91e0a58 100644
--- a/clients/roscpp/src/libros/init.cpp
+++ b/clients/roscpp/src/libros/init.cpp
@@ -48,7 +48,7 @@
@@ -237,7 +211,7 @@ index 6673d48..7dc0797 100644
#include <boost/thread.hpp>
diff --git a/clients/roscpp/src/libros/service_manager.cpp b/clients/roscpp/src/libros/service_manager.cpp
-index 09f6f3d..6542b4f 100644
+index 2bdb022..1f1e94a 100644
--- a/clients/roscpp/src/libros/service_manager.cpp
+++ b/clients/roscpp/src/libros/service_manager.cpp
@@ -42,7 +42,7 @@
@@ -250,7 +224,7 @@ index 09f6f3d..6542b4f 100644
#include <ros/console.h>
diff --git a/clients/roscpp/src/libros/topic_manager.cpp b/clients/roscpp/src/libros/topic_manager.cpp
-index 0142cda..c76c9bc 100644
+index 3d77e7c..363fb05 100644
--- a/clients/roscpp/src/libros/topic_manager.cpp
+++ b/clients/roscpp/src/libros/topic_manager.cpp
@@ -41,7 +41,7 @@
@@ -276,7 +250,7 @@ index 9b03321..4392f2b 100644
using namespace XmlRpc;
diff --git a/tools/rosbag/src/recorder.cpp b/tools/rosbag/src/recorder.cpp
-index a6b7e26..01188a3 100644
+index c0c4602..77a9b91 100644
--- a/tools/rosbag/src/recorder.cpp
+++ b/tools/rosbag/src/recorder.cpp
@@ -60,7 +60,7 @@
@@ -289,10 +263,10 @@ index a6b7e26..01188a3 100644
#define foreach BOOST_FOREACH
diff --git a/utilities/xmlrpcpp/CMakeLists.txt b/utilities/xmlrpcpp/CMakeLists.txt
-index a4f6bec..286bcf9 100644
+index 673a924..79b4516 100644
--- a/utilities/xmlrpcpp/CMakeLists.txt
+++ b/utilities/xmlrpcpp/CMakeLists.txt
-@@ -35,8 +35,7 @@ if(WIN32)
+@@ -36,8 +36,7 @@ if(WIN32)
target_link_libraries(xmlrpcpp ws2_32)
endif()
@@ -302,3090 +276,212 @@ index a4f6bec..286bcf9 100644
DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}
FILES_MATCHING PATTERN "*.h")
-diff --git a/utilities/xmlrpcpp/include/XmlRpc.h b/utilities/xmlrpcpp/include/XmlRpc.h
-deleted file mode 100644
-index 6b00b18..0000000
+diff --git a/utilities/xmlrpcpp/include/XmlRpc.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
+similarity index 93%
+rename from utilities/xmlrpcpp/include/XmlRpc.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
+index 6b00b18..9fd626a 100644
--- a/utilities/xmlrpcpp/include/XmlRpc.h
-+++ /dev/null
-@@ -1,102 +0,0 @@
--// this file modified by Morgan Quigley on 22 April 2008 to add
--// a std::exception-derived class
--#ifndef _XMLRPC_H_
--#define _XMLRPC_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--// This library is free software; you can redistribute it and/or
--// modify it under the terms of the GNU Lesser General Public
--// License as published by the Free Software Foundation; either
--// version 2.1 of the License, or (at your option) any later version.
--//
--// This library is distributed in the hope that it will be useful,
--// but WITHOUT ANY WARRANTY; without even the implied warranty of
--// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
--// Lesser General Public License for more details.
--//
--// You should have received a copy of the GNU Lesser General Public
--// License along with this library; if not, write to the Free Software
--// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
--//
--
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
++++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
+@@ -27,12 +27,12 @@
+ # include <string>
+ #endif
+
-#include "XmlRpcClient.h"
-#include "XmlRpcException.h"
-#include "XmlRpcServer.h"
-#include "XmlRpcServerMethod.h"
-#include "XmlRpcValue.h"
-#include "XmlRpcUtil.h"
--
--#include <stdexcept>
--
--namespace XmlRpc {
--
--
-- //! An interface allowing custom handling of error message reporting.
-- class XmlRpcErrorHandler {
-- public:
-- virtual ~XmlRpcErrorHandler() { }
--
-- //! Returns a pointer to the currently installed error handling object.
-- static XmlRpcErrorHandler* getErrorHandler()
-- { return _errorHandler; }
--
-- //! Specifies the error handler.
-- static void setErrorHandler(XmlRpcErrorHandler* eh)
-- { _errorHandler = eh; }
--
-- //! Report an error. Custom error handlers should define this method.
-- virtual void error(const char* msg) = 0;
--
-- protected:
-- static XmlRpcErrorHandler* _errorHandler;
-- };
--
-- //! An interface allowing custom handling of informational message reporting.
-- class XmlRpcLogHandler {
-- public:
-- virtual ~XmlRpcLogHandler() { }
--
-- //! Returns a pointer to the currently installed message reporting object.
-- static XmlRpcLogHandler* getLogHandler()
-- { return _logHandler; }
--
-- //! Specifies the message handler.
-- static void setLogHandler(XmlRpcLogHandler* lh)
-- { _logHandler = lh; }
--
-- //! Returns the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-- static int getVerbosity()
-- { return _verbosity; }
--
-- //! Specify the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-- static void setVerbosity(int v)
-- { _verbosity = v; }
--
-- //! Output a message. Custom error handlers should define this method.
-- virtual void log(int level, const char* msg) = 0;
--
-- protected:
-- static XmlRpcLogHandler* _logHandler;
-- static int _verbosity;
-- };
--
-- //! Returns log message verbosity. This is short for XmlRpcLogHandler::getVerbosity()
-- int getVerbosity();
-- //! Sets log message verbosity. This is short for XmlRpcLogHandler::setVerbosity(level)
-- void setVerbosity(int level);
--
--
-- //! Version identifier
-- extern const char XMLRPC_VERSION[];
--
--} // namespace XmlRpc
--
--#endif // _XMLRPC_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcClient.h b/utilities/xmlrpcpp/include/XmlRpcClient.h
-deleted file mode 100644
-index 6f47778..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcClient.h
-+++ /dev/null
-@@ -1,133 +0,0 @@
--
--#ifndef _XMLRPCCLIENT_H_
--#define _XMLRPCCLIENT_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDispatch.h"
--#include "XmlRpcSource.h"
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
-- // Arguments and results are represented by XmlRpcValues
-- class XmlRpcValue;
--
-- //! A class to send XML RPC requests to a server and return the results.
-- class XMLRPCPP_DECL XmlRpcClient : public XmlRpcSource {
-- public:
-- // Static data
-- static const char REQUEST_BEGIN[];
-- static const char REQUEST_END_METHODNAME[];
-- static const char PARAMS_TAG[];
-- static const char PARAMS_ETAG[];
-- static const char PARAM_TAG[];
-- static const char PARAM_ETAG[];
-- static const char REQUEST_END[];
-- // Result tags
-- static const char METHODRESPONSE_TAG[];
-- static const char FAULT_TAG[];
--
-- //! Construct a client to connect to the server at the specified host:port address
-- //! @param host The name of the remote machine hosting the server
-- //! @param port The port on the remote machine where the server is listening
-- //! @param uri An optional string to be sent as the URI in the HTTP GET header
-- XmlRpcClient(const char* host, int port, const char* uri=0);
--
-- //! Destructor
-- virtual ~XmlRpcClient();
--
-- //! Execute the named procedure on the remote server.
-- //! @param method The name of the remote procedure to execute
-- //! @param params An array of the arguments for the method
-- //! @param result The result value to be returned to the client
-- //! @return true if the request was sent and a result received
-- //! (although the result might be a fault).
-- //!
-- //! Currently this is a synchronous (blocking) implementation (execute
-- //! does not return until it receives a response or an error). Use isFault()
-- //! to determine whether the result is a fault response.
-- bool execute(const char* method, XmlRpcValue const& params, XmlRpcValue& result);
--
-- bool executeNonBlock(const char* method, XmlRpcValue const& params);
-- bool executeCheckDone(XmlRpcValue& result);
--
-- //! Returns true if the result of the last execute() was a fault response.
-- bool isFault() const { return _isFault; }
--
--
-- // XmlRpcSource interface implementation
-- //! Close the connection
-- virtual void close();
--
-- //! Handle server responses. Called by the event dispatcher during execute.
-- //! @param eventType The type of event that occurred.
-- //! @see XmlRpcDispatch::EventType
-- virtual unsigned handleEvent(unsigned eventType);
--
-- protected:
-- // Execution processing helpers
-- virtual bool doConnect();
-- virtual bool setupConnection();
--
-- virtual bool generateRequest(const char* method, XmlRpcValue const& params);
-- virtual std::string generateHeader(std::string const& body);
-- virtual bool writeRequest();
-- virtual bool readHeader();
-- virtual bool readResponse();
-- virtual bool parseResponse(XmlRpcValue& result);
--
-- // Possible IO states for the connection
-- enum ClientConnectionState { NO_CONNECTION, CONNECTING, WRITE_REQUEST, READ_HEADER, READ_RESPONSE, IDLE };
-- ClientConnectionState _connectionState;
--
-- // Server location
-- std::string _host;
-- std::string _uri;
-- int _port;
-- public:
-- const std::string &getHost() { return _host; }
-- const std::string &getUri() { return _uri; }
-- int getPort() const { return _port; }
--
-- // The xml-encoded request, http header of response, and response xml
-- std::string _request;
-- std::string _header;
-- std::string _response;
--
-- // Number of times the client has attempted to send the request
-- int _sendAttempts;
--
-- // Number of bytes of the request that have been written to the socket so far
-- int _bytesWritten;
--
-- // True if we are currently executing a request. If you want to multithread,
-- // each thread should have its own client.
-- bool _executing;
--
-- // True if the server closed the connection
-- bool _eof;
--
-- // True if a fault response was returned by the server
-- bool _isFault;
--
-- // Number of bytes expected in the response body (parsed from response header)
-- int _contentLength;
--
-- // Event dispatcher
-- XmlRpcDispatch _disp;
--
-- }; // class XmlRpcClient
--
--} // namespace XmlRpc
--
--#endif // _XMLRPCCLIENT_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcDecl.h b/utilities/xmlrpcpp/include/XmlRpcDecl.h
-deleted file mode 100644
-index 8af174a..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcDecl.h
-+++ /dev/null
-@@ -1,55 +0,0 @@
--/*********************************************************************
--*
--* Software License Agreement (BSD License)
--*
--* Copyright (c) 2009, Willow Garage, Inc.
--* All rights reserved.
--*
--* Redistribution and use in source and binary forms, with or without
--* modification, are permitted provided that the following conditions
--* are met:
--*
--* * Redistributions of source code must retain the above copyright
--* notice, this list of conditions and the following disclaimer.
--* * Redistributions in binary form must reproduce the above
--* copyright notice, this list of conditions and the following
--* disclaimer in the documentation and/or other materials provided
--* with the distribution.
--* * Neither the name of the Willow Garage nor the names of its
--* contributors may be used to endorse or promote products derived
--* from this software without specific prior written permission.
--*
--* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
--* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
--* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
--* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
--* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
--* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
--* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
--* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
--* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
--* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--* POSSIBILITY OF SUCH DAMAGE.
--*
--*********************************************************************/
--/*
-- * Cross platform macros.
-- *
-- */
--#ifndef XMLRPCPP_DECL_H_INCLUDED
--#define XMLRPCPP_DECL_H_INCLUDED
--
--#include <ros/macros.h>
--
--#ifdef ROS_BUILD_SHARED_LIBS // ros is being built around shared libraries
-- #ifdef xmlrpcpp_EXPORTS // we are building a shared lib/dll
-- #define XMLRPCPP_DECL ROS_HELPER_EXPORT
-- #else // we are using shared lib/dll
-- #define XMLRPCPP_DECL ROS_HELPER_IMPORT
-- #endif
--#else // ros is being built around static libraries
-- #define XMLRPCPP_DECL
--#endif
--
--#endif /* XMLRPCPP_DECL_H_INCLUDED */
-diff --git a/utilities/xmlrpcpp/include/XmlRpcDispatch.h b/utilities/xmlrpcpp/include/XmlRpcDispatch.h
-deleted file mode 100644
-index 12b01ad..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcDispatch.h
-+++ /dev/null
-@@ -1,89 +0,0 @@
--
--#ifndef _XMLRPCDISPATCH_H_
--#define _XMLRPCDISPATCH_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--#ifndef MAKEDEPEND
--# include <list>
--#endif
--
--namespace XmlRpc {
--
-- // An RPC source represents a file descriptor to monitor
-- class XmlRpcSource;
--
-- //! An object which monitors file descriptors for events and performs
-- //! callbacks when interesting events happen.
-- class XMLRPCPP_DECL XmlRpcDispatch {
-- public:
-- //! Constructor
-- XmlRpcDispatch();
-- ~XmlRpcDispatch();
--
-- //! Values indicating the type of events a source is interested in
-- enum EventType {
-- ReadableEvent = 1, //!< data available to read
-- WritableEvent = 2, //!< connected/data can be written without blocking
-- Exception = 4 //!< uh oh
-- };
--
-- //! Monitor this source for the event types specified by the event mask
-- //! and call its event handler when any of the events occur.
-- //! @param source The source to monitor
-- //! @param eventMask Which event types to watch for. \see EventType
-- void addSource(XmlRpcSource* source, unsigned eventMask);
--
-- //! Stop monitoring this source.
-- //! @param source The source to stop monitoring
-- void removeSource(XmlRpcSource* source);
--
-- //! Modify the types of events to watch for on this source
-- void setSourceEvents(XmlRpcSource* source, unsigned eventMask);
--
--
-- //! Watch current set of sources and process events for the specified
-- //! duration (in ms, -1 implies wait forever, or until exit is called)
-- void work(double msTime);
--
-- //! Exit from work routine
-- void exit();
--
-- //! Clear all sources from the monitored sources list. Sources are closed.
-- void clear();
--
-- // helper
-- double getTime();
--
-- // A source to monitor and what to monitor it for
-- struct MonitoredSource {
-- MonitoredSource(XmlRpcSource* src, unsigned mask) : _src(src), _mask(mask) {}
-- XmlRpcSource* getSource() const { return _src; }
-- unsigned& getMask() { return _mask; }
-- XmlRpcSource* _src;
-- unsigned _mask;
-- };
--
-- // A list of sources to monitor
-- typedef std::list< MonitoredSource > SourceList;
--
-- // Sources being monitored
-- SourceList _sources;
-- protected:
--
-- // When work should stop (-1 implies wait forever, or until exit is called)
-- double _endTime;
--
-- bool _doClear;
-- bool _inWork;
--
-- };
--} // namespace XmlRpc
--
--#endif // _XMLRPCDISPATCH_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcException.h b/utilities/xmlrpcpp/include/XmlRpcException.h
-deleted file mode 100644
-index bff5bf2..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcException.h
-+++ /dev/null
-@@ -1,44 +0,0 @@
--
--#ifndef _XMLRPCEXCEPTION_H_
--#define _XMLRPCEXCEPTION_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDecl.h"
--
--
--namespace XmlRpc {
--
-- //! A class representing an error.
-- //! If server methods throw this exception, a fault response is returned
-- //! to the client.
-- class XMLRPCPP_DECL XmlRpcException {
-- public:
-- //! Constructor
-- //! @param message A descriptive error message
-- //! @param code An integer error code
-- XmlRpcException(const std::string& message, int code=-1) :
-- _message(message), _code(code) {}
--
-- //! Return the error message.
-- const std::string& getMessage() const { return _message; }
--
-- //! Return the error code.
-- int getCode() const { return _code; }
--
-- private:
-- std::string _message;
-- int _code;
-- };
--
--}
--
--#endif // _XMLRPCEXCEPTION_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcServer.h b/utilities/xmlrpcpp/include/XmlRpcServer.h
-deleted file mode 100644
-index 035d383..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcServer.h
-+++ /dev/null
-@@ -1,114 +0,0 @@
--// this file modified by Morgan Quigley on 22 Apr 2008.
--// added features: server can be opened on port 0 and you can read back
--// what port the OS gave you
--
--#ifndef _XMLRPCSERVER_H_
--#define _XMLRPCSERVER_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <map>
--# include <string>
--#endif
--
--#include "XmlRpcDispatch.h"
--#include "XmlRpcSource.h"
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--
-- // An abstract class supporting XML RPC methods
-- class XmlRpcServerMethod;
--
-- // Class representing connections to specific clients
-- class XmlRpcServerConnection;
--
-- // Class representing argument and result values
-- class XmlRpcValue;
--
--
-- //! A class to handle XML RPC requests
-- class XMLRPCPP_DECL XmlRpcServer : public XmlRpcSource {
-- public:
-- //! Create a server object.
-- XmlRpcServer();
-- //! Destructor.
-- virtual ~XmlRpcServer();
--
-- //! Specify whether introspection is enabled or not. Default is not enabled.
-- void enableIntrospection(bool enabled=true);
--
-- //! Add a command to the RPC server
-- void addMethod(XmlRpcServerMethod* method);
--
-- //! Remove a command from the RPC server
-- void removeMethod(XmlRpcServerMethod* method);
--
-- //! Remove a command from the RPC server by name
-- void removeMethod(const std::string& methodName);
--
-- //! Look up a method by name
-- XmlRpcServerMethod* findMethod(const std::string& name) const;
--
-- //! Create a socket, bind to the specified port, and
-- //! set it in listen mode to make it available for clients.
-- bool bindAndListen(int port, int backlog = 5);
--
-- //! Process client requests for the specified time
-- void work(double msTime);
--
-- //! Temporarily stop processing client requests and exit the work() method.
-- void exit();
--
-- //! Close all connections with clients and the socket file descriptor
-- void shutdown();
--
-- //! Introspection support
-- void listMethods(XmlRpcValue& result);
--
-- // XmlRpcSource interface implementation
--
-- //! Handle client connection requests
-- virtual unsigned handleEvent(unsigned eventType);
--
-- //! Remove a connection from the dispatcher
-- virtual void removeConnection(XmlRpcServerConnection*);
--
-- inline int get_port() { return _port; }
--
-- XmlRpcDispatch *get_dispatch() { return &_disp; }
--
-- protected:
--
-- //! Accept a client connection request
-- virtual void acceptConnection();
--
-- //! Create a new connection object for processing requests from a specific client.
-- virtual XmlRpcServerConnection* createConnection(int socket);
--
-- // Whether the introspection API is supported by this server
-- bool _introspectionEnabled;
--
-- // Event dispatcher
-- XmlRpcDispatch _disp;
--
-- // Collection of methods. This could be a set keyed on method name if we wanted...
-- typedef std::map< std::string, XmlRpcServerMethod* > MethodMap;
-- MethodMap _methods;
--
-- // system methods
-- XmlRpcServerMethod* _listMethods;
-- XmlRpcServerMethod* _methodHelp;
--
-- int _port;
--
-- };
--} // namespace XmlRpc
--
--#endif //_XMLRPCSERVER_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcServerConnection.h b/utilities/xmlrpcpp/include/XmlRpcServerConnection.h
-deleted file mode 100644
-index f5c224d..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcServerConnection.h
-+++ /dev/null
-@@ -1,103 +0,0 @@
--#ifndef _XMLRPCSERVERCONNECTION_H_
--#define _XMLRPCSERVERCONNECTION_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcValue.h"
--#include "XmlRpcSource.h"
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--
-- // The server waits for client connections and provides methods
-- class XmlRpcServer;
-- class XmlRpcServerMethod;
--
-- //! A class to handle XML RPC requests from a particular client
-- class XMLRPCPP_DECL XmlRpcServerConnection : public XmlRpcSource {
-- public:
-- // Static data
-- static const char METHODNAME_TAG[];
-- static const char PARAMS_TAG[];
-- static const char PARAMS_ETAG[];
-- static const char PARAM_TAG[];
-- static const char PARAM_ETAG[];
--
-- static const std::string SYSTEM_MULTICALL;
-- static const std::string METHODNAME;
-- static const std::string PARAMS;
--
-- static const std::string FAULTCODE;
-- static const std::string FAULTSTRING;
--
-- //! Constructor
-- XmlRpcServerConnection(int fd, XmlRpcServer* server, bool deleteOnClose = false);
-- //! Destructor
-- virtual ~XmlRpcServerConnection();
--
-- // XmlRpcSource interface implementation
-- //! Handle IO on the client connection socket.
-- //! @param eventType Type of IO event that occurred. @see XmlRpcDispatch::EventType.
-- virtual unsigned handleEvent(unsigned eventType);
--
-- protected:
--
-- bool readHeader();
-- bool readRequest();
-- bool writeResponse();
--
-- // Parses the request, runs the method, generates the response xml.
-- virtual void executeRequest();
--
-- // Parse the methodName and parameters from the request.
-- std::string parseRequest(XmlRpcValue& params);
--
-- // Execute a named method with the specified params.
-- bool executeMethod(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
--
-- // Execute multiple calls and return the results in an array.
-- bool executeMulticall(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
--
-- // Construct a response from the result XML.
-- void generateResponse(std::string const& resultXml);
-- void generateFaultResponse(std::string const& msg, int errorCode = -1);
-- std::string generateHeader(std::string const& body);
--
--
-- // The XmlRpc server that accepted this connection
-- XmlRpcServer* _server;
--
-- // Possible IO states for the connection
-- enum ServerConnectionState { READ_HEADER, READ_REQUEST, WRITE_RESPONSE };
-- ServerConnectionState _connectionState;
--
-- // Request headers
-- std::string _header;
--
-- // Number of bytes expected in the request body (parsed from header)
-- int _contentLength;
--
-- // Request body
-- std::string _request;
--
-- // Response
-- std::string _response;
--
-- // Number of bytes of the response written so far
-- int _bytesWritten;
--
-- // Whether to keep the current client connection open for further requests
-- bool _keepAlive;
-- };
--} // namespace XmlRpc
--
--#endif // _XMLRPCSERVERCONNECTION_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcServerMethod.h b/utilities/xmlrpcpp/include/XmlRpcServerMethod.h
-deleted file mode 100644
-index 7b7ddca..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcServerMethod.h
-+++ /dev/null
-@@ -1,49 +0,0 @@
--
--#ifndef _XMLRPCSERVERMETHOD_H_
--#define _XMLRPCSERVERMETHOD_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--namespace XmlRpc {
--
-- // Representation of a parameter or result value
-- class XmlRpcValue;
--
-- // The XmlRpcServer processes client requests to call RPCs
-- class XmlRpcServer;
--
-- //! Abstract class representing a single RPC method
-- class XMLRPCPP_DECL XmlRpcServerMethod {
-- public:
-- //! Constructor
-- XmlRpcServerMethod(std::string const& name, XmlRpcServer* server = 0);
-- //! Destructor
-- virtual ~XmlRpcServerMethod();
--
-- //! Returns the name of the method
-- std::string& name() { return _name; }
--
-- //! Execute the method. Subclasses must provide a definition for this method.
-- virtual void execute(XmlRpcValue& params, XmlRpcValue& result) = 0;
--
-- //! Returns a help string for the method.
-- //! Subclasses should define this method if introspection is being used.
-- virtual std::string help() { return std::string(); }
--
-- protected:
-- std::string _name;
-- XmlRpcServer* _server;
-- };
--} // namespace XmlRpc
--
--#endif // _XMLRPCSERVERMETHOD_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcSocket.h b/utilities/xmlrpcpp/include/XmlRpcSocket.h
-deleted file mode 100644
-index 711a520..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcSocket.h
-+++ /dev/null
-@@ -1,80 +0,0 @@
--// this file modified by Morgan Quigley on 22 Apr 2008.
--// added features: server can be opened on port 0 and you can read back
--// what port the OS gave you
--
--#ifndef _XMLRPCSOCKET_H_
--#define _XMLRPCSOCKET_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
-- //! A platform-independent socket API.
-- class XMLRPCPP_DECL XmlRpcSocket {
-- public:
--
-- static bool s_use_ipv6_;
--
-- //! Creates a stream (TCP) socket. Returns -1 on failure.
-- static int socket();
--
-- //! Closes a socket.
-- static void close(int socket);
--
--
-- //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure.
-- static bool setNonBlocking(int socket);
--
-- //! Read text from the specified socket. Returns false on error.
-- static bool nbRead(int socket, std::string& s, bool *eof);
--
-- //! Write text to the specified socket. Returns false on error.
-- static bool nbWrite(int socket, std::string& s, int *bytesSoFar);
--
--
-- // The next four methods are appropriate for servers.
--
-- //! Allow the port the specified socket is bound to to be re-bound immediately so
-- //! server re-starts are not delayed. Returns false on failure.
-- static bool setReuseAddr(int socket);
--
-- //! Bind to a specified port
-- static bool bind(int socket, int port);
--
-- static int get_port(int socket);
--
-- //! Set socket in listen mode
-- static bool listen(int socket, int backlog);
--
-- //! Accept a client connection request
-- static int accept(int socket);
--
--
--
-- //! Connect a socket to a server (from a client)
-- static bool connect(int socket, std::string& host, int port);
--
--
-- //! Returns last errno
-- static int getError();
--
-- //! Returns message corresponding to last error
-- static std::string getErrorMsg();
--
-- //! Returns message corresponding to error
-- static std::string getErrorMsg(int error);
-- };
--
--} // namespace XmlRpc
--
--#endif
-diff --git a/utilities/xmlrpcpp/include/XmlRpcSource.h b/utilities/xmlrpcpp/include/XmlRpcSource.h
-deleted file mode 100644
-index f82ccb1..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcSource.h
-+++ /dev/null
-@@ -1,57 +0,0 @@
--
--#ifndef _XMLRPCSOURCE_H_
--#define _XMLRPCSOURCE_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
-- //! An RPC source represents a file descriptor to monitor
-- class XMLRPCPP_DECL XmlRpcSource {
-- public:
-- //! Constructor
-- //! @param fd The socket file descriptor to monitor.
-- //! @param deleteOnClose If true, the object deletes itself when close is called.
-- XmlRpcSource(int fd = -1, bool deleteOnClose = false);
--
-- //! Destructor
-- virtual ~XmlRpcSource();
--
-- //! Return the file descriptor being monitored.
-- int getfd() const { return _fd; }
-- //! Specify the file descriptor to monitor.
-- void setfd(int fd) { _fd = fd; }
--
-- //! Return whether the file descriptor should be kept open if it is no longer monitored.
-- bool getKeepOpen() const { return _keepOpen; }
-- //! Specify whether the file descriptor should be kept open if it is no longer monitored.
-- void setKeepOpen(bool b=true) { _keepOpen = b; }
--
-- //! Close the owned fd. If deleteOnClose was specified at construction, the object is deleted.
-- virtual void close();
--
-- //! Return true to continue monitoring this source
-- virtual unsigned handleEvent(unsigned eventType) = 0;
--
-- private:
--
-- // Socket. This should really be a SOCKET (an alias for unsigned int*) on windows...
-- int _fd;
--
-- // In the server, a new source (XmlRpcServerConnection) is created
-- // for each connected client. When each connection is closed, the
-- // corresponding source object is deleted.
-- bool _deleteOnClose;
--
-- // In the client, keep connections open if you intend to make multiple calls.
-- bool _keepOpen;
-- };
--} // namespace XmlRpc
--
--#endif //_XMLRPCSOURCE_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcUtil.h b/utilities/xmlrpcpp/include/XmlRpcUtil.h
-deleted file mode 100644
-index 78627f4..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcUtil.h
-+++ /dev/null
-@@ -1,63 +0,0 @@
--#ifndef _XMLRPCUTIL_H_
--#define _XMLRPCUTIL_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDecl.h"
--
--#if defined(_MSC_VER)
--# define snprintf _snprintf_s
--# define vsnprintf _vsnprintf_s
--# define strcasecmp _stricmp
--# define strncasecmp _strnicmp
--#elif defined(__BORLANDC__)
--# define strcasecmp stricmp
--# define strncasecmp strnicmp
--#endif
--
--namespace XmlRpc {
--
-- //! Utilities for XML parsing, encoding, and decoding and message handlers.
-- class XMLRPCPP_DECL XmlRpcUtil {
-- public:
-- // hokey xml parsing
-- //! Returns contents between <tag> and </tag>, updates offset to char after </tag>
-- static std::string parseTag(const char* tag, std::string const& xml, int* offset);
--
-- //! Returns true if the tag is found and updates offset to the char after the tag
-- static bool findTag(const char* tag, std::string const& xml, int* offset);
--
-- //! Returns the next tag and updates offset to the char after the tag, or empty string
-- //! if the next non-whitespace character is not '<'
-- static std::string getNextTag(std::string const& xml, int* offset);
--
-- //! Returns true if the tag is found at the specified offset (modulo any whitespace)
-- //! and updates offset to the char after the tag
-- static bool nextTagIs(const char* tag, std::string const& xml, int* offset);
--
--
-- //! Convert raw text to encoded xml.
-- static std::string xmlEncode(const std::string& raw);
--
-- //! Convert encoded xml to raw text
-- static std::string xmlDecode(const std::string& encoded);
--
--
-- //! Dump messages somewhere
-- static void log(int level, const char* fmt, ...);
--
-- //! Dump error messages somewhere
-- static void error(const char* fmt, ...);
--
-- };
--} // namespace XmlRpc
--
--#endif // _XMLRPCUTIL_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcValue.h b/utilities/xmlrpcpp/include/XmlRpcValue.h
-deleted file mode 100644
-index fe6cb8c..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcValue.h
-+++ /dev/null
-@@ -1,195 +0,0 @@
--
--#ifndef _XMLRPCVALUE_H_
--#define _XMLRPCVALUE_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786) // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--#ifndef MAKEDEPEND
--# include <map>
--# include <string>
--# include <vector>
--# include <time.h>
--#endif
--
--namespace XmlRpc {
--
-- //! RPC method arguments and results are represented by Values
-- // should probably refcount them...
-- class XMLRPCPP_DECL XmlRpcValue {
-- public:
--
--
-- enum Type {
-- TypeInvalid,
-- TypeBoolean,
-- TypeInt,
-- TypeDouble,
-- TypeString,
-- TypeDateTime,
-- TypeBase64,
-- TypeArray,
-- TypeStruct
-- };
--
-- // Non-primitive types
-- typedef std::vector<char> BinaryData;
-- typedef std::vector<XmlRpcValue> ValueArray;
-- typedef std::map<std::string, XmlRpcValue> ValueStruct;
-- typedef ValueStruct::iterator iterator;
--
--
-- //! Constructors
-- XmlRpcValue() : _type(TypeInvalid) { _value.asBinary = 0; }
-- XmlRpcValue(bool value) : _type(TypeBoolean) { _value.asBool = value; }
-- XmlRpcValue(int value) : _type(TypeInt) { _value.asInt = value; }
-- XmlRpcValue(double value) : _type(TypeDouble) { _value.asDouble = value; }
--
-- XmlRpcValue(std::string const& value) : _type(TypeString)
-- { _value.asString = new std::string(value); }
--
-- XmlRpcValue(const char* value) : _type(TypeString)
-- { _value.asString = new std::string(value); }
--
-- XmlRpcValue(struct tm* value) : _type(TypeDateTime)
-- { _value.asTime = new struct tm(*value); }
--
--
-- XmlRpcValue(void* value, int nBytes) : _type(TypeBase64)
-- {
-- _value.asBinary = new BinaryData((char*)value, ((char*)value)+nBytes);
-- }
--
-- //! Construct from xml, beginning at *offset chars into the string, updates offset
-- XmlRpcValue(std::string const& xml, int* offset) : _type(TypeInvalid)
-- { if ( ! fromXml(xml,offset)) _type = TypeInvalid; }
--
-- //! Copy
-- XmlRpcValue(XmlRpcValue const& rhs) : _type(TypeInvalid) { *this = rhs; }
--
-- //! Destructor (make virtual if you want to subclass)
-- /*virtual*/ ~XmlRpcValue() { invalidate(); }
--
-- //! Erase the current value
-- void clear() { invalidate(); }
--
-- // Operators
-- XmlRpcValue& operator=(XmlRpcValue const& rhs);
-- XmlRpcValue& operator=(int const& rhs) { return operator=(XmlRpcValue(rhs)); }
-- XmlRpcValue& operator=(double const& rhs) { return operator=(XmlRpcValue(rhs)); }
-- XmlRpcValue& operator=(const char* rhs) { return operator=(XmlRpcValue(std::string(rhs))); }
--
-- bool operator==(XmlRpcValue const& other) const;
-- bool operator!=(XmlRpcValue const& other) const;
--
-- operator bool&() { assertTypeOrInvalid(TypeBoolean); return _value.asBool; }
-- operator int&() { assertTypeOrInvalid(TypeInt); return _value.asInt; }
-- operator double&() { assertTypeOrInvalid(TypeDouble); return _value.asDouble; }
-- operator std::string&() { assertTypeOrInvalid(TypeString); return *_value.asString; }
-- operator BinaryData&() { assertTypeOrInvalid(TypeBase64); return *_value.asBinary; }
-- operator struct tm&() { assertTypeOrInvalid(TypeDateTime); return *_value.asTime; }
--
-- XmlRpcValue const& operator[](int i) const { assertArray(i+1); return _value.asArray->at(i); }
-- XmlRpcValue& operator[](int i) { assertArray(i+1); return _value.asArray->at(i); }
--
-- XmlRpcValue& operator[](std::string const& k) { assertStruct(); return (*_value.asStruct)[k]; }
-- XmlRpcValue& operator[](const char* k) { assertStruct(); std::string s(k); return (*_value.asStruct)[s]; }
--
-- iterator begin() {assertStruct(); return (*_value.asStruct).begin(); }
-- iterator end() {assertStruct(); return (*_value.asStruct).end(); }
--
-- // Accessors
-- //! Return true if the value has been set to something.
-- bool valid() const { return _type != TypeInvalid; }
--
-- //! Return the type of the value stored. \see Type.
-- Type const &getType() const { return _type; }
--
-- //! Return the size for string, base64, array, and struct values.
-- int size() const;
--
-- //! Specify the size for array values. Array values will grow beyond this size if needed.
-- void setSize(int size) { assertArray(size); }
--
-- //! Check for the existence of a struct member by name.
-- bool hasMember(const std::string& name) const;
--
-- //! Decode xml. Destroys any existing value.
-- bool fromXml(std::string const& valueXml, int* offset);
--
-- //! Encode the Value in xml
-- std::string toXml() const;
--
-- //! Write the value (no xml encoding)
-- std::ostream& write(std::ostream& os) const;
--
-- // Formatting
-- //! Return the format used to write double values.
-- static std::string const& getDoubleFormat() { return _doubleFormat; }
--
-- //! Specify the format used to write double values.
-- static void setDoubleFormat(const char* f) { _doubleFormat = f; }
--
--
-- protected:
-- // Clean up
-- void invalidate();
--
-- // Type checking
-- void assertTypeOrInvalid(Type t);
-- void assertArray(int size) const;
-- void assertArray(int size);
-- void assertStruct();
--
-- // XML decoding
-- bool boolFromXml(std::string const& valueXml, int* offset);
-- bool intFromXml(std::string const& valueXml, int* offset);
-- bool doubleFromXml(std::string const& valueXml, int* offset);
-- bool stringFromXml(std::string const& valueXml, int* offset);
-- bool timeFromXml(std::string const& valueXml, int* offset);
-- bool binaryFromXml(std::string const& valueXml, int* offset);
-- bool arrayFromXml(std::string const& valueXml, int* offset);
-- bool structFromXml(std::string const& valueXml, int* offset);
--
-- // XML encoding
-- std::string boolToXml() const;
-- std::string intToXml() const;
-- std::string doubleToXml() const;
-- std::string stringToXml() const;
-- std::string timeToXml() const;
-- std::string binaryToXml() const;
-- std::string arrayToXml() const;
-- std::string structToXml() const;
--
-- // Format strings
-- static std::string _doubleFormat;
--
-- // Type tag and values
-- Type _type;
--
-- // At some point I will split off Arrays and Structs into
-- // separate ref-counted objects for more efficient copying.
-- union {
-- bool asBool;
-- int asInt;
-- double asDouble;
-- struct tm* asTime;
-- std::string* asString;
-- BinaryData* asBinary;
-- ValueArray* asArray;
-- ValueStruct* asStruct;
-- } _value;
--
-- };
--} // namespace XmlRpc
--
--
--std::ostream& operator<<(std::ostream& os, XmlRpc::XmlRpcValue& v);
--
--
--#endif // _XMLRPCVALUE_H_
-diff --git a/utilities/xmlrpcpp/include/base64.h b/utilities/xmlrpcpp/include/base64.h
-deleted file mode 100644
-index c239403..0000000
---- a/utilities/xmlrpcpp/include/base64.h
-+++ /dev/null
-@@ -1,380 +0,0 @@
--
--
--// base64.hpp
--// Autor Konstantin Pilipchuk
--// mailto:lostd at ukr.net
--//
--//
--
--#if !defined(__BASE64_H_INCLUDED__)
--#define __BASE64_H_INCLUDED__ 1
--
--#ifndef MAKEDEPEND
--# include <iterator>
--#endif
--
--#include <ios>
--
--static
--int _base64Chars[]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-- 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
-- '0','1','2','3','4','5','6','7','8','9',
-- '+','/' };
--
--
--#define _0000_0011 0x03
--#define _1111_1100 0xFC
--#define _1111_0000 0xF0
--#define _0011_0000 0x30
--#define _0011_1100 0x3C
--#define _0000_1111 0x0F
--#define _1100_0000 0xC0
--#define _0011_1111 0x3F
--
--#define _EQUAL_CHAR (-1)
--#define _UNKNOWN_CHAR (-2)
--
--#define _IOS_FAILBIT std::ios_base::failbit
--#define _IOS_EOFBIT std::ios_base::eofbit
--#define _IOS_BADBIT std::ios_base::badbit
--#define _IOS_GOODBIT std::ios_base::goodbit
--
--// TEMPLATE CLASS base64_put
--template<class _E = char, class _Tr = std::char_traits<_E> >
--class base64
--{
--public:
--
-- typedef unsigned char byte_t;
-- typedef _E char_type;
-- typedef _Tr traits_type;
--
-- // base64 requires max line length <= 72 characters
-- // you can fill end of line
-- // it may be crlf, crlfsp, noline or other class like it
--
--
-- struct crlf
-- {
-- template<class _OI>
-- _OI operator()(_OI _To) const{
-- *_To = _Tr::to_char_type('\r'); ++_To;
-- *_To = _Tr::to_char_type('\n'); ++_To;
--
-- return (_To);
-- }
-- };
--
--
-- struct crlfsp
-- {
-- template<class _OI>
-- _OI operator()(_OI _To) const{
-- *_To = _Tr::to_char_type('\r'); ++_To;
-- *_To = _Tr::to_char_type('\n'); ++_To;
-- *_To = _Tr::to_char_type(' '); ++_To;
--
-- return (_To);
-- }
-- };
--
-- struct noline
-- {
-- template<class _OI>
-- _OI operator()(_OI _To) const{
-- return (_To);
-- }
-- };
--
-- struct three2four
-- {
-- void zero()
-- {
-- _data[0] = 0;
-- _data[1] = 0;
-- _data[2] = 0;
-- }
--
-- byte_t get_0() const
-- {
-- return _data[0];
-- }
-- byte_t get_1() const
-- {
-- return _data[1];
-- }
-- byte_t get_2() const
-- {
-- return _data[2];
-- }
--
-- void set_0(byte_t _ch)
-- {
-- _data[0] = _ch;
-- }
--
-- void set_1(byte_t _ch)
-- {
-- _data[1] = _ch;
-- }
--
-- void set_2(byte_t _ch)
-- {
-- _data[2] = _ch;
-- }
--
-- // 0000 0000 1111 1111 2222 2222
-- // xxxx xxxx xxxx xxxx xxxx xxxx
-- // 0000 0011 1111 2222 2233 3333
--
-- int b64_0() const {return (_data[0] & _1111_1100) >> 2;}
-- int b64_1() const {return ((_data[0] & _0000_0011) << 4) + ((_data[1] & _1111_0000)>>4);}
-- int b64_2() const {return ((_data[1] & _0000_1111) << 2) + ((_data[2] & _1100_0000)>>6);}
-- int b64_3() const {return (_data[2] & _0011_1111);}
--
-- void b64_0(int _ch) {_data[0] = ((_ch & _0011_1111) << 2) | (_0000_0011 & _data[0]);}
--
-- void b64_1(int _ch) {
-- _data[0] = ((_ch & _0011_0000) >> 4) | (_1111_1100 & _data[0]);
-- _data[1] = ((_ch & _0000_1111) << 4) | (_0000_1111 & _data[1]); }
--
-- void b64_2(int _ch) {
-- _data[1] = ((_ch & _0011_1100) >> 2) | (_1111_0000 & _data[1]);
-- _data[2] = ((_ch & _0000_0011) << 6) | (_0011_1111 & _data[2]); }
--
-- void b64_3(int _ch){
-- _data[2] = (_ch & _0011_1111) | (_1100_0000 & _data[2]);}
--
-- private:
-- byte_t _data[3];
--
-- };
--
--
--
--
-- template<class _II, class _OI, class _State, class _Endline>
-- _II put(_II _First, _II _Last, _OI _To, _State&, _Endline) const
-- {
-- three2four _3to4;
-- int line_octets = 0;
--
-- while(_First != _Last)
-- {
-- _3to4.zero();
--
-- _3to4.set_0(*_First);
-- _First++;
--
-- if(_First == _Last)
-- {
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-- *_To = _Tr::to_char_type('='); ++_To;
-- *_To = _Tr::to_char_type('='); ++_To;
-- goto __end;
-- }
--
-- _3to4.set_1(*_First);
-- _First++;
--
-- if(_First == _Last)
-- {
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-- *_To = _Tr::to_char_type('='); ++_To;
-- goto __end;
-- }
--
-- _3to4.set_2(*_First);
-- _First++;
--
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-- *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_3()]); ++_To;
--
-- if(line_octets == 17)
-- {
-- //_To = _Endl(_To);
-- *_To = '\n'; ++_To;
-- line_octets = 0;
-- }
-- else
-- ++line_octets;
-- }
--
-- __end: ;
--
-- return (_First);
--
-- }
--
--
-- template<class _II, class _OI, class _State>
-- _II get(_II _First, _II _Last, _OI _To, _State& _St) const
-- {
-- three2four _3to4;
-- int _Char;
--
-- while(_First != _Last)
-- {
--
-- // Take octet
-- _3to4.zero();
--
-- // -- 0 --
-- // Search next valid char...
-- while((_Char = _getCharType(*_First)) < 0 && _Char == _UNKNOWN_CHAR)
-- {
-- if(++_First == _Last)
-- {
-- _St |= _IOS_FAILBIT|_IOS_EOFBIT; return _First; // unexpected EOF
-- }
-- }
--
-- if(_Char == _EQUAL_CHAR){
-- // Error! First character in octet can't be '='
-- _St |= _IOS_FAILBIT;
-- return _First;
-- }
-- else
-- _3to4.b64_0(_Char);
--
--
-- // -- 1 --
-- // Search next valid char...
-- while(++_First != _Last)
-- if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-- break;
--
-- if(_First == _Last) {
-- _St |= _IOS_FAILBIT|_IOS_EOFBIT; // unexpected EOF
-- return _First;
-- }
--
-- if(_Char == _EQUAL_CHAR){
-- // Error! Second character in octet can't be '='
-- _St |= _IOS_FAILBIT;
-- return _First;
-- }
-- else
-- _3to4.b64_1(_Char);
--
--
-- // -- 2 --
-- // Search next valid char...
-- while(++_First != _Last)
-- if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-- break;
--
-- if(_First == _Last) {
-- // Error! Unexpected EOF. Must be '=' or base64 character
-- _St |= _IOS_FAILBIT|_IOS_EOFBIT;
-- return _First;
-- }
--
-- if(_Char == _EQUAL_CHAR){
-- // OK!
-- _3to4.b64_2(0);
-- _3to4.b64_3(0);
--
-- // chek for EOF
-- if(++_First == _Last)
-- {
-- // Error! Unexpected EOF. Must be '='. Ignore it.
-- //_St |= _IOS_BADBIT|_IOS_EOFBIT;
-- _St |= _IOS_EOFBIT;
-- }
-- else
-- if(_getCharType(*_First) != _EQUAL_CHAR)
-- {
-- // Error! Must be '='. Ignore it.
-- //_St |= _IOS_BADBIT;
-- }
-- else
-- ++_First; // Skip '='
--
-- // write 1 byte to output
-- *_To = (byte_t) _3to4.get_0();
-- return _First;
-- }
-- else
-- _3to4.b64_2(_Char);
--
--
-- // -- 3 --
-- // Search next valid char...
-- while(++_First != _Last)
-- if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-- break;
--
-- if(_First == _Last) {
-- // Unexpected EOF. It's error. But ignore it.
-- //_St |= _IOS_FAILBIT|_IOS_EOFBIT;
-- _St |= _IOS_EOFBIT;
--
-- return _First;
-- }
--
-- if(_Char == _EQUAL_CHAR)
-- {
-- // OK!
-- _3to4.b64_3(0);
--
-- // write to output 2 bytes
-- *_To = (byte_t) _3to4.get_0();
-- *_To = (byte_t) _3to4.get_1();
--
-- ++_First; // set position to next character
--
-- return _First;
-- }
-- else
-- _3to4.b64_3(_Char);
--
--
-- // write to output 3 bytes
-- *_To = (byte_t) _3to4.get_0();
-- *_To = (byte_t) _3to4.get_1();
-- *_To = (byte_t) _3to4.get_2();
--
-- ++_First;
--
--
-- } // while(_First != _Last)
--
-- return (_First);
-- }
--
--protected:
--
-- int _getCharType(int _Ch) const
-- {
-- if(_base64Chars[62] == _Ch)
-- return 62;
--
-- if(_base64Chars[63] == _Ch)
-- return 63;
--
-- if((_base64Chars[0] <= _Ch) && (_base64Chars[25] >= _Ch))
-- return _Ch - _base64Chars[0];
--
-- if((_base64Chars[26] <= _Ch) && (_base64Chars[51] >= _Ch))
-- return _Ch - _base64Chars[26] + 26;
--
-- if((_base64Chars[52] <= _Ch) && (_base64Chars[61] >= _Ch))
-- return _Ch - _base64Chars[52] + 52;
--
-- if(_Ch == _Tr::to_int_type('='))
-- return _EQUAL_CHAR;
--
-- return _UNKNOWN_CHAR;
-- }
--
--
--};
--
--
--#endif
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
-new file mode 100644
-index 0000000..9fd626a
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
-@@ -0,0 +1,102 @@
-+// this file modified by Morgan Quigley on 22 April 2008 to add
-+// a std::exception-derived class
-+#ifndef _XMLRPC_H_
-+#define _XMLRPC_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+// This library is free software; you can redistribute it and/or
-+// modify it under the terms of the GNU Lesser General Public
-+// License as published by the Free Software Foundation; either
-+// version 2.1 of the License, or (at your option) any later version.
-+//
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+// Lesser General Public License for more details.
-+//
-+// You should have received a copy of the GNU Lesser General Public
-+// License along with this library; if not, write to the Free Software
-+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-+//
-+
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
+#include "xmlrpcpp/XmlRpcClient.h"
+#include "xmlrpcpp/XmlRpcException.h"
+#include "xmlrpcpp/XmlRpcServer.h"
+#include "xmlrpcpp/XmlRpcServerMethod.h"
+#include "xmlrpcpp/XmlRpcValue.h"
+#include "xmlrpcpp/XmlRpcUtil.h"
-+
-+#include <stdexcept>
-+
-+namespace XmlRpc {
-+
-+
-+ //! An interface allowing custom handling of error message reporting.
-+ class XmlRpcErrorHandler {
-+ public:
-+ virtual ~XmlRpcErrorHandler() { }
-+
-+ //! Returns a pointer to the currently installed error handling object.
-+ static XmlRpcErrorHandler* getErrorHandler()
-+ { return _errorHandler; }
-+
-+ //! Specifies the error handler.
-+ static void setErrorHandler(XmlRpcErrorHandler* eh)
-+ { _errorHandler = eh; }
-+
-+ //! Report an error. Custom error handlers should define this method.
-+ virtual void error(const char* msg) = 0;
-+
-+ protected:
-+ static XmlRpcErrorHandler* _errorHandler;
-+ };
-+
-+ //! An interface allowing custom handling of informational message reporting.
-+ class XmlRpcLogHandler {
-+ public:
-+ virtual ~XmlRpcLogHandler() { }
-+
-+ //! Returns a pointer to the currently installed message reporting object.
-+ static XmlRpcLogHandler* getLogHandler()
-+ { return _logHandler; }
-+
-+ //! Specifies the message handler.
-+ static void setLogHandler(XmlRpcLogHandler* lh)
-+ { _logHandler = lh; }
-+
-+ //! Returns the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-+ static int getVerbosity()
-+ { return _verbosity; }
-+
-+ //! Specify the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-+ static void setVerbosity(int v)
-+ { _verbosity = v; }
-+
-+ //! Output a message. Custom error handlers should define this method.
-+ virtual void log(int level, const char* msg) = 0;
-+
-+ protected:
-+ static XmlRpcLogHandler* _logHandler;
-+ static int _verbosity;
-+ };
-+
-+ //! Returns log message verbosity. This is short for XmlRpcLogHandler::getVerbosity()
-+ int getVerbosity();
-+ //! Sets log message verbosity. This is short for XmlRpcLogHandler::setVerbosity(level)
-+ void setVerbosity(int level);
-+
-+
-+ //! Version identifier
-+ extern const char XMLRPC_VERSION[];
-+
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPC_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
-new file mode 100644
-index 0000000..2154b39
---- /dev/null
+
+ #include <stdexcept>
+
+diff --git a/utilities/xmlrpcpp/include/XmlRpcClient.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
+similarity index 97%
+rename from utilities/xmlrpcpp/include/XmlRpcClient.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
+index 6f47778..2154b39 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcClient.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
-@@ -0,0 +1,133 @@
-+
-+#ifndef _XMLRPCCLIENT_H_
-+#define _XMLRPCCLIENT_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
+@@ -13,9 +13,9 @@
+ # include <string>
+ #endif
+
+-#include "XmlRpcDispatch.h"
+-#include "XmlRpcSource.h"
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDispatch.h"
+#include "xmlrpcpp/XmlRpcSource.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+ // Arguments and results are represented by XmlRpcValues
-+ class XmlRpcValue;
-+
-+ //! A class to send XML RPC requests to a server and return the results.
-+ class XMLRPCPP_DECL XmlRpcClient : public XmlRpcSource {
-+ public:
-+ // Static data
-+ static const char REQUEST_BEGIN[];
-+ static const char REQUEST_END_METHODNAME[];
-+ static const char PARAMS_TAG[];
-+ static const char PARAMS_ETAG[];
-+ static const char PARAM_TAG[];
-+ static const char PARAM_ETAG[];
-+ static const char REQUEST_END[];
-+ // Result tags
-+ static const char METHODRESPONSE_TAG[];
-+ static const char FAULT_TAG[];
-+
-+ //! Construct a client to connect to the server at the specified host:port address
-+ //! @param host The name of the remote machine hosting the server
-+ //! @param port The port on the remote machine where the server is listening
-+ //! @param uri An optional string to be sent as the URI in the HTTP GET header
-+ XmlRpcClient(const char* host, int port, const char* uri=0);
-+
-+ //! Destructor
-+ virtual ~XmlRpcClient();
-+
-+ //! Execute the named procedure on the remote server.
-+ //! @param method The name of the remote procedure to execute
-+ //! @param params An array of the arguments for the method
-+ //! @param result The result value to be returned to the client
-+ //! @return true if the request was sent and a result received
-+ //! (although the result might be a fault).
-+ //!
-+ //! Currently this is a synchronous (blocking) implementation (execute
-+ //! does not return until it receives a response or an error). Use isFault()
-+ //! to determine whether the result is a fault response.
-+ bool execute(const char* method, XmlRpcValue const& params, XmlRpcValue& result);
-+
-+ bool executeNonBlock(const char* method, XmlRpcValue const& params);
-+ bool executeCheckDone(XmlRpcValue& result);
-+
-+ //! Returns true if the result of the last execute() was a fault response.
-+ bool isFault() const { return _isFault; }
-+
-+
-+ // XmlRpcSource interface implementation
-+ //! Close the connection
-+ virtual void close();
-+
-+ //! Handle server responses. Called by the event dispatcher during execute.
-+ //! @param eventType The type of event that occurred.
-+ //! @see XmlRpcDispatch::EventType
-+ virtual unsigned handleEvent(unsigned eventType);
-+
-+ protected:
-+ // Execution processing helpers
-+ virtual bool doConnect();
-+ virtual bool setupConnection();
-+
-+ virtual bool generateRequest(const char* method, XmlRpcValue const& params);
-+ virtual std::string generateHeader(std::string const& body);
-+ virtual bool writeRequest();
-+ virtual bool readHeader();
-+ virtual bool readResponse();
-+ virtual bool parseResponse(XmlRpcValue& result);
-+
-+ // Possible IO states for the connection
-+ enum ClientConnectionState { NO_CONNECTION, CONNECTING, WRITE_REQUEST, READ_HEADER, READ_RESPONSE, IDLE };
-+ ClientConnectionState _connectionState;
-+
-+ // Server location
-+ std::string _host;
-+ std::string _uri;
-+ int _port;
-+ public:
-+ const std::string &getHost() { return _host; }
-+ const std::string &getUri() { return _uri; }
-+ int getPort() const { return _port; }
-+
-+ // The xml-encoded request, http header of response, and response xml
-+ std::string _request;
-+ std::string _header;
-+ std::string _response;
-+
-+ // Number of times the client has attempted to send the request
-+ int _sendAttempts;
-+
-+ // Number of bytes of the request that have been written to the socket so far
-+ int _bytesWritten;
-+
-+ // True if we are currently executing a request. If you want to multithread,
-+ // each thread should have its own client.
-+ bool _executing;
-+
-+ // True if the server closed the connection
-+ bool _eof;
-+
-+ // True if a fault response was returned by the server
-+ bool _isFault;
-+
-+ // Number of bytes expected in the response body (parsed from response header)
-+ int _contentLength;
-+
-+ // Event dispatcher
-+ XmlRpcDispatch _disp;
-+
-+ }; // class XmlRpcClient
-+
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCCLIENT_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
-new file mode 100644
-index 0000000..8af174a
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
-@@ -0,0 +1,55 @@
-+/*********************************************************************
-+*
-+* Software License Agreement (BSD License)
-+*
-+* Copyright (c) 2009, Willow Garage, Inc.
-+* All rights reserved.
-+*
-+* Redistribution and use in source and binary forms, with or without
-+* modification, are permitted provided that the following conditions
-+* are met:
-+*
-+* * Redistributions of source code must retain the above copyright
-+* notice, this list of conditions and the following disclaimer.
-+* * Redistributions in binary form must reproduce the above
-+* copyright notice, this list of conditions and the following
-+* disclaimer in the documentation and/or other materials provided
-+* with the distribution.
-+* * Neither the name of the Willow Garage nor the names of its
-+* contributors may be used to endorse or promote products derived
-+* from this software without specific prior written permission.
-+*
-+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-+* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-+* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+* POSSIBILITY OF SUCH DAMAGE.
-+*
-+*********************************************************************/
-+/*
-+ * Cross platform macros.
-+ *
-+ */
-+#ifndef XMLRPCPP_DECL_H_INCLUDED
-+#define XMLRPCPP_DECL_H_INCLUDED
-+
-+#include <ros/macros.h>
-+
-+#ifdef ROS_BUILD_SHARED_LIBS // ros is being built around shared libraries
-+ #ifdef xmlrpcpp_EXPORTS // we are building a shared lib/dll
-+ #define XMLRPCPP_DECL ROS_HELPER_EXPORT
-+ #else // we are using shared lib/dll
-+ #define XMLRPCPP_DECL ROS_HELPER_IMPORT
-+ #endif
-+#else // ros is being built around static libraries
-+ #define XMLRPCPP_DECL
-+#endif
-+
-+#endif /* XMLRPCPP_DECL_H_INCLUDED */
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
-new file mode 100644
-index 0000000..5e90822
---- /dev/null
+
+ namespace XmlRpc {
+
+diff --git a/utilities/xmlrpcpp/include/XmlRpcDecl.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
+similarity index 100%
+rename from utilities/xmlrpcpp/include/XmlRpcDecl.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
+diff --git a/utilities/xmlrpcpp/include/XmlRpcDispatch.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
+similarity index 98%
+rename from utilities/xmlrpcpp/include/XmlRpcDispatch.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
+index 12b01ad..5e90822 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcDispatch.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
-@@ -0,0 +1,89 @@
-+
-+#ifndef _XMLRPCDISPATCH_H_
-+#define _XMLRPCDISPATCH_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
+@@ -8,7 +8,7 @@
+ # pragma warning(disable:4786) // identifier was truncated in debug info
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <list>
-+#endif
-+
-+namespace XmlRpc {
-+
-+ // An RPC source represents a file descriptor to monitor
-+ class XmlRpcSource;
-+
-+ //! An object which monitors file descriptors for events and performs
-+ //! callbacks when interesting events happen.
-+ class XMLRPCPP_DECL XmlRpcDispatch {
-+ public:
-+ //! Constructor
-+ XmlRpcDispatch();
-+ ~XmlRpcDispatch();
-+
-+ //! Values indicating the type of events a source is interested in
-+ enum EventType {
-+ ReadableEvent = 1, //!< data available to read
-+ WritableEvent = 2, //!< connected/data can be written without blocking
-+ Exception = 4 //!< uh oh
-+ };
-+
-+ //! Monitor this source for the event types specified by the event mask
-+ //! and call its event handler when any of the events occur.
-+ //! @param source The source to monitor
-+ //! @param eventMask Which event types to watch for. \see EventType
-+ void addSource(XmlRpcSource* source, unsigned eventMask);
-+
-+ //! Stop monitoring this source.
-+ //! @param source The source to stop monitoring
-+ void removeSource(XmlRpcSource* source);
-+
-+ //! Modify the types of events to watch for on this source
-+ void setSourceEvents(XmlRpcSource* source, unsigned eventMask);
-+
-+
-+ //! Watch current set of sources and process events for the specified
-+ //! duration (in ms, -1 implies wait forever, or until exit is called)
-+ void work(double msTime);
-+
-+ //! Exit from work routine
-+ void exit();
-+
-+ //! Clear all sources from the monitored sources list. Sources are closed.
-+ void clear();
-+
-+ // helper
-+ double getTime();
-+
-+ // A source to monitor and what to monitor it for
-+ struct MonitoredSource {
-+ MonitoredSource(XmlRpcSource* src, unsigned mask) : _src(src), _mask(mask) {}
-+ XmlRpcSource* getSource() const { return _src; }
-+ unsigned& getMask() { return _mask; }
-+ XmlRpcSource* _src;
-+ unsigned _mask;
-+ };
-+
-+ // A list of sources to monitor
-+ typedef std::list< MonitoredSource > SourceList;
-+
-+ // Sources being monitored
-+ SourceList _sources;
-+ protected:
-+
-+ // When work should stop (-1 implies wait forever, or until exit is called)
-+ double _endTime;
-+
-+ bool _doClear;
-+ bool _inWork;
-+
-+ };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCDISPATCH_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
-new file mode 100644
-index 0000000..4e8a2a6
---- /dev/null
+
+ #ifndef MAKEDEPEND
+ # include <list>
+diff --git a/utilities/xmlrpcpp/include/XmlRpcException.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
+similarity index 96%
+rename from utilities/xmlrpcpp/include/XmlRpcException.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
+index bff5bf2..4e8a2a6 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcException.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
-@@ -0,0 +1,44 @@
-+
-+#ifndef _XMLRPCEXCEPTION_H_
-+#define _XMLRPCEXCEPTION_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
+@@ -12,7 +12,7 @@
+ # include <string>
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+
-+namespace XmlRpc {
-+
-+ //! A class representing an error.
-+ //! If server methods throw this exception, a fault response is returned
-+ //! to the client.
-+ class XMLRPCPP_DECL XmlRpcException {
-+ public:
-+ //! Constructor
-+ //! @param message A descriptive error message
-+ //! @param code An integer error code
-+ XmlRpcException(const std::string& message, int code=-1) :
-+ _message(message), _code(code) {}
-+
-+ //! Return the error message.
-+ const std::string& getMessage() const { return _message; }
-+
-+ //! Return the error code.
-+ int getCode() const { return _code; }
-+
-+ private:
-+ std::string _message;
-+ int _code;
-+ };
-+
-+}
-+
-+#endif // _XMLRPCEXCEPTION_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
-new file mode 100644
-index 0000000..ac16dae
---- /dev/null
+
+
+ namespace XmlRpc {
+diff --git a/utilities/xmlrpcpp/include/XmlRpcServer.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
+similarity index 96%
+rename from utilities/xmlrpcpp/include/XmlRpcServer.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
+index 035d383..ac16dae 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcServer.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
-@@ -0,0 +1,114 @@
-+// this file modified by Morgan Quigley on 22 Apr 2008.
-+// added features: server can be opened on port 0 and you can read back
-+// what port the OS gave you
-+
-+#ifndef _XMLRPCSERVER_H_
-+#define _XMLRPCSERVER_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <map>
-+# include <string>
-+#endif
-+
+@@ -16,9 +16,9 @@
+ # include <string>
+ #endif
+
+-#include "XmlRpcDispatch.h"
+-#include "XmlRpcSource.h"
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDispatch.h"
+#include "xmlrpcpp/XmlRpcSource.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+
-+ // An abstract class supporting XML RPC methods
-+ class XmlRpcServerMethod;
-+
-+ // Class representing connections to specific clients
-+ class XmlRpcServerConnection;
-+
-+ // Class representing argument and result values
-+ class XmlRpcValue;
-+
-+
-+ //! A class to handle XML RPC requests
-+ class XMLRPCPP_DECL XmlRpcServer : public XmlRpcSource {
-+ public:
-+ //! Create a server object.
-+ XmlRpcServer();
-+ //! Destructor.
-+ virtual ~XmlRpcServer();
-+
-+ //! Specify whether introspection is enabled or not. Default is not enabled.
-+ void enableIntrospection(bool enabled=true);
-+
-+ //! Add a command to the RPC server
-+ void addMethod(XmlRpcServerMethod* method);
-+
-+ //! Remove a command from the RPC server
-+ void removeMethod(XmlRpcServerMethod* method);
-+
-+ //! Remove a command from the RPC server by name
-+ void removeMethod(const std::string& methodName);
-+
-+ //! Look up a method by name
-+ XmlRpcServerMethod* findMethod(const std::string& name) const;
-+
-+ //! Create a socket, bind to the specified port, and
-+ //! set it in listen mode to make it available for clients.
-+ bool bindAndListen(int port, int backlog = 5);
-+
-+ //! Process client requests for the specified time
-+ void work(double msTime);
-+
-+ //! Temporarily stop processing client requests and exit the work() method.
-+ void exit();
-+
-+ //! Close all connections with clients and the socket file descriptor
-+ void shutdown();
-+
-+ //! Introspection support
-+ void listMethods(XmlRpcValue& result);
-+
-+ // XmlRpcSource interface implementation
-+
-+ //! Handle client connection requests
-+ virtual unsigned handleEvent(unsigned eventType);
-+
-+ //! Remove a connection from the dispatcher
-+ virtual void removeConnection(XmlRpcServerConnection*);
-+
-+ inline int get_port() { return _port; }
-+
-+ XmlRpcDispatch *get_dispatch() { return &_disp; }
-+
-+ protected:
-+
-+ //! Accept a client connection request
-+ virtual void acceptConnection();
-+
-+ //! Create a new connection object for processing requests from a specific client.
-+ virtual XmlRpcServerConnection* createConnection(int socket);
-+
-+ // Whether the introspection API is supported by this server
-+ bool _introspectionEnabled;
-+
-+ // Event dispatcher
-+ XmlRpcDispatch _disp;
-+
-+ // Collection of methods. This could be a set keyed on method name if we wanted...
-+ typedef std::map< std::string, XmlRpcServerMethod* > MethodMap;
-+ MethodMap _methods;
-+
-+ // system methods
-+ XmlRpcServerMethod* _listMethods;
-+ XmlRpcServerMethod* _methodHelp;
-+
-+ int _port;
-+
-+ };
-+} // namespace XmlRpc
-+
-+#endif //_XMLRPCSERVER_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
-new file mode 100644
-index 0000000..ed4d092
---- /dev/null
+
+ namespace XmlRpc {
+
+diff --git a/utilities/xmlrpcpp/include/XmlRpcServerConnection.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
+similarity index 96%
+rename from utilities/xmlrpcpp/include/XmlRpcServerConnection.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
+index f5c224d..ed4d092 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcServerConnection.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
-@@ -0,0 +1,103 @@
-+#ifndef _XMLRPCSERVERCONNECTION_H_
-+#define _XMLRPCSERVERCONNECTION_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
+@@ -11,9 +11,9 @@
+ # include <string>
+ #endif
+
+-#include "XmlRpcValue.h"
+-#include "XmlRpcSource.h"
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcValue.h"
+#include "xmlrpcpp/XmlRpcSource.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+
-+ // The server waits for client connections and provides methods
-+ class XmlRpcServer;
-+ class XmlRpcServerMethod;
-+
-+ //! A class to handle XML RPC requests from a particular client
-+ class XMLRPCPP_DECL XmlRpcServerConnection : public XmlRpcSource {
-+ public:
-+ // Static data
-+ static const char METHODNAME_TAG[];
-+ static const char PARAMS_TAG[];
-+ static const char PARAMS_ETAG[];
-+ static const char PARAM_TAG[];
-+ static const char PARAM_ETAG[];
-+
-+ static const std::string SYSTEM_MULTICALL;
-+ static const std::string METHODNAME;
-+ static const std::string PARAMS;
-+
-+ static const std::string FAULTCODE;
-+ static const std::string FAULTSTRING;
-+
-+ //! Constructor
-+ XmlRpcServerConnection(int fd, XmlRpcServer* server, bool deleteOnClose = false);
-+ //! Destructor
-+ virtual ~XmlRpcServerConnection();
-+
-+ // XmlRpcSource interface implementation
-+ //! Handle IO on the client connection socket.
-+ //! @param eventType Type of IO event that occurred. @see XmlRpcDispatch::EventType.
-+ virtual unsigned handleEvent(unsigned eventType);
-+
-+ protected:
-+
-+ bool readHeader();
-+ bool readRequest();
-+ bool writeResponse();
-+
-+ // Parses the request, runs the method, generates the response xml.
-+ virtual void executeRequest();
-+
-+ // Parse the methodName and parameters from the request.
-+ std::string parseRequest(XmlRpcValue& params);
-+
-+ // Execute a named method with the specified params.
-+ bool executeMethod(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
-+
-+ // Execute multiple calls and return the results in an array.
-+ bool executeMulticall(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
-+
-+ // Construct a response from the result XML.
-+ void generateResponse(std::string const& resultXml);
-+ void generateFaultResponse(std::string const& msg, int errorCode = -1);
-+ std::string generateHeader(std::string const& body);
-+
-+
-+ // The XmlRpc server that accepted this connection
-+ XmlRpcServer* _server;
-+
-+ // Possible IO states for the connection
-+ enum ServerConnectionState { READ_HEADER, READ_REQUEST, WRITE_RESPONSE };
-+ ServerConnectionState _connectionState;
-+
-+ // Request headers
-+ std::string _header;
-+
-+ // Number of bytes expected in the request body (parsed from header)
-+ int _contentLength;
-+
-+ // Request body
-+ std::string _request;
-+
-+ // Response
-+ std::string _response;
-+
-+ // Number of bytes of the response written so far
-+ int _bytesWritten;
-+
-+ // Whether to keep the current client connection open for further requests
-+ bool _keepAlive;
-+ };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCSERVERCONNECTION_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
-new file mode 100644
-index 0000000..90dddcd
---- /dev/null
+
+ namespace XmlRpc {
+
+diff --git a/utilities/xmlrpcpp/include/XmlRpcServerMethod.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
+similarity index 97%
+rename from utilities/xmlrpcpp/include/XmlRpcServerMethod.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
+index 7b7ddca..90dddcd 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcServerMethod.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
-@@ -0,0 +1,49 @@
-+
-+#ifndef _XMLRPCSERVERMETHOD_H_
-+#define _XMLRPCSERVERMETHOD_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
+@@ -8,7 +8,7 @@
+ # pragma warning(disable:4786) // identifier was truncated in debug info
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+namespace XmlRpc {
-+
-+ // Representation of a parameter or result value
-+ class XmlRpcValue;
-+
-+ // The XmlRpcServer processes client requests to call RPCs
-+ class XmlRpcServer;
-+
-+ //! Abstract class representing a single RPC method
-+ class XMLRPCPP_DECL XmlRpcServerMethod {
-+ public:
-+ //! Constructor
-+ XmlRpcServerMethod(std::string const& name, XmlRpcServer* server = 0);
-+ //! Destructor
-+ virtual ~XmlRpcServerMethod();
-+
-+ //! Returns the name of the method
-+ std::string& name() { return _name; }
-+
-+ //! Execute the method. Subclasses must provide a definition for this method.
-+ virtual void execute(XmlRpcValue& params, XmlRpcValue& result) = 0;
-+
-+ //! Returns a help string for the method.
-+ //! Subclasses should define this method if introspection is being used.
-+ virtual std::string help() { return std::string(); }
-+
-+ protected:
-+ std::string _name;
-+ XmlRpcServer* _server;
-+ };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCSERVERMETHOD_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
-new file mode 100644
-index 0000000..bc9a530
---- /dev/null
+
+ #ifndef MAKEDEPEND
+ # include <string>
+diff --git a/utilities/xmlrpcpp/include/XmlRpcSocket.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
+similarity index 98%
+rename from utilities/xmlrpcpp/include/XmlRpcSocket.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
+index 711a520..bc9a530 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcSocket.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
-@@ -0,0 +1,80 @@
-+// this file modified by Morgan Quigley on 22 Apr 2008.
-+// added features: server can be opened on port 0 and you can read back
-+// what port the OS gave you
-+
-+#ifndef _XMLRPCSOCKET_H_
-+#define _XMLRPCSOCKET_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
+@@ -15,7 +15,7 @@
+ # include <string>
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+ //! A platform-independent socket API.
-+ class XMLRPCPP_DECL XmlRpcSocket {
-+ public:
-+
-+ static bool s_use_ipv6_;
-+
-+ //! Creates a stream (TCP) socket. Returns -1 on failure.
-+ static int socket();
-+
-+ //! Closes a socket.
-+ static void close(int socket);
-+
-+
-+ //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure.
-+ static bool setNonBlocking(int socket);
-+
-+ //! Read text from the specified socket. Returns false on error.
-+ static bool nbRead(int socket, std::string& s, bool *eof);
-+
-+ //! Write text to the specified socket. Returns false on error.
-+ static bool nbWrite(int socket, std::string& s, int *bytesSoFar);
-+
-+
-+ // The next four methods are appropriate for servers.
-+
-+ //! Allow the port the specified socket is bound to to be re-bound immediately so
-+ //! server re-starts are not delayed. Returns false on failure.
-+ static bool setReuseAddr(int socket);
-+
-+ //! Bind to a specified port
-+ static bool bind(int socket, int port);
-+
-+ static int get_port(int socket);
-+
-+ //! Set socket in listen mode
-+ static bool listen(int socket, int backlog);
-+
-+ //! Accept a client connection request
-+ static int accept(int socket);
-+
-+
-+
-+ //! Connect a socket to a server (from a client)
-+ static bool connect(int socket, std::string& host, int port);
-+
-+
-+ //! Returns last errno
-+ static int getError();
-+
-+ //! Returns message corresponding to last error
-+ static std::string getErrorMsg();
-+
-+ //! Returns message corresponding to error
-+ static std::string getErrorMsg(int error);
-+ };
-+
-+} // namespace XmlRpc
-+
-+#endif
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
-new file mode 100644
-index 0000000..217f416
---- /dev/null
+
+ namespace XmlRpc {
+
+diff --git a/utilities/xmlrpcpp/include/XmlRpcSource.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
+similarity index 98%
+rename from utilities/xmlrpcpp/include/XmlRpcSource.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
+index f82ccb1..217f416 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcSource.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
-@@ -0,0 +1,57 @@
-+
-+#ifndef _XMLRPCSOURCE_H_
-+#define _XMLRPCSOURCE_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
+@@ -8,7 +8,7 @@
+ # pragma warning(disable:4786) // identifier was truncated in debug info
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+ //! An RPC source represents a file descriptor to monitor
-+ class XMLRPCPP_DECL XmlRpcSource {
-+ public:
-+ //! Constructor
-+ //! @param fd The socket file descriptor to monitor.
-+ //! @param deleteOnClose If true, the object deletes itself when close is called.
-+ XmlRpcSource(int fd = -1, bool deleteOnClose = false);
-+
-+ //! Destructor
-+ virtual ~XmlRpcSource();
-+
-+ //! Return the file descriptor being monitored.
-+ int getfd() const { return _fd; }
-+ //! Specify the file descriptor to monitor.
-+ void setfd(int fd) { _fd = fd; }
-+
-+ //! Return whether the file descriptor should be kept open if it is no longer monitored.
-+ bool getKeepOpen() const { return _keepOpen; }
-+ //! Specify whether the file descriptor should be kept open if it is no longer monitored.
-+ void setKeepOpen(bool b=true) { _keepOpen = b; }
-+
-+ //! Close the owned fd. If deleteOnClose was specified at construction, the object is deleted.
-+ virtual void close();
-+
-+ //! Return true to continue monitoring this source
-+ virtual unsigned handleEvent(unsigned eventType) = 0;
-+
-+ private:
-+
-+ // Socket. This should really be a SOCKET (an alias for unsigned int*) on windows...
-+ int _fd;
-+
-+ // In the server, a new source (XmlRpcServerConnection) is created
-+ // for each connected client. When each connection is closed, the
-+ // corresponding source object is deleted.
-+ bool _deleteOnClose;
-+
-+ // In the client, keep connections open if you intend to make multiple calls.
-+ bool _keepOpen;
-+ };
-+} // namespace XmlRpc
-+
-+#endif //_XMLRPCSOURCE_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
-new file mode 100644
-index 0000000..acde160
---- /dev/null
+
+ namespace XmlRpc {
+
+diff --git a/utilities/xmlrpcpp/include/XmlRpcUtil.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
+similarity index 98%
+rename from utilities/xmlrpcpp/include/XmlRpcUtil.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
+index 78627f4..acde160 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcUtil.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
-@@ -0,0 +1,63 @@
-+#ifndef _XMLRPCUTIL_H_
-+#define _XMLRPCUTIL_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
+@@ -11,7 +11,7 @@
+ # include <string>
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#if defined(_MSC_VER)
-+# define snprintf _snprintf_s
-+# define vsnprintf _vsnprintf_s
-+# define strcasecmp _stricmp
-+# define strncasecmp _strnicmp
-+#elif defined(__BORLANDC__)
-+# define strcasecmp stricmp
-+# define strncasecmp strnicmp
-+#endif
-+
-+namespace XmlRpc {
-+
-+ //! Utilities for XML parsing, encoding, and decoding and message handlers.
-+ class XMLRPCPP_DECL XmlRpcUtil {
-+ public:
-+ // hokey xml parsing
-+ //! Returns contents between <tag> and </tag>, updates offset to char after </tag>
-+ static std::string parseTag(const char* tag, std::string const& xml, int* offset);
-+
-+ //! Returns true if the tag is found and updates offset to the char after the tag
-+ static bool findTag(const char* tag, std::string const& xml, int* offset);
-+
-+ //! Returns the next tag and updates offset to the char after the tag, or empty string
-+ //! if the next non-whitespace character is not '<'
-+ static std::string getNextTag(std::string const& xml, int* offset);
-+
-+ //! Returns true if the tag is found at the specified offset (modulo any whitespace)
-+ //! and updates offset to the char after the tag
-+ static bool nextTagIs(const char* tag, std::string const& xml, int* offset);
-+
-+
-+ //! Convert raw text to encoded xml.
-+ static std::string xmlEncode(const std::string& raw);
-+
-+ //! Convert encoded xml to raw text
-+ static std::string xmlDecode(const std::string& encoded);
-+
-+
-+ //! Dump messages somewhere
-+ static void log(int level, const char* fmt, ...);
-+
-+ //! Dump error messages somewhere
-+ static void error(const char* fmt, ...);
-+
-+ };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCUTIL_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
-new file mode 100644
-index 0000000..0d72c59
---- /dev/null
+
+ #if defined(_MSC_VER)
+ # define snprintf _snprintf_s
+diff --git a/utilities/xmlrpcpp/include/XmlRpcValue.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
+similarity index 99%
+rename from utilities/xmlrpcpp/include/XmlRpcValue.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
+index fe6cb8c..0d72c59 100644
+--- a/utilities/xmlrpcpp/include/XmlRpcValue.h
+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
-@@ -0,0 +1,195 @@
-+
-+#ifndef _XMLRPCVALUE_H_
-+#define _XMLRPCVALUE_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786) // identifier was truncated in debug info
-+#endif
-+
+@@ -8,7 +8,7 @@
+ # pragma warning(disable:4786) // identifier was truncated in debug info
+ #endif
+
+-#include "XmlRpcDecl.h"
+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <map>
-+# include <string>
-+# include <vector>
-+# include <time.h>
-+#endif
-+
-+namespace XmlRpc {
-+
-+ //! RPC method arguments and results are represented by Values
-+ // should probably refcount them...
-+ class XMLRPCPP_DECL XmlRpcValue {
-+ public:
-+
-+
-+ enum Type {
-+ TypeInvalid,
-+ TypeBoolean,
-+ TypeInt,
-+ TypeDouble,
-+ TypeString,
-+ TypeDateTime,
-+ TypeBase64,
-+ TypeArray,
-+ TypeStruct
-+ };
-+
-+ // Non-primitive types
-+ typedef std::vector<char> BinaryData;
-+ typedef std::vector<XmlRpcValue> ValueArray;
-+ typedef std::map<std::string, XmlRpcValue> ValueStruct;
-+ typedef ValueStruct::iterator iterator;
-+
-+
-+ //! Constructors
-+ XmlRpcValue() : _type(TypeInvalid) { _value.asBinary = 0; }
-+ XmlRpcValue(bool value) : _type(TypeBoolean) { _value.asBool = value; }
-+ XmlRpcValue(int value) : _type(TypeInt) { _value.asInt = value; }
-+ XmlRpcValue(double value) : _type(TypeDouble) { _value.asDouble = value; }
-+
-+ XmlRpcValue(std::string const& value) : _type(TypeString)
-+ { _value.asString = new std::string(value); }
-+
-+ XmlRpcValue(const char* value) : _type(TypeString)
-+ { _value.asString = new std::string(value); }
-+
-+ XmlRpcValue(struct tm* value) : _type(TypeDateTime)
-+ { _value.asTime = new struct tm(*value); }
-+
-+
-+ XmlRpcValue(void* value, int nBytes) : _type(TypeBase64)
-+ {
-+ _value.asBinary = new BinaryData((char*)value, ((char*)value)+nBytes);
-+ }
-+
-+ //! Construct from xml, beginning at *offset chars into the string, updates offset
-+ XmlRpcValue(std::string const& xml, int* offset) : _type(TypeInvalid)
-+ { if ( ! fromXml(xml,offset)) _type = TypeInvalid; }
-+
-+ //! Copy
-+ XmlRpcValue(XmlRpcValue const& rhs) : _type(TypeInvalid) { *this = rhs; }
-+
-+ //! Destructor (make virtual if you want to subclass)
-+ /*virtual*/ ~XmlRpcValue() { invalidate(); }
-+
-+ //! Erase the current value
-+ void clear() { invalidate(); }
-+
-+ // Operators
-+ XmlRpcValue& operator=(XmlRpcValue const& rhs);
-+ XmlRpcValue& operator=(int const& rhs) { return operator=(XmlRpcValue(rhs)); }
-+ XmlRpcValue& operator=(double const& rhs) { return operator=(XmlRpcValue(rhs)); }
-+ XmlRpcValue& operator=(const char* rhs) { return operator=(XmlRpcValue(std::string(rhs))); }
-+
-+ bool operator==(XmlRpcValue const& other) const;
-+ bool operator!=(XmlRpcValue const& other) const;
-+
-+ operator bool&() { assertTypeOrInvalid(TypeBoolean); return _value.asBool; }
-+ operator int&() { assertTypeOrInvalid(TypeInt); return _value.asInt; }
-+ operator double&() { assertTypeOrInvalid(TypeDouble); return _value.asDouble; }
-+ operator std::string&() { assertTypeOrInvalid(TypeString); return *_value.asString; }
-+ operator BinaryData&() { assertTypeOrInvalid(TypeBase64); return *_value.asBinary; }
-+ operator struct tm&() { assertTypeOrInvalid(TypeDateTime); return *_value.asTime; }
-+
-+ XmlRpcValue const& operator[](int i) const { assertArray(i+1); return _value.asArray->at(i); }
-+ XmlRpcValue& operator[](int i) { assertArray(i+1); return _value.asArray->at(i); }
-+
-+ XmlRpcValue& operator[](std::string const& k) { assertStruct(); return (*_value.asStruct)[k]; }
-+ XmlRpcValue& operator[](const char* k) { assertStruct(); std::string s(k); return (*_value.asStruct)[s]; }
-+
-+ iterator begin() {assertStruct(); return (*_value.asStruct).begin(); }
-+ iterator end() {assertStruct(); return (*_value.asStruct).end(); }
-+
-+ // Accessors
-+ //! Return true if the value has been set to something.
-+ bool valid() const { return _type != TypeInvalid; }
-+
-+ //! Return the type of the value stored. \see Type.
-+ Type const &getType() const { return _type; }
-+
-+ //! Return the size for string, base64, array, and struct values.
-+ int size() const;
-+
-+ //! Specify the size for array values. Array values will grow beyond this size if needed.
-+ void setSize(int size) { assertArray(size); }
-+
-+ //! Check for the existence of a struct member by name.
-+ bool hasMember(const std::string& name) const;
-+
-+ //! Decode xml. Destroys any existing value.
-+ bool fromXml(std::string const& valueXml, int* offset);
-+
-+ //! Encode the Value in xml
-+ std::string toXml() const;
-+
-+ //! Write the value (no xml encoding)
-+ std::ostream& write(std::ostream& os) const;
-+
-+ // Formatting
-+ //! Return the format used to write double values.
-+ static std::string const& getDoubleFormat() { return _doubleFormat; }
-+
-+ //! Specify the format used to write double values.
-+ static void setDoubleFormat(const char* f) { _doubleFormat = f; }
-+
-+
-+ protected:
-+ // Clean up
-+ void invalidate();
-+
-+ // Type checking
-+ void assertTypeOrInvalid(Type t);
-+ void assertArray(int size) const;
-+ void assertArray(int size);
-+ void assertStruct();
-+
-+ // XML decoding
-+ bool boolFromXml(std::string const& valueXml, int* offset);
-+ bool intFromXml(std::string const& valueXml, int* offset);
-+ bool doubleFromXml(std::string const& valueXml, int* offset);
-+ bool stringFromXml(std::string const& valueXml, int* offset);
-+ bool timeFromXml(std::string const& valueXml, int* offset);
-+ bool binaryFromXml(std::string const& valueXml, int* offset);
-+ bool arrayFromXml(std::string const& valueXml, int* offset);
-+ bool structFromXml(std::string const& valueXml, int* offset);
-+
-+ // XML encoding
-+ std::string boolToXml() const;
-+ std::string intToXml() const;
-+ std::string doubleToXml() const;
-+ std::string stringToXml() const;
-+ std::string timeToXml() const;
-+ std::string binaryToXml() const;
-+ std::string arrayToXml() const;
-+ std::string structToXml() const;
-+
-+ // Format strings
-+ static std::string _doubleFormat;
-+
-+ // Type tag and values
-+ Type _type;
-+
-+ // At some point I will split off Arrays and Structs into
-+ // separate ref-counted objects for more efficient copying.
-+ union {
-+ bool asBool;
-+ int asInt;
-+ double asDouble;
-+ struct tm* asTime;
-+ std::string* asString;
-+ BinaryData* asBinary;
-+ ValueArray* asArray;
-+ ValueStruct* asStruct;
-+ } _value;
-+
-+ };
-+} // namespace XmlRpc
-+
-+
-+std::ostream& operator<<(std::ostream& os, XmlRpc::XmlRpcValue& v);
-+
-+
-+#endif // _XMLRPCVALUE_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/base64.h b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-new file mode 100644
-index 0000000..c239403
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-@@ -0,0 +1,380 @@
-+
-+
-+// base64.hpp
-+// Autor Konstantin Pilipchuk
-+// mailto:lostd at ukr.net
-+//
-+//
-+
-+#if !defined(__BASE64_H_INCLUDED__)
-+#define __BASE64_H_INCLUDED__ 1
-+
-+#ifndef MAKEDEPEND
-+# include <iterator>
-+#endif
-+
-+#include <ios>
-+
-+static
-+int _base64Chars[]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-+ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
-+ '0','1','2','3','4','5','6','7','8','9',
-+ '+','/' };
-+
-+
-+#define _0000_0011 0x03
-+#define _1111_1100 0xFC
-+#define _1111_0000 0xF0
-+#define _0011_0000 0x30
-+#define _0011_1100 0x3C
-+#define _0000_1111 0x0F
-+#define _1100_0000 0xC0
-+#define _0011_1111 0x3F
-+
-+#define _EQUAL_CHAR (-1)
-+#define _UNKNOWN_CHAR (-2)
-+
-+#define _IOS_FAILBIT std::ios_base::failbit
-+#define _IOS_EOFBIT std::ios_base::eofbit
-+#define _IOS_BADBIT std::ios_base::badbit
-+#define _IOS_GOODBIT std::ios_base::goodbit
-+
-+// TEMPLATE CLASS base64_put
-+template<class _E = char, class _Tr = std::char_traits<_E> >
-+class base64
-+{
-+public:
-+
-+ typedef unsigned char byte_t;
-+ typedef _E char_type;
-+ typedef _Tr traits_type;
-+
-+ // base64 requires max line length <= 72 characters
-+ // you can fill end of line
-+ // it may be crlf, crlfsp, noline or other class like it
-+
-+
-+ struct crlf
-+ {
-+ template<class _OI>
-+ _OI operator()(_OI _To) const{
-+ *_To = _Tr::to_char_type('\r'); ++_To;
-+ *_To = _Tr::to_char_type('\n'); ++_To;
-+
-+ return (_To);
-+ }
-+ };
-+
-+
-+ struct crlfsp
-+ {
-+ template<class _OI>
-+ _OI operator()(_OI _To) const{
-+ *_To = _Tr::to_char_type('\r'); ++_To;
-+ *_To = _Tr::to_char_type('\n'); ++_To;
-+ *_To = _Tr::to_char_type(' '); ++_To;
-+
-+ return (_To);
-+ }
-+ };
-+
-+ struct noline
-+ {
-+ template<class _OI>
-+ _OI operator()(_OI _To) const{
-+ return (_To);
-+ }
-+ };
-+
-+ struct three2four
-+ {
-+ void zero()
-+ {
-+ _data[0] = 0;
-+ _data[1] = 0;
-+ _data[2] = 0;
-+ }
-+
-+ byte_t get_0() const
-+ {
-+ return _data[0];
-+ }
-+ byte_t get_1() const
-+ {
-+ return _data[1];
-+ }
-+ byte_t get_2() const
-+ {
-+ return _data[2];
-+ }
-+
-+ void set_0(byte_t _ch)
-+ {
-+ _data[0] = _ch;
-+ }
-+
-+ void set_1(byte_t _ch)
-+ {
-+ _data[1] = _ch;
-+ }
-+
-+ void set_2(byte_t _ch)
-+ {
-+ _data[2] = _ch;
-+ }
-+
-+ // 0000 0000 1111 1111 2222 2222
-+ // xxxx xxxx xxxx xxxx xxxx xxxx
-+ // 0000 0011 1111 2222 2233 3333
-+
-+ int b64_0() const {return (_data[0] & _1111_1100) >> 2;}
-+ int b64_1() const {return ((_data[0] & _0000_0011) << 4) + ((_data[1] & _1111_0000)>>4);}
-+ int b64_2() const {return ((_data[1] & _0000_1111) << 2) + ((_data[2] & _1100_0000)>>6);}
-+ int b64_3() const {return (_data[2] & _0011_1111);}
-+
-+ void b64_0(int _ch) {_data[0] = ((_ch & _0011_1111) << 2) | (_0000_0011 & _data[0]);}
-+
-+ void b64_1(int _ch) {
-+ _data[0] = ((_ch & _0011_0000) >> 4) | (_1111_1100 & _data[0]);
-+ _data[1] = ((_ch & _0000_1111) << 4) | (_0000_1111 & _data[1]); }
-+
-+ void b64_2(int _ch) {
-+ _data[1] = ((_ch & _0011_1100) >> 2) | (_1111_0000 & _data[1]);
-+ _data[2] = ((_ch & _0000_0011) << 6) | (_0011_1111 & _data[2]); }
-+
-+ void b64_3(int _ch){
-+ _data[2] = (_ch & _0011_1111) | (_1100_0000 & _data[2]);}
-+
-+ private:
-+ byte_t _data[3];
-+
-+ };
-+
-+
-+
-+
-+ template<class _II, class _OI, class _State, class _Endline>
-+ _II put(_II _First, _II _Last, _OI _To, _State&, _Endline) const
-+ {
-+ three2four _3to4;
-+ int line_octets = 0;
-+
-+ while(_First != _Last)
-+ {
-+ _3to4.zero();
-+
-+ _3to4.set_0(*_First);
-+ _First++;
-+
-+ if(_First == _Last)
-+ {
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+ *_To = _Tr::to_char_type('='); ++_To;
-+ *_To = _Tr::to_char_type('='); ++_To;
-+ goto __end;
-+ }
-+
-+ _3to4.set_1(*_First);
-+ _First++;
-+
-+ if(_First == _Last)
-+ {
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-+ *_To = _Tr::to_char_type('='); ++_To;
-+ goto __end;
-+ }
-+
-+ _3to4.set_2(*_First);
-+ _First++;
-+
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-+ *_To = _Tr::to_char_type(_base64Chars[_3to4.b64_3()]); ++_To;
-+
-+ if(line_octets == 17)
-+ {
-+ //_To = _Endl(_To);
-+ *_To = '\n'; ++_To;
-+ line_octets = 0;
-+ }
-+ else
-+ ++line_octets;
-+ }
-+
-+ __end: ;
-+
-+ return (_First);
-+
-+ }
-+
-+
-+ template<class _II, class _OI, class _State>
-+ _II get(_II _First, _II _Last, _OI _To, _State& _St) const
-+ {
-+ three2four _3to4;
-+ int _Char;
-+
-+ while(_First != _Last)
-+ {
-+
-+ // Take octet
-+ _3to4.zero();
-+
-+ // -- 0 --
-+ // Search next valid char...
-+ while((_Char = _getCharType(*_First)) < 0 && _Char == _UNKNOWN_CHAR)
-+ {
-+ if(++_First == _Last)
-+ {
-+ _St |= _IOS_FAILBIT|_IOS_EOFBIT; return _First; // unexpected EOF
-+ }
-+ }
-+
-+ if(_Char == _EQUAL_CHAR){
-+ // Error! First character in octet can't be '='
-+ _St |= _IOS_FAILBIT;
-+ return _First;
-+ }
-+ else
-+ _3to4.b64_0(_Char);
-+
-+
-+ // -- 1 --
-+ // Search next valid char...
-+ while(++_First != _Last)
-+ if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+ break;
-+
-+ if(_First == _Last) {
-+ _St |= _IOS_FAILBIT|_IOS_EOFBIT; // unexpected EOF
-+ return _First;
-+ }
-+
-+ if(_Char == _EQUAL_CHAR){
-+ // Error! Second character in octet can't be '='
-+ _St |= _IOS_FAILBIT;
-+ return _First;
-+ }
-+ else
-+ _3to4.b64_1(_Char);
-+
-+
-+ // -- 2 --
-+ // Search next valid char...
-+ while(++_First != _Last)
-+ if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+ break;
-+
-+ if(_First == _Last) {
-+ // Error! Unexpected EOF. Must be '=' or base64 character
-+ _St |= _IOS_FAILBIT|_IOS_EOFBIT;
-+ return _First;
-+ }
-+
-+ if(_Char == _EQUAL_CHAR){
-+ // OK!
-+ _3to4.b64_2(0);
-+ _3to4.b64_3(0);
-+
-+ // chek for EOF
-+ if(++_First == _Last)
-+ {
-+ // Error! Unexpected EOF. Must be '='. Ignore it.
-+ //_St |= _IOS_BADBIT|_IOS_EOFBIT;
-+ _St |= _IOS_EOFBIT;
-+ }
-+ else
-+ if(_getCharType(*_First) != _EQUAL_CHAR)
-+ {
-+ // Error! Must be '='. Ignore it.
-+ //_St |= _IOS_BADBIT;
-+ }
-+ else
-+ ++_First; // Skip '='
-+
-+ // write 1 byte to output
-+ *_To = (byte_t) _3to4.get_0();
-+ return _First;
-+ }
-+ else
-+ _3to4.b64_2(_Char);
-+
-+
-+ // -- 3 --
-+ // Search next valid char...
-+ while(++_First != _Last)
-+ if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+ break;
-+
-+ if(_First == _Last) {
-+ // Unexpected EOF. It's error. But ignore it.
-+ //_St |= _IOS_FAILBIT|_IOS_EOFBIT;
-+ _St |= _IOS_EOFBIT;
-+
-+ return _First;
-+ }
-+
-+ if(_Char == _EQUAL_CHAR)
-+ {
-+ // OK!
-+ _3to4.b64_3(0);
-+
-+ // write to output 2 bytes
-+ *_To = (byte_t) _3to4.get_0();
-+ *_To = (byte_t) _3to4.get_1();
-+
-+ ++_First; // set position to next character
-+
-+ return _First;
-+ }
-+ else
-+ _3to4.b64_3(_Char);
-+
-+
-+ // write to output 3 bytes
-+ *_To = (byte_t) _3to4.get_0();
-+ *_To = (byte_t) _3to4.get_1();
-+ *_To = (byte_t) _3to4.get_2();
-+
-+ ++_First;
-+
-+
-+ } // while(_First != _Last)
-+
-+ return (_First);
-+ }
-+
-+protected:
-+
-+ int _getCharType(int _Ch) const
-+ {
-+ if(_base64Chars[62] == _Ch)
-+ return 62;
-+
-+ if(_base64Chars[63] == _Ch)
-+ return 63;
-+
-+ if((_base64Chars[0] <= _Ch) && (_base64Chars[25] >= _Ch))
-+ return _Ch - _base64Chars[0];
-+
-+ if((_base64Chars[26] <= _Ch) && (_base64Chars[51] >= _Ch))
-+ return _Ch - _base64Chars[26] + 26;
-+
-+ if((_base64Chars[52] <= _Ch) && (_base64Chars[61] >= _Ch))
-+ return _Ch - _base64Chars[52] + 52;
-+
-+ if(_Ch == _Tr::to_int_type('='))
-+ return _EQUAL_CHAR;
-+
-+ return _UNKNOWN_CHAR;
-+ }
-+
-+
-+};
-+
-+
-+#endif
+
+ #ifndef MAKEDEPEND
+ # include <map>
+diff --git a/utilities/xmlrpcpp/include/base64.h b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
+similarity index 100%
+rename from utilities/xmlrpcpp/include/base64.h
+rename to utilities/xmlrpcpp/include/xmlrpcpp/base64.h
diff --git a/utilities/xmlrpcpp/src/XmlRpcClient.cpp b/utilities/xmlrpcpp/src/XmlRpcClient.cpp
index 31cda22..b533059 100644
--- a/utilities/xmlrpcpp/src/XmlRpcClient.cpp
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ros/ros-ros-comm.git
More information about the debian-science-commits
mailing list