Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Willemt Raft
Commits
8405f29e
Commit
8405f29e
authored
Aug 15, 2015
by
Willem Thiart
Browse files
Pass entry index into log event callback
parent
1dbe5faf
Changes
2
Hide whitespace changes
Inline
Side-by-side
include/raft.h
View file @
8405f29e
...
@@ -194,13 +194,15 @@ typedef int (
...
@@ -194,13 +194,15 @@ typedef int (
* @param raft The Raft server making this callback
* @param raft The Raft server making this callback
* @param udata User data that is passed from Raft server
* @param udata User data that is passed from Raft server
* @param entry The entry that the event is happening to
* @param entry The entry that the event is happening to
* @param entry_idx The entries index in the log
* @return 0 on success */
* @return 0 on success */
typedef
int
(
typedef
int
(
*
func_logentry_event_f
*
func_logentry_event_f
)
(
)
(
raft_server_t
*
raft
,
raft_server_t
*
raft
,
void
*
udata
,
void
*
udata
,
raft_entry_t
*
entry
raft_entry_t
*
entry
,
int
entry_idx
);
);
typedef
struct
typedef
struct
...
...
src/raft_log.c
View file @
8405f29e
...
@@ -50,7 +50,7 @@ static void __ensurecapacity(log_private_t * me)
...
@@ -50,7 +50,7 @@ static void __ensurecapacity(log_private_t * me)
if
(
me
->
count
<
me
->
size
)
if
(
me
->
count
<
me
->
size
)
return
;
return
;
temp
=
(
raft_entry_t
*
)
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
*
2
);
temp
=
(
raft_entry_t
*
)
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
*
2
);
for
(
i
=
0
,
j
=
me
->
front
;
i
<
me
->
count
;
i
++
,
j
++
)
for
(
i
=
0
,
j
=
me
->
front
;
i
<
me
->
count
;
i
++
,
j
++
)
{
{
...
@@ -70,11 +70,11 @@ static void __ensurecapacity(log_private_t * me)
...
@@ -70,11 +70,11 @@ static void __ensurecapacity(log_private_t * me)
log_t
*
log_new
()
log_t
*
log_new
()
{
{
log_private_t
*
me
=
(
log_private_t
*
)
calloc
(
1
,
sizeof
(
log_private_t
));
log_private_t
*
me
=
(
log_private_t
*
)
calloc
(
1
,
sizeof
(
log_private_t
));
me
->
size
=
INITIAL_CAPACITY
;
me
->
size
=
INITIAL_CAPACITY
;
me
->
count
=
0
;
me
->
count
=
0
;
me
->
back
=
in
(
me
)
->
front
=
0
;
me
->
back
=
in
(
me
)
->
front
=
0
;
me
->
entries
=
(
raft_entry_t
*
)
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
);
me
->
entries
=
(
raft_entry_t
*
)
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
);
return
(
log_t
*
)
me
;
return
(
log_t
*
)
me
;
}
}
...
@@ -97,10 +97,10 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
...
@@ -97,10 +97,10 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
memcpy
(
&
me
->
entries
[
me
->
back
],
c
,
sizeof
(
raft_entry_t
));
memcpy
(
&
me
->
entries
[
me
->
back
],
c
,
sizeof
(
raft_entry_t
));
me
->
entries
[
me
->
back
].
num_nodes
=
0
;
me
->
entries
[
me
->
back
].
num_nodes
=
0
;
if
(
me
->
cb
&&
me
->
cb
->
log_offer
)
me
->
cb
->
log_offer
(
me
->
raft
,
raft_get_udata
(
me
->
raft
),
c
,
me
->
back
);
me
->
count
++
;
me
->
count
++
;
me
->
back
++
;
me
->
back
++
;
if
(
me
->
cb
&&
me
->
cb
->
log_offer
)
me
->
cb
->
log_offer
(
me
->
raft
,
raft_get_udata
(
me
->
raft
),
c
);
return
0
;
return
0
;
}
}
...
@@ -138,7 +138,8 @@ void log_delete(log_t* me_, int idx)
...
@@ -138,7 +138,8 @@ void log_delete(log_t* me_, int idx)
for
(
end
=
log_count
(
me_
);
idx
<
end
;
idx
++
)
for
(
end
=
log_count
(
me_
);
idx
<
end
;
idx
++
)
{
{
if
(
me
->
cb
&&
me
->
cb
->
log_pop
)
if
(
me
->
cb
&&
me
->
cb
->
log_pop
)
me
->
cb
->
log_pop
(
me
->
raft
,
raft_get_udata
(
me
->
raft
),
&
me
->
entries
[
me
->
back
]);
me
->
cb
->
log_pop
(
me
->
raft
,
raft_get_udata
(
me
->
raft
),
&
me
->
entries
[
me
->
back
],
me
->
back
);
me
->
back
--
;
me
->
back
--
;
me
->
count
--
;
me
->
count
--
;
}
}
...
@@ -153,7 +154,8 @@ void *log_poll(log_t * me_)
...
@@ -153,7 +154,8 @@ void *log_poll(log_t * me_)
const
void
*
elem
=
&
me
->
entries
[
me
->
front
];
const
void
*
elem
=
&
me
->
entries
[
me
->
front
];
if
(
me
->
cb
&&
me
->
cb
->
log_poll
)
if
(
me
->
cb
&&
me
->
cb
->
log_poll
)
me
->
cb
->
log_poll
(
me
->
raft
,
raft_get_udata
(
me
->
raft
),
&
me
->
entries
[
me
->
front
]);
me
->
cb
->
log_poll
(
me
->
raft
,
raft_get_udata
(
me
->
raft
),
&
me
->
entries
[
me
->
front
],
me
->
front
);
me
->
front
++
;
me
->
front
++
;
me
->
count
--
;
me
->
count
--
;
me
->
base_log_idx
++
;
me
->
base_log_idx
++
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment