mirror of
https://github.com/falk-werner/webfuse-provider
synced 2024-10-27 20:44:10 +00:00
added implementation of wfp_client_disconnect
This commit is contained in:
parent
36f2b82a67
commit
3eb5dc89a7
@ -89,12 +89,25 @@ extern WFP_API void wfp_client_protocol_init_lws(
|
||||
/// \see wfp_connected_fn
|
||||
/// \see wfp_client_config_set_onconnected
|
||||
//------------------------------------------------------------------------------
|
||||
//------------------------------------------------------------------------------
|
||||
extern WFP_API void wfp_client_protocol_connect(
|
||||
struct wfp_client_protocol * protocol,
|
||||
struct lws_context * context,
|
||||
char const * url);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
/// \brief Disconnects the protocol from a remote webfuse adapter server.
|
||||
///
|
||||
/// \note This call starts to disconnect. A callback is invoked,
|
||||
/// when the connection is estanlished.
|
||||
///
|
||||
/// \param protocol pointer to protocol
|
||||
///
|
||||
/// \see wfp_connected_fn
|
||||
/// \see wfp_client_config_set_ondisconnected
|
||||
//------------------------------------------------------------------------------
|
||||
extern WFP_API void wfp_client_protocol_disconnect(
|
||||
struct wfp_client_protocol * protocol);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -202,6 +202,12 @@ void wfp_client_protocol_connect(
|
||||
wfp_impl_client_protocol_connect(protocol, context, url);
|
||||
}
|
||||
|
||||
void wfp_client_protocol_disconnect(
|
||||
struct wfp_client_protocol * protocol)
|
||||
{
|
||||
wfp_impl_client_protocol_disconnect(protocol);
|
||||
}
|
||||
|
||||
|
||||
// client
|
||||
|
||||
|
@ -79,9 +79,7 @@ void wfp_impl_client_connect(
|
||||
void wfp_impl_client_disconnect(
|
||||
struct wfp_client * client)
|
||||
{
|
||||
(void) client;
|
||||
|
||||
// ToDo: implement me
|
||||
wfp_impl_client_protocol_disconnect(&client->protocol);
|
||||
}
|
||||
|
||||
bool wfp_impl_client_is_connected(
|
||||
|
@ -324,3 +324,17 @@ void wfp_impl_client_protocol_connect(
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void wfp_impl_client_protocol_disconnect(
|
||||
struct wfp_client_protocol * protocol)
|
||||
{
|
||||
if (protocol->is_connected)
|
||||
{
|
||||
protocol->is_shutdown_requested = true;
|
||||
lws_callback_on_writable(protocol->wsi);
|
||||
}
|
||||
else
|
||||
{
|
||||
protocol->provider.disconnected(protocol->user_data);
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,9 @@ extern void wfp_impl_client_protocol_connect(
|
||||
struct lws_context * context,
|
||||
char const * url);
|
||||
|
||||
extern void wfp_impl_client_protocol_disconnect(
|
||||
struct wfp_client_protocol * protocol);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -67,6 +67,12 @@ private:
|
||||
{
|
||||
wfp_client_service(context->client);
|
||||
}
|
||||
|
||||
wfp_client_disconnect(context->client);
|
||||
while (wfp_impl_client_is_connected(context->client))
|
||||
{
|
||||
wfp_client_service(context->client);
|
||||
}
|
||||
}
|
||||
|
||||
std::mutex shutdown_lock;
|
||||
|
@ -52,6 +52,11 @@ public:
|
||||
server->waitForConnection();
|
||||
}
|
||||
|
||||
void Disconnect()
|
||||
{
|
||||
wfp_client_protocol_disconnect(protocol);
|
||||
}
|
||||
|
||||
void SendToClient(json_t * request)
|
||||
{
|
||||
server->sendMessage(request);
|
||||
@ -166,6 +171,16 @@ TEST(client_protocol, connect)
|
||||
if (HasFatalFailure()) { return; }
|
||||
}
|
||||
|
||||
TEST(client_protocol, disconnect_without_connect)
|
||||
{
|
||||
MockProviderClient provider;
|
||||
ClientProtocolFixture fixture(provider);
|
||||
|
||||
EXPECT_CALL(provider, OnDisconnected()).Times(1);
|
||||
|
||||
fixture.Disconnect();
|
||||
}
|
||||
|
||||
TEST(client_protocol, connect_with_username_authentication)
|
||||
{
|
||||
MockProviderClient provider;
|
||||
@ -184,7 +199,6 @@ TEST(client_protocol, connect_with_username_authentication)
|
||||
std::string filesystem;
|
||||
fixture.AwaitAddFilesystem(filesystem);
|
||||
if (HasFatalFailure()) { return; }
|
||||
|
||||
}
|
||||
|
||||
TEST(client_protocol, getattr)
|
||||
@ -216,4 +230,6 @@ TEST(client_protocol, getattr)
|
||||
ASSERT_TRUE(json_is_object(response));
|
||||
|
||||
json_decref(response);
|
||||
|
||||
fixture.Disconnect();
|
||||
}
|
Loading…
Reference in New Issue
Block a user