1
0
mirror of https://github.com/falk-werner/webfuse synced 2024-10-27 20:34:10 +00:00

moved wf_url to core

This commit is contained in:
Falk Werner 2020-06-11 19:12:07 +02:00
parent 06a24e09da
commit f2bbebd670
9 changed files with 86 additions and 60 deletions

View File

@ -85,14 +85,14 @@ void
wf_impl_client_service( wf_impl_client_service(
struct wf_client * client) struct wf_client * client)
{ {
(void) client; lws_service(client->context, 0);
} }
void void
wf_impl_client_interrupt( wf_impl_client_interrupt(
struct wf_client * client) struct wf_client * client)
{ {
(void) client; lws_cancel_service(client->context);
} }
void void

View File

@ -53,3 +53,18 @@ wf_impl_client_protocol_init_lws(
lws_protocol->per_session_data_size = 0; lws_protocol->per_session_data_size = 0;
lws_protocol->user = protocol; lws_protocol->user = protocol;
} }
void
wf_impl_client_protocol_connect(
struct wf_client_protocol * protocol,
char const * url)
{
}
void
wf_impl_client_protocol_disconnect(
struct wf_client_protocol * protocol)
{
}

View File

@ -43,6 +43,15 @@ wf_impl_client_protocol_init_lws(
struct wf_client_protocol * protocol, struct wf_client_protocol * protocol,
struct lws_protocols * lws_protocol); struct lws_protocols * lws_protocol);
extern void
wf_impl_client_protocol_connect(
struct wf_client_protocol * protocol,
char const * url);
extern void
wf_impl_client_protocol_disconnect(
struct wf_client_protocol * protocol);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -1,4 +1,6 @@
#include "webfuse/adapter/impl/client_tlsconfig.h" #include "webfuse/adapter/impl/client_tlsconfig.h"
#include "webfuse/core/url.h"
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>

View File

