You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.6 KiB
C
71 lines
1.6 KiB
C
#include "outbox_envelope.h"
|
|
|
|
#include "json/layout.h"
|
|
#include "ffdb/fs_list.h"
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
|
|
static struct json_object_field layout[] = {
|
|
{ "account", offsetof( struct outbox_envelope, account_id ), true, &json_field_integer },
|
|
{ "activity", offsetof( struct outbox_envelope, activity_id ), true, &json_field_integer },
|
|
{ NULL },
|
|
};
|
|
|
|
struct outbox_envelope* outbox_envelope_new()
|
|
{
|
|
struct outbox_envelope* env;
|
|
|
|
env = malloc(sizeof(*env));
|
|
if( !env ) { return NULL; }
|
|
memset(env,0,sizeof(*env));
|
|
}
|
|
void outbox_envelope_free( struct outbox_envelope* env )
|
|
{
|
|
free(env);
|
|
}
|
|
|
|
void outbox_envelope_save( struct outbox_envelope* env )
|
|
{
|
|
int id = fs_list_get( "data/outbox/HEAD" ) + 1;
|
|
fs_list_set( "data/outbox/HEAD", id );
|
|
|
|
char filename[512];
|
|
snprintf( filename, sizeof(filename), "data/outbox/%d.json", id );
|
|
|
|
json_write_object_layout_to_file( filename, "\t", layout, env );
|
|
}
|
|
|
|
struct outbox_envelope* outbox_envelope_load_next()
|
|
{
|
|
struct outbox_envelope* env;
|
|
|
|
if( !( env = outbox_envelope_new()) ) { return NULL; }
|
|
|
|
int id = fs_list_get( "data/outbox/TAIL" ) + 1;
|
|
env->id = id;
|
|
|
|
char filename[512];
|
|
snprintf( filename, sizeof(filename), "data/outbox/%d.json", id );
|
|
|
|
if( !json_read_object_layout_from_file( filename, layout, env ) ) {
|
|
outbox_envelope_free( env );
|
|
return NULL;
|
|
}
|
|
|
|
return env;
|
|
}
|
|
|
|
void outbox_envelope_delete( struct outbox_envelope* env )
|
|
{
|
|
char filename[512];
|
|
snprintf( filename, sizeof(filename), "data/outbox/%d.json", env->id );
|
|
|
|
remove(filename);
|
|
|
|
outbox_envelope_free(env);
|
|
}
|
|
|