db/proxy: move code to Disconnect()

This commit is contained in:
Max Kellermann 2014-01-11 00:21:29 +01:00
parent 3f0415fa24
commit 00adf7ff17

View File

@ -83,6 +83,8 @@ private:
bool Connect(Error &error);
bool CheckConnection(Error &error);
bool EnsureConnected(Error &error);
void Disconnect();
};
static constexpr Domain libmpdclient_domain("libmpdclient");
@ -254,7 +256,7 @@ ProxyDatabase::Close()
delete root;
if (connection != nullptr)
mpd_connection_free(connection);
Disconnect();
}
bool
@ -269,10 +271,8 @@ ProxyDatabase::Connect(Error &error)
}
if (!CheckError(connection, error)) {
if (connection != nullptr) {
mpd_connection_free(connection);
connection = nullptr;
}
if (connection != nullptr)
Disconnect();
return false;
}
@ -286,7 +286,7 @@ ProxyDatabase::CheckConnection(Error &error)
assert(connection != nullptr);
if (!mpd_connection_clear_error(connection)) {
mpd_connection_free(connection);
Disconnect();
return Connect(error);
}
@ -301,6 +301,15 @@ ProxyDatabase::EnsureConnected(Error &error)
: Connect(error);
}
void
ProxyDatabase::Disconnect()
{
assert(connection != nullptr);
mpd_connection_free(connection);
connection = nullptr;
}
static Song *
Convert(const struct mpd_song *song);