Repository navigation
Expand file tree
/
Copy pathServer.cpp
More file actions
78 lines (68 loc) · 2.27 KB
/
Copy pathServer.cpp
File metadata and controls
78 lines (68 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//
// Created by projector on 6/28/22.
//
#include <butil/at_exit.h>
#include "Server.h"
#include "FuseFS.h"
#include "RaftStateMachine.h"
#include "brpc/server.h"
#include <butil/logging.h>
#include "butil/string_splitter.h"
DEFINE_string(fuse_args, "", "fuse args");
void ParseFuseArgs(int *argc, char *** argv)
{
char **pArgv = *argv;
static char *args[100] = {};
string fuse_args(string(pArgv[0])+ ' ' + FLAGS_fuse_args);
LOG(INFO) << LVAR(fuse_args);
butil::StringMultiSplitter splitter(fuse_args.c_str(), " ");
*argc = 0;
while (splitter.operator const void *()) {
int nLen = splitter.length();
char *p = new char[nLen+1];
memset(p, 0, nLen+1);
strncpy(p, splitter.field(), nLen);
// LOG(INFO) << LVAR(splitter.field()) << LVAR(splitter.length());
args[*argc] = p;
(*argc) ++ ;
++splitter;
}
*argv = args;
}
/*
mkdir -p /tmp/FuseSrc/ /tmp/FuseTarget
sudo umount /tmp/FuseTarget
sudo ./cmake-build-debug/Server -data_path=`pwd`/raft_data -fuse_args='-d -o umask=0002 -o uid=1003 -o gid=1003 -o allow_other /tmp/FuseTarget' -src_dir=/tmp/FuseSrc/
sudo ./cmake-build-debug/Server -port=8101 -conf=`hostname -i`:8100:0 -data_path=`pwd`/raft_data1 -fuse_args='-d -o umask=0002 -o uid=1003 -o gid=1003 -o allow_other /tmp/FuseTarget1' -src_dir=/tmp/FuseSrc1/
./braft_cli add_peer --group=fuse --conf=`hostname -i`:8100:0 --peer=`hostname -i`:8101:0
ls /tmp/FuseTarget/
vim /tmp/FuseTarget/test.txt
*/
int main(int argc, char ** argv)
{
gflags::ParseCommandLineFlags(&argc, &argv, false);
butil::AtExitManager exit_manager;
LOG(INFO) << LVAR(FLAGS_fuse_args);
ParseFuseArgs(&argc, &argv);
for (int i = 0; i < argc; i++) {
LOG(INFO) << LVAR(argv[i]);
}
brpc::Server server;
RaftStateMachine raftStateMachine;
if (braft::add_service(&server, FLAGS_port) != 0) {
LOG(ERROR) << "Fail to add raft service";
return -1;
}
if (server.Start(FLAGS_port, NULL) != 0) {
LOG(ERROR) << "Fail to start Server";
return -1;
}
int ret = raftStateMachine.start();
if (ret != 0) {
LOG(ERROR) << LVAR(ret);
return ret;
}
FuseFS fuseFs(raftStateMachine);
fuseFs.main(argc, argv);
LOG(INFO) << "end";
}