97 lines
1.5 KiB
C
97 lines
1.5 KiB
C
//
|
|
// Created by haraldwolff on 13.08.22.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <pthread.h>
|
|
|
|
#include <bs_types.h>
|
|
#include <bs_progress.h>
|
|
#include <bs_msg.h>
|
|
|
|
#include <merkle.h>
|
|
|
|
struct bs_engine {
|
|
tool_flags_t tool_flags;
|
|
bs_flags_t bs_flags;
|
|
bs_state_flags_t state_flags;
|
|
|
|
struct {
|
|
int32_t blocksize;
|
|
} parameters;
|
|
|
|
struct {
|
|
pthread_mutex_t mutex;
|
|
|
|
int af_family;
|
|
|
|
char hostname[256];
|
|
int port;
|
|
|
|
int listen;
|
|
int remote;
|
|
} comm;
|
|
|
|
struct {
|
|
pthread_mutex_t mutex;
|
|
|
|
char filename[FILENAME_MAX];
|
|
int handle;
|
|
long size;
|
|
|
|
char *mmap;
|
|
} file;
|
|
|
|
struct {
|
|
bs_progress_steps_t step;
|
|
time_t step_started;
|
|
time_t last_screen_refresh;
|
|
|
|
int32_t distance;
|
|
int32_t current;
|
|
} progress;
|
|
|
|
struct {
|
|
bs_msg_queue_t pool;
|
|
|
|
bs_msg_queue_t progress;
|
|
bs_msg_queue_t sync;
|
|
bs_msg_queue_t transfer;
|
|
} queues;
|
|
|
|
struct {
|
|
pthread_t comm;
|
|
pthread_t analyze;
|
|
pthread_t sync;
|
|
pthread_t transfer;
|
|
} threads;
|
|
|
|
struct {
|
|
uint64_t filesize;
|
|
} remote;
|
|
|
|
struct {
|
|
merkle_t *local;
|
|
merkle_t *remote;
|
|
|
|
pthread_mutex_t mutex;
|
|
pthread_cond_t sync;
|
|
|
|
int waiting_syncs;
|
|
} merkle;
|
|
|
|
};
|
|
|
|
int bs_engine_create(bs_engine_t **engine);
|
|
int bs_engine_init(bs_engine_t *engine);
|
|
int bs_engine_destroy(bs_engine_t *engine);
|
|
|
|
int bs_engine_open_file(bs_engine_t *engine);
|
|
int bs_engine_truncate_file(bs_engine_t *engine, long length);
|
|
int bs_engine_mmap_file(bs_engine_t *engine);
|
|
int bs_engine_unmap_file(bs_engine_t *engine);
|
|
|
|
void bs_engine_dump(bs_engine_t *engine); |