@ -1,9 +1,9 @@
#include "webfuse/provider/impl/url.h" #include "webfuse/core/url.h"
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
struct wfp_impl_url_protocol struct wf_url_protocol
{ {
char const * name; char const * name;
size_t name_length; size_t name_length;
@ -11,11 +11,11 @@ struct wfp_impl_url_protocol
bool use_tls; bool use_tls;
}; };
static bool wfp_impl_url_readprotocol( static bool wf_url_readprotocol(
struct wfp_impl_url * url, struct wf_url * url,
char const * * data) char const * * data)
{ {
static struct wfp_impl_url_protocol const known_protocols[] = static struct wf_url_protocol const known_protocols[] =
{ {
{"ws://", 5, 80, false}, {"ws://", 5, 80, false},
{"wss://", 6, 443, true} {"wss://", 6, 443, true}
@ -25,7 +25,7 @@ static bool wfp_impl_url_readprotocol(
bool found = false; bool found = false;
for(size_t i = 0; (!found) && (i < count); i++) for(size_t i = 0; (!found) && (i < count); i++)
{ {
struct wfp_impl_url_protocol const * protocol = &known_protocols[i]; struct wf_url_protocol const * protocol = &known_protocols[i];
if (0 == strncmp(*data, protocol->name, protocol->name_length)) if (0 == strncmp(*data, protocol->name, protocol->name_length))
{ {
url->port = protocol->default_port; url->port = protocol->default_port;
@ -38,8 +38,8 @@ static bool wfp_impl_url_readprotocol(
return found; return found;
} }
static bool wfp_impl_url_readhost( static bool wf_url_readhost(
struct wfp_impl_url * url, struct wf_url * url,
char const * * data) char const * * data)
{ {
char * end = strpbrk(*data, ":/"); char * end = strpbrk(*data, ":/");
@ -55,8 +55,8 @@ static bool wfp_impl_url_readhost(
return result; return result;
} }
static bool wfp_impl_url_readport( static bool wf_url_readport(
struct wfp_impl_url * url, struct wf_url * url,
char const * * data) char const * * data)
{ {
bool result; bool result;
@ -81,8 +81,8 @@ static bool wfp_impl_url_readport(
return result; return result;
} }
static bool wfp_impl_url_readpath( static bool wf_url_readpath(
struct wfp_impl_url * url, struct wf_url * url,
char const * * data) char const * * data)
{ {
bool const result = ('/' == **data); bool const result = ('/' == **data);
@ -93,33 +93,33 @@ static bool wfp_impl_url_readpath(
} }
bool wfp_impl_url_init( bool wf_url_init(
struct wfp_impl_url * url, struct wf_url * url,
char const * value) char const * value)
{ {
memset(url, 0, sizeof(struct wfp_impl_url)); memset(url, 0, sizeof(struct wf_url));
char const * data = value; char const * data = value;
bool const result = bool const result =
wfp_impl_url_readprotocol(url, &data) && wf_url_readprotocol(url, &data) &&
wfp_impl_url_readhost(url, &data) && wf_url_readhost(url, &data) &&
wfp_impl_url_readport(url, &data) && wf_url_readport(url, &data) &&
wfp_impl_url_readpath(url, &data) wf_url_readpath(url, &data)
; ;
if (!result) if (!result)
{ {
wfp_impl_url_cleanup(url); wf_url_cleanup(url);
} }
return result; return result;
} }
void wfp_impl_url_cleanup( void wf_url_cleanup(
struct wfp_impl_url * url) struct wf_url * url)
{ {
free(url->host); free(url->host);
free(url->path); free(url->path);
memset(url, 0, sizeof(struct wfp_impl_url)); memset(url, 0, sizeof(struct wf_url));
} }

View File

@ -1,5 +1,5 @@
#ifndef WF_PROVIDER_IMPL_URL_H #ifndef WF_URL_H
#define WF_PROVIDER_IMPL_URL_H #define WF_URL_H
#ifndef __cplusplus #ifndef __cplusplus
#include <stdbool.h> #include <stdbool.h>
@ -9,7 +9,7 @@
extern "C" extern "C"
{ {
#endif #endif
struct wfp_impl_url struct wf_url
{ {
char * host; char * host;
int port; int port;
@ -17,12 +17,12 @@ struct wfp_impl_url
bool use_tls; bool use_tls;
}; };
extern bool wfp_impl_url_init( extern bool wf_url_init(
struct wfp_impl_url * url, struct wf_url * url,
char const * value); char const * value);
extern void wfp_impl_url_cleanup( extern void wf_url_cleanup(
struct wfp_impl_url * url); struct wf_url * url);
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -13,7 +13,7 @@
#include "webfuse/core/message.h" #include "webfuse/core/message.h"
#include "webfuse/core/message_queue.h" #include "webfuse/core/message_queue.h"
#include "webfuse/core/container_of.h" #include "webfuse/core/container_of.h"
#include "webfuse/provider/impl/url.h" #include "webfuse/core/url.h"
#include "webfuse/core/protocol_names.h" #include "webfuse/core/protocol_names.h"
#include "webfuse/core/timer/manager.h" #include "webfuse/core/timer/manager.h"
@ -297,8 +297,8 @@ void wfp_impl_client_protocol_connect(
struct lws_context * context, struct lws_context * context,
char const * url) char const * url)
{ {
struct wfp_impl_url url_data; struct wf_url url_data;
bool const success = wfp_impl_url_init(&url_data, url); bool const success = wf_url_init(&url_data, url);
if (success) if (success)
{ {
struct lws_client_connect_info info; struct lws_client_connect_info info;
@ -316,7 +316,7 @@ void wfp_impl_client_protocol_connect(
lws_client_connect_via_info(&info); lws_client_connect_via_info(&info);
wfp_impl_url_cleanup(&url_data); wf_url_cleanup(&url_data);
} }
else else
{ {

View File

@ -29,6 +29,7 @@ webfuse_core = static_library('webfuse_core',
'lib/webfuse/core/base64.c', 'lib/webfuse/core/base64.c',
'lib/webfuse/core/lws_log.c', 'lib/webfuse/core/lws_log.c',
'lib/webfuse/core/json_util.c', 'lib/webfuse/core/json_util.c',
'lib/webfuse/core/url.c',
'lib/webfuse/core/timer/manager.c', 'lib/webfuse/core/timer/manager.c',
'lib/webfuse/core/timer/timepoint.c', 'lib/webfuse/core/timer/timepoint.c',
'lib/webfuse/core/timer/timer.c', 'lib/webfuse/core/timer/timer.c',
@ -56,7 +57,6 @@ if not without_provider
webfuse_provider_static = static_library('webfuse_provider', webfuse_provider_static = static_library('webfuse_provider',
'lib/webfuse/provider/api.c', 'lib/webfuse/provider/api.c',
'lib/webfuse/provider/impl/url.c',
'lib/webfuse/provider/impl/client.c', 'lib/webfuse/provider/impl/client.c',
'lib/webfuse/provider/impl/client_config.c', 'lib/webfuse/provider/impl/client_config.c',
'lib/webfuse/provider/impl/client_protocol.c', 'lib/webfuse/provider/impl/client_protocol.c',
@ -226,6 +226,7 @@ alltests = executable('alltests',
'test/webfuse/tests/core/test_status.cc', 'test/webfuse/tests/core/test_status.cc',
'test/webfuse/tests/core/test_message.cc', 'test/webfuse/tests/core/test_message.cc',
'test/webfuse/tests/core/test_message_queue.cc', 'test/webfuse/tests/core/test_message_queue.cc',
'test/webfuse/tests/core/test_url.cc',
'test/webfuse/tests/adapter/test_server.cc', 'test/webfuse/tests/adapter/test_server.cc',
'test/webfuse/tests/adapter/test_server_config.cc', 'test/webfuse/tests/adapter/test_server_config.cc',
'test/webfuse/tests/adapter/test_credentials.cc', 'test/webfuse/tests/adapter/test_credentials.cc',
@ -240,7 +241,6 @@ alltests = executable('alltests',
'test/webfuse/tests/adapter/operation/test_readdir.cc', 'test/webfuse/tests/adapter/operation/test_readdir.cc',
'test/webfuse/tests/adapter/operation/test_getattr.cc', 'test/webfuse/tests/adapter/operation/test_getattr.cc',
'test/webfuse/tests/adapter/operation/test_lookup.cc', 'test/webfuse/tests/adapter/operation/test_lookup.cc',
'test/webfuse/tests/provider/test_url.cc',
'test/webfuse/tests/provider/test_client_protocol.cc', 'test/webfuse/tests/provider/test_client_protocol.cc',
'test/webfuse/tests/provider/operation/test_close.cc', 'test/webfuse/tests/provider/operation/test_close.cc',
'test/webfuse/tests/provider/operation/test_getattr.cc', 'test/webfuse/tests/provider/operation/test_getattr.cc',

View File

@ -1,69 +1,69 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include "webfuse/provider/impl/url.h" #include "webfuse/core/url.h"
TEST(url, ParseWs) TEST(url, ParseWs)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "ws://localhost/"); bool result = wf_url_init(&url, "ws://localhost/");
ASSERT_TRUE(result); ASSERT_TRUE(result);
ASSERT_EQ(80, url.port); ASSERT_EQ(80, url.port);
ASSERT_FALSE(url.use_tls); ASSERT_FALSE(url.use_tls);
ASSERT_STREQ("localhost", url.host); ASSERT_STREQ("localhost", url.host);
ASSERT_STREQ("/", url.path); ASSERT_STREQ("/", url.path);
wfp_impl_url_cleanup(&url); wf_url_cleanup(&url);
} }
TEST(url, ParswWss) TEST(url, ParswWss)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "wss://localhost/"); bool result = wf_url_init(&url, "wss://localhost/");
ASSERT_TRUE(result); ASSERT_TRUE(result);
ASSERT_EQ(443, url.port); ASSERT_EQ(443, url.port);
ASSERT_TRUE(url.use_tls); ASSERT_TRUE(url.use_tls);
ASSERT_STREQ("localhost", url.host); ASSERT_STREQ("localhost", url.host);
ASSERT_STREQ("/", url.path); ASSERT_STREQ("/", url.path);
wfp_impl_url_cleanup(&url); wf_url_cleanup(&url);
} }
TEST(url, ParseIPAdress) TEST(url, ParseIPAdress)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "ws://127.0.0.1/"); bool result = wf_url_init(&url, "ws://127.0.0.1/");
ASSERT_TRUE(result); ASSERT_TRUE(result);
ASSERT_EQ(80, url.port); ASSERT_EQ(80, url.port);
ASSERT_STREQ("127.0.0.1", url.host); ASSERT_STREQ("127.0.0.1", url.host);
ASSERT_STREQ("/", url.path); ASSERT_STREQ("/", url.path);
wfp_impl_url_cleanup(&url); wf_url_cleanup(&url);
} }
TEST(url, ParsePort) TEST(url, ParsePort)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "ws://localhost:54321/"); bool result = wf_url_init(&url, "ws://localhost:54321/");
ASSERT_TRUE(result); ASSERT_TRUE(result);
ASSERT_EQ(54321, url.port); ASSERT_EQ(54321, url.port);
wfp_impl_url_cleanup(&url); wf_url_cleanup(&url);
} }
TEST(url, ParseNonEmptyPath) TEST(url, ParseNonEmptyPath)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "ws://localhost/some_path?query"); bool result = wf_url_init(&url, "ws://localhost/some_path?query");
ASSERT_TRUE(result); ASSERT_TRUE(result);
ASSERT_STREQ("/some_path?query", url.path); ASSERT_STREQ("/some_path?query", url.path);
wfp_impl_url_cleanup(&url); wf_url_cleanup(&url);
} }
TEST(url, FailToParseUnknownProtocol) TEST(url, FailToParseUnknownProtocol)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "unknown://localhost/"); bool result = wf_url_init(&url, "unknown://localhost/");
ASSERT_FALSE(result); ASSERT_FALSE(result);
ASSERT_EQ(0, url.port); ASSERT_EQ(0, url.port);
ASSERT_EQ(nullptr, url.path); ASSERT_EQ(nullptr, url.path);
@ -72,8 +72,8 @@ TEST(url, FailToParseUnknownProtocol)
TEST(url, FailToParseMissingProtocol) TEST(url, FailToParseMissingProtocol)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "unknown"); bool result = wf_url_init(&url, "unknown");
ASSERT_FALSE(result); ASSERT_FALSE(result);
ASSERT_EQ(0, url.port); ASSERT_EQ(0, url.port);
ASSERT_EQ(nullptr, url.path); ASSERT_EQ(nullptr, url.path);
@ -82,8 +82,8 @@ TEST(url, FailToParseMissingProtocol)
TEST(url, FailToParseMissingPath) TEST(url, FailToParseMissingPath)
{ {
struct wfp_impl_url url; struct wf_url url;
bool result = wfp_impl_url_init(&url, "ws://localhost"); bool result = wf_url_init(&url, "ws://localhost");
ASSERT_FALSE(result); ASSERT_FALSE(result);
ASSERT_EQ(0, url.port); ASSERT_EQ(0, url.port);
ASSERT_EQ(nullptr, url.path); ASSERT_EQ(nullptr, url.path);