mirror of
https://github.com/falk-werner/webfuse-provider
synced 2026-03-02 04:09:18 +00:00
renamed to webfuse
This commit is contained in:
32
lib/webfuse/core/message.c
Normal file
32
lib/webfuse/core/message.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "webfuse/core/message.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <libwebsockets.h>
|
||||
|
||||
extern struct wf_message * wf_message_create(json_t const * value)
|
||||
{
|
||||
struct wf_message * message = NULL;
|
||||
size_t const length = json_dumpb(value, NULL, 0, JSON_COMPACT);
|
||||
|
||||
if (0 < length)
|
||||
{
|
||||
char * data = malloc(sizeof(struct wf_message) + LWS_PRE + length);
|
||||
message = (struct wf_message *) data;
|
||||
if (NULL != message)
|
||||
{
|
||||
message->data = &data[sizeof(struct wf_message) + LWS_PRE];
|
||||
message->length = length;
|
||||
message->next = NULL;
|
||||
|
||||
json_dumpb(value, message->data, length, JSON_COMPACT);
|
||||
}
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
void wf_message_dispose(
|
||||
struct wf_message * message)
|
||||
{
|
||||
free(message);
|
||||
}
|
||||
34
lib/webfuse/core/message.h
Normal file
34
lib/webfuse/core/message.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef WF_MESSAGE_H
|
||||
#define WF_MESSAGE_H
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stddef.h>
|
||||
#else
|
||||
#include <cstddef>
|
||||
using std::size_t;
|
||||
#endif
|
||||
|
||||
#include <jansson.h>
|
||||
|
||||
struct wf_message
|
||||
{
|
||||
struct wf_message * next;
|
||||
char * data;
|
||||
size_t length;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
extern struct wf_message * wf_message_create(json_t const * value);
|
||||
|
||||
extern void wf_message_dispose(
|
||||
struct wf_message * message);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
63
lib/webfuse/core/message_queue.c
Normal file
63
lib/webfuse/core/message_queue.c
Normal file
@@ -0,0 +1,63 @@
|
||||
#include "webfuse/core/message_queue.h"
|
||||
#include "webfuse/core/message.h"
|
||||
|
||||
void wf_message_queue_init(
|
||||
struct wf_message_queue * queue)
|
||||
{
|
||||
queue->first = NULL;
|
||||
queue->last = NULL;
|
||||
|
||||
}
|
||||
|
||||
void wf_message_queue_cleanup(
|
||||
struct wf_message_queue * queue)
|
||||
{
|
||||
struct wf_message * message = queue->first;
|
||||
while (NULL != message)
|
||||
{
|
||||
struct wf_message * next = message->next;
|
||||
wf_message_dispose(message);
|
||||
message = next;
|
||||
}
|
||||
wf_message_queue_init(queue);
|
||||
}
|
||||
|
||||
bool wf_message_queue_empty(
|
||||
struct wf_message_queue * queue)
|
||||
{
|
||||
return (NULL == queue->first);
|
||||
}
|
||||
|
||||
void wf_message_queue_push(
|
||||
struct wf_message_queue * queue,
|
||||
struct wf_message * message)
|
||||
{
|
||||
message->next = NULL;
|
||||
|
||||
if (NULL != queue->last)
|
||||
{
|
||||
queue->last->next = message;
|
||||
queue->last = message;
|
||||
}
|
||||
else
|
||||
{
|
||||
queue->first = message;
|
||||
queue->last = message;
|
||||
}
|
||||
}
|
||||
|
||||
struct wf_message * wf_message_queue_pop(
|
||||
struct wf_message_queue * queue)
|
||||
{
|
||||
struct wf_message * const result = queue->first;
|
||||
if (NULL != result)
|
||||
{
|
||||
queue->first = queue->first->next;
|
||||
if (NULL == queue->first)
|
||||
{
|
||||
queue->last = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
42
lib/webfuse/core/message_queue.h
Normal file
42
lib/webfuse/core/message_queue.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef WF_MESSAGE_QUEUE_H
|
||||
#define WF_MESSAGE_QUEUE_H
|
||||
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
struct wf_message_queue;
|
||||
struct wf_message;
|
||||
|
||||
struct wf_message_queue
|
||||
{
|
||||
struct wf_message * first;
|
||||
struct wf_message * last;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
extern void wf_message_queue_init(
|
||||
struct wf_message_queue * queue);
|
||||
|
||||
extern void wf_message_queue_cleanup(
|
||||
struct wf_message_queue * queue);
|
||||
|
||||
extern bool wf_message_queue_empty(
|
||||
struct wf_message_queue * queue);
|
||||
|
||||
extern void wf_message_queue_push(
|
||||
struct wf_message_queue * queue,
|
||||
struct wf_message * message);
|
||||
|
||||
extern struct wf_message * wf_message_queue_pop(
|
||||
struct wf_message_queue * queue);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
34
lib/webfuse/core/status.c
Normal file
34
lib/webfuse/core/status.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "webfuse/core/status_intern.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
int wf_status_to_rc(wf_status status)
|
||||
{
|
||||
switch(status)
|
||||
{
|
||||
case WF_GOOD: return 0;
|
||||
case WF_BAD_NOTIMPLEMENTED: return -ENOSYS;
|
||||
case WF_BAD_TIMEOUT: return -ETIMEDOUT;
|
||||
case WF_BAD_BUSY: return -ENOENT;
|
||||
case WF_BAD_FORMAT: return -ENOENT;
|
||||
case WF_BAD_NOENTRY: return -ENOENT;
|
||||
case WF_BAD_NOACCESS: return -EACCES;
|
||||
default: return -ENOENT;
|
||||
}
|
||||
}
|
||||
|
||||
char const * wf_status_tostring(wf_status status)
|
||||
{
|
||||
switch(status)
|
||||
{
|
||||
case WF_GOOD: return "Good";
|
||||
case WF_BAD: return "Bad";
|
||||
case WF_BAD_NOTIMPLEMENTED: return "Bad (not implelemted)";
|
||||
case WF_BAD_TIMEOUT: return "Bad (timeout)";
|
||||
case WF_BAD_BUSY: return "Bad (busy)";
|
||||
case WF_BAD_FORMAT: return "Bad (format)";
|
||||
case WF_BAD_NOENTRY: return "Bad (no entry)";
|
||||
case WF_BAD_NOACCESS: return "Bad (no access)";
|
||||
default: return "Bad (unknown)";
|
||||
}
|
||||
}
|
||||
19
lib/webfuse/core/status_intern.h
Normal file
19
lib/webfuse/core/status_intern.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef WF_STATUS_INTERN_H
|
||||
#define WF_STATUS_INTERN_H
|
||||
|
||||
#include "webfuse/core/status.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int wf_status_to_rc(wf_status status);
|
||||
|
||||
extern char const * wf_status_tostring(wf_status status);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
10
lib/webfuse/core/util.h
Normal file
10
lib/webfuse/core/util.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef WF_UTIL_H
|
||||
#define WF_UTIL_H
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define WF_UNUSED_PARAM(param) param __attribute__((unused))
|
||||
#else
|
||||
#define WF_UNUSED_PARAM(param)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user