图片修改
This commit is contained in:
20
kvs_slave.c
20
kvs_slave.c
@@ -25,6 +25,21 @@ static int kvs_write_u32(uint8_t **pp, uint32_t v) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint64_t kvs_get_log_tail_offset(void) {
|
||||
int fd = open("kvs_cmd_log.db", O_RDONLY);
|
||||
if (fd < 0) {
|
||||
// 文件不存在:从 0 开始同步
|
||||
if (errno == ENOENT) return 0;
|
||||
// 其他错误:保守起见从 0 开始
|
||||
return 0;
|
||||
}
|
||||
|
||||
off_t end = lseek(fd, 0, SEEK_END);
|
||||
close(fd);
|
||||
|
||||
if (end < 0) return 0;
|
||||
return (uint64_t)end; // 指向 EOF(下一次写入的位置)
|
||||
}
|
||||
|
||||
int try_connect_master(char *ip, int port){
|
||||
|
||||
@@ -53,10 +68,9 @@ int try_connect_master(char *ip, int port){
|
||||
uint64_t len = sizeof(uint64_t);
|
||||
kvs_write_u32((uint8_t**)&p, len);
|
||||
|
||||
uint64_t offset = 0;
|
||||
uint64_t offset = kvs_get_log_tail_offset();
|
||||
memcpy(p, (void*)&offset, len);
|
||||
|
||||
p += len;
|
||||
p += sizeof(offset);
|
||||
|
||||
send(fd, buf, p-buf, 0);
|
||||
recv(fd, buf, 100, 0);
|
||||
|
||||
Reference in New Issue
Block a user