* @param ip IP Address to set.
* @return 0 if all is fine, -1 otherwise.
*/
-int ServiceOds::perform_update(const std::string& ip)
+Service::UpdateErrorCode ServiceOds::perform_update(const std::string& ip)
{
// First of all create a boost shared pointer to the NetHelper.
NetHelper::Ptr connection(new NetHelper(get_logger()));
// Then open the connection to the ODS update server.
if (connection->open_connection(UpdateServer,Port) != 0)
- return -1;
+ return GenericError;
// Receive the server greeting.
string server_greeting = connection->receive_data();
if ( server_greeting.empty() )
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
// Send login command
if (connection->send_data(login.str()) != 0)
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
// Receive login reply
if ( login_reply.empty() )
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
else
{
// Login failed
get_logger()->print_service_not_authorized(UpdateServer,get_login(),get_password());
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
else if ( status_code != "225" )
{
// Undefined protocol error, Log login_reply
get_logger()->print_undefined_protocol_error("ODS",login_reply);
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
}
if (connection->send_data(delete_request.str()) != 0)
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
// Get delete reply
delete_reply = connection->receive_data();
if ( delete_reply.empty() )
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
del_count++;
reply_code = Util::parse_status_code(delete_reply);
if (connection->send_data(update_request.str()) != 0)
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
// Receive update request server reply
if ( update_reply.empty() )
{
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
else
{
{
get_logger()->print_undefined_protocol_error("ODS",update_reply);
connection->close_connection(); /*lint !e534 */
- return -1;
+ return GenericError;
}
}
// Successfully updated host
connection->close_connection(); /*lint !e534 */
- return 0;
+ return UpdateOk;
}