mirror of
https://github.com/falk-werner/webfuse-provider
synced 2026-03-02 04:09:18 +00:00
refactor: encapsulate json writer
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "webfuse_provider/impl/operation/error.h"
|
||||
#include "webfuse_provider/impl/request.h"
|
||||
#include "webfuse_provider/impl/message_writer.h"
|
||||
#include "webfuse_provider/impl/util/util.h"
|
||||
|
||||
|
||||
@@ -42,23 +43,23 @@ void wfp_impl_respond_getattr(
|
||||
bool const is_file = (0 != (stat->st_mode & S_IFREG));
|
||||
bool const is_dir = (0 != (stat->st_mode & S_IFDIR));
|
||||
|
||||
json_t * result = json_object();
|
||||
json_object_set_new(result, "inode", json_integer(stat->st_ino));
|
||||
json_object_set_new(result, "mode", json_integer(stat->st_mode & 0777));
|
||||
json_object_set_new(result, "atime", json_integer(stat->st_atime));
|
||||
json_object_set_new(result, "mtime", json_integer(stat->st_mtime));
|
||||
json_object_set_new(result, "ctime", json_integer(stat->st_ctime));
|
||||
struct wfp_message_writer * writer = wfp_impl_request_get_writer(request);
|
||||
wfp_impl_message_writer_add_int(writer, "inode", stat->st_ino);
|
||||
wfp_impl_message_writer_add_int(writer, "mode" , stat->st_mode & 0777);
|
||||
wfp_impl_message_writer_add_int(writer, "atime", stat->st_atime);
|
||||
wfp_impl_message_writer_add_int(writer, "mtime", stat->st_mtime);
|
||||
wfp_impl_message_writer_add_int(writer, "ctime", stat->st_ctime);
|
||||
|
||||
if (is_file)
|
||||
{
|
||||
json_object_set_new(result, "type", json_string("file"));
|
||||
json_object_set_new(result, "size", json_integer(stat->st_size));
|
||||
wfp_impl_message_writer_add_string(writer, "type", "file");
|
||||
wfp_impl_message_writer_add_int(writer, "size", stat->st_size);
|
||||
}
|
||||
|
||||
if (is_dir)
|
||||
{
|
||||
json_object_set_new(result, "type", json_string("dir"));
|
||||
wfp_impl_message_writer_add_string(writer, "type", "dir");
|
||||
}
|
||||
|
||||
wfp_impl_respond(request, result);
|
||||
wfp_impl_respond(request);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "webfuse_provider/impl/operation/error.h"
|
||||
#include "webfuse_provider/impl/request.h"
|
||||
#include "webfuse_provider/impl/message_writer.h"
|
||||
#include "webfuse_provider/impl/util/util.h"
|
||||
|
||||
void wfp_impl_lookup(
|
||||
@@ -36,25 +37,25 @@ void wfp_impl_respond_lookup(
|
||||
bool const is_file = (0 != (stat->st_mode & S_IFREG));
|
||||
bool const is_dir = (0 != (stat->st_mode & S_IFDIR));
|
||||
|
||||
json_t * result = json_object();
|
||||
json_object_set_new(result, "inode", json_integer(stat->st_ino));
|
||||
json_object_set_new(result, "mode", json_integer(stat->st_mode & 0777));
|
||||
json_object_set_new(result, "atime", json_integer(stat->st_atime));
|
||||
json_object_set_new(result, "mtime", json_integer(stat->st_mtime));
|
||||
json_object_set_new(result, "ctime", json_integer(stat->st_ctime));
|
||||
struct wfp_message_writer * writer = wfp_impl_request_get_writer(request);
|
||||
wfp_impl_message_writer_add_int(writer, "inode", stat->st_ino);
|
||||
wfp_impl_message_writer_add_int(writer, "mode", stat->st_mode & 0777);
|
||||
wfp_impl_message_writer_add_int(writer, "atime", stat->st_atime);
|
||||
wfp_impl_message_writer_add_int(writer, "mtime", stat->st_mtime);
|
||||
wfp_impl_message_writer_add_int(writer, "ctime", stat->st_ctime);
|
||||
|
||||
if (is_file)
|
||||
{
|
||||
json_object_set_new(result, "type", json_string("file"));
|
||||
json_object_set_new(result, "size", json_integer(stat->st_size));
|
||||
wfp_impl_message_writer_add_string(writer, "type", "file");
|
||||
wfp_impl_message_writer_add_int(writer, "size", stat->st_size);
|
||||
}
|
||||
|
||||
if (is_dir)
|
||||
{
|
||||
json_object_set_new(result, "type", json_string("dir"));
|
||||
wfp_impl_message_writer_add_string(writer, "type", "dir");
|
||||
}
|
||||
|
||||
wfp_impl_respond(request, result);
|
||||
wfp_impl_respond(request);
|
||||
}
|
||||
|
||||
void wfp_impl_lookup_default(
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "webfuse_provider/impl/operation/open.h"
|
||||
#include "webfuse_provider/impl/operation/error.h"
|
||||
#include "webfuse_provider/impl/request.h"
|
||||
#include "webfuse_provider/impl/message_writer.h"
|
||||
#include "webfuse_provider/impl/util/util.h"
|
||||
|
||||
void wfp_impl_open(
|
||||
@@ -40,8 +41,8 @@ void wfp_impl_respond_open(
|
||||
struct wfp_request * request,
|
||||
uint32_t handle)
|
||||
{
|
||||
json_t * result = json_object();
|
||||
json_object_set_new(result, "handle", json_integer((int) handle));
|
||||
struct wfp_message_writer * writer = wfp_impl_request_get_writer(request);
|
||||
wfp_impl_message_writer_add_int(writer, "handle", (int) handle);
|
||||
|
||||
wfp_impl_respond(request, result);
|
||||
wfp_impl_respond(request);
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
#include "webfuse_provider/impl/operation/error.h"
|
||||
#include "webfuse_provider/impl/request.h"
|
||||
#include "webfuse_provider/impl/message_writer.h"
|
||||
#include "webfuse_provider/impl/util/util.h"
|
||||
#include "webfuse_provider/impl/util/base64.h"
|
||||
|
||||
void wfp_impl_read(
|
||||
struct wfp_impl_invokation_context * context,
|
||||
@@ -52,27 +52,19 @@ void wfp_impl_respond_read(
|
||||
char const * data,
|
||||
size_t length)
|
||||
{
|
||||
struct wfp_message_writer * writer = wfp_impl_request_get_writer(request);
|
||||
|
||||
if (0 < length)
|
||||
{
|
||||
size_t const size = wfp_impl_base64_encoded_size(length) + 1;
|
||||
char * buffer = malloc(size);
|
||||
wfp_impl_base64_encode((uint8_t const *) data, length, buffer, size);
|
||||
|
||||
json_t * result = json_object();
|
||||
json_object_set_new(result, "data", json_string(buffer));
|
||||
json_object_set_new(result, "format", json_string("base64"));
|
||||
json_object_set_new(result, "count", json_integer((int) length));
|
||||
|
||||
wfp_impl_respond(request, result);
|
||||
free(buffer);
|
||||
wfp_impl_message_writer_add_bytes(writer, "data", data, length);
|
||||
wfp_impl_message_writer_add_string(writer, "format", "base64");
|
||||
}
|
||||
else
|
||||
{
|
||||
json_t * result = json_object();
|
||||
json_object_set_new(result, "data", json_string(""));
|
||||
json_object_set_new(result, "format", json_string("identity"));
|
||||
json_object_set_new(result, "count", json_integer(0));
|
||||
|
||||
wfp_impl_respond(request, result);
|
||||
wfp_impl_message_writer_add_string(writer, "data", "");
|
||||
wfp_impl_message_writer_add_string(writer, "format", "identity");
|
||||
}
|
||||
|
||||
wfp_impl_message_writer_add_int(writer, "count", ((int) length));
|
||||
wfp_impl_respond(request);
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "webfuse_provider/impl/operation/error.h"
|
||||
#include "webfuse_provider/impl/dirbuffer.h"
|
||||
#include "webfuse_provider/impl/request.h"
|
||||
#include "webfuse_provider/impl/message_writer.h"
|
||||
#include "webfuse_provider/impl/util/util.h"
|
||||
|
||||
void wfp_impl_readdir(
|
||||
@@ -36,7 +37,8 @@ void wfp_impl_respond_readdir(
|
||||
struct wfp_request * request,
|
||||
struct wfp_dirbuffer * dirbuffer)
|
||||
{
|
||||
json_t * result = wfp_impl_dirbuffer_take(dirbuffer);
|
||||
wfp_impl_respond(request, result);
|
||||
struct wfp_message_writer * writer = wfp_impl_request_get_writer(request);
|
||||
wfp_impl_message_writer_add_dirbuffer(writer, dirbuffer);
|
||||
wfp_impl_respond(request);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user