Commit 79033d25 authored by willem's avatar willem
Browse files

Raft log ADT

parent c8ab5e03
......@@ -37,7 +37,7 @@ main_test.c:
fi
sh make-tests.sh "test_*.c" > main_test.c
tests_main: main_test.c raft_server.c raft_candidate.c raft_follower.c raft_leader.c raft_peer.c test_server.c test_server_request_vote.c test_peer.c mock_send_functions.c CuTest.c $(HASHMAP_DIR)/linked_list_hashmap.c $(LLQUEUE_DIR)/linked_list_queue.c $(AQUEUE_DIR)/arrayqueue.c
tests_main: main_test.c raft_server.c raft_log.c raft_candidate.c raft_follower.c raft_leader.c raft_peer.c test_server.c test_server_request_vote.c test_peer.c mock_send_functions.c CuTest.c $(HASHMAP_DIR)/linked_list_hashmap.c $(LLQUEUE_DIR)/linked_list_queue.c $(AQUEUE_DIR)/arrayqueue.c
$(CC) $(CCFLAGS) -o $@ $^
./tests_main
......
......@@ -18,4 +18,46 @@
#include "linked_list_hashmap.h"
#include "arrayqueue.h"
#include "raft.h"
#include "raft_log.h"
typedef struct {
arrayqueue_t* log;
} raft_log_private_t;
static unsigned long __entry_hash(
const void *obj
)
{
return (unsigned long) obj;
}
static long __entry_compare(
const void *obj,
const void *other
)
{
return obj - other;
}
raft_log_t* raft_log_new()
{
raft_log_private_t* me;
me = calloc(1,sizeof(raft_log_private_t));
me->log = arrayqueue_new();
// me->log_map = hashmap_new(__entry_hash, __entry_compare, 100);
return (void*)me;
}
void raft_log_append_entry(raft_log_t* me_, raft_command_t* c)
{
raft_log_private_t* me = (void*)me_;
arrayqueue_offer(me->log, c);
}
int raft_log_count(raft_log_t* me_)
{
raft_log_private_t* me = (void*)me_;
return arrayqueue_count(me->log);
}
typedef void* raft_log_t;
raft_log_t* raft_log_new();
void raft_log_append_entry(raft_log_t* me_, raft_command_t* c);
int raft_log_count(raft_log_t* me_);
......@@ -32,7 +32,7 @@ typedef struct {
/* the log which is replicated */
//void* log;
arrayqueue_t* log;
raft_log_t* log;
/* Volatile state: */
......@@ -96,12 +96,10 @@ raft_server_t* raft_new()
me->voted_for = -1;
me->current_index = 0;
me->timeout_elapased = 0;
me->log = arrayqueue_new();
me->log = raft_log_new();
raft_set_state((void*)me,RAFT_STATE_FOLLOWER);
raft_set_request_timeout((void*)me, 500);
raft_set_election_timeout((void*)me, 1000);
// me->log_map = hashmap_new(__log_hash, __log_compare, 100);
// me->peers = hashmap_new(__peer_hash, __peer_compare, 100);
return (void*)me;
}
......@@ -431,7 +429,7 @@ int raft_recv_command(raft_server_t* me_, int peer, msg_command_t* cmd)
int raft_get_log_count(raft_server_t* me_)
{
raft_server_private_t* me = (void*)me_;
return arrayqueue_count(me->log);
return raft_log_count(me->log);
}
int raft_get_voted_for(raft_server_t* me_)
......@@ -505,7 +503,7 @@ int raft_append_entry(raft_server_t* me_, raft_command_t* c)
{
raft_server_private_t* me = (void*)me_;
arrayqueue_offer(me->log, c);
raft_log_append_entry(me->log,c);
me->current_index += 1;
return 1;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment