|
|
@@ -4,6 +4,8 @@ import (
|
|
|
"flag"
|
|
|
"log"
|
|
|
"net/http"
|
|
|
+ "strconv"
|
|
|
+ "time"
|
|
|
|
|
|
etcdserver "github.com/coreos/etcd/etcdserver2"
|
|
|
"github.com/coreos/etcd/etcdserver2/etcdhttp"
|
|
|
@@ -12,25 +14,34 @@ import (
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
- id = flag.String("id", "default", "The id of this server")
|
|
|
+ fid = flag.String("id", "default", "Id of this server")
|
|
|
+ timeout = flag.Duration("timeout", 10*time.Second, "Request Timeout")
|
|
|
+ laddr = flag.String("l", ":8080", "HTTP service address (e.g., ':8080')")
|
|
|
+
|
|
|
+ peers = etcdhttp.Peers{}
|
|
|
)
|
|
|
|
|
|
+func init() {
|
|
|
+ flag.Var(peers, "peers", "your peers")
|
|
|
+}
|
|
|
+
|
|
|
func main() {
|
|
|
- const V2Prefix = "/v2"
|
|
|
+ id, err := strconv.ParseInt(*fid, 16, 64)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
|
|
|
- peers := etcdhttp.Discover(V2Prefix, peerips)
|
|
|
- n := raft.Start(*id, peers.Ids())
|
|
|
+ n := raft.Start(id, peers.Ids())
|
|
|
s := &etcdserver.Server{
|
|
|
Node: n,
|
|
|
Save: func(st raftpb.State, ents []raftpb.Entry) {}, // TODO: use wal
|
|
|
- Send: etcdhttp.Sender(V2Prefix),
|
|
|
+ Send: etcdhttp.Sender(peers),
|
|
|
}
|
|
|
etcdserver.Start(s)
|
|
|
h := &etcdhttp.Handler{
|
|
|
- Timeout: timeout,
|
|
|
+ Timeout: *timeout,
|
|
|
Server: s,
|
|
|
- Peers: peers,
|
|
|
}
|
|
|
- http.Handle(V2Prefix, http.StripPrefix(V2Prefix, h))
|
|
|
+ http.Handle("/", h)
|
|
|
log.Fatal(http.ListenAndServe(*laddr, nil))
|
|
|
}
|