| // |
| // Copyright (C) 2015 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| #ifndef PROXY_UTIL_H |
| #define PROXY_UTIL_H |
| |
| #include <string> |
| #include <vector> |
| |
| #include <XmlRpcValue.h> |
| |
| #include <brillo/any.h> |
| #include <brillo/variant_dictionary.h> |
| |
| // Conversion functions to go from XmlRpc::XmlRpcValue to brillo::Any and vice |
| // versa. |
| void GetXmlRpcValueFromBrilloAnyValue( |
| const brillo::Any& any_value_in, |
| XmlRpc::XmlRpcValue* xml_rpc_value_out); |
| // Note: We assume that all the XmlRpcValue array elements are of the same type |
| // even though they're not mandated by the Xml Rpc spec. |
| void GetBrilloAnyValueFromXmlRpcValue( |
| XmlRpc::XmlRpcValue* xml_rpc_value_in, |
| brillo::Any* any_value_out); |
| // Functions to access members of structs sent over XmlRpc and need to be converted |
| // to corresponding objects. Returns |true| if the value is found in the incoming data |
| // or |false| if the value was taken from the default supplied. |
| bool GetBoolValueFromXmlRpcValueStructMember( |
| XmlRpc::XmlRpcValue* xml_rpc_value_in, |
| const std::string& member_name, |
| bool default_value, |
| bool* value_out); |
| bool GetIntValueFromXmlRpcValueStructMember( |
| XmlRpc::XmlRpcValue* xml_rpc_value_in, |
| const std::string& member_name, |
| int default_value, |
| int* value_out); |
| bool GetDoubleValueFromXmlRpcValueStructMember( |
| XmlRpc::XmlRpcValue* xml_rpc_value_in, |
| const std::string& member_name, |
| double default_value, |
| double* value_out); |
| bool GetStringValueFromXmlRpcValueStructMember( |
| XmlRpc::XmlRpcValue* xml_rpc_value_in, |
| const std::string& member_name, |
| const std::string& default_value, |
| std::string* value_out); |
| bool GetStringVectorFromXmlRpcValueStructMember( |
| XmlRpc::XmlRpcValue* xml_rpc_value_in, |
| const std::string& member_name, |
| const std::vector<std::string>& default_value, |
| std::vector<std::string>* value_out); |
| |
| inline long GetMillisecondsFromSeconds(int time_seconds) { |
| return time_seconds * 1000; |
| } |
| inline double GetSecondsFromMilliseconds(long time_milliseconds) { |
| return static_cast<double>(time_milliseconds) / 1000; |
| } |
| #endif // PROXY_UTIL_H |