blob: 371db9e619650af504706227ce1e7e2f5ca3bdb8 [file] [log] [blame]
Giorgi Lekveishvilib8f089f2020-03-18 23:28:12 +04001package main
2
3import "context"
4import "flag"
5import "fmt"
6import "log"
7import "net"
8import "time"
9
10import "google.golang.org/grpc"
11
12import "pcloud/api"
13import "pcloud/chunk"
14
15var masterAddress = flag.String("master", "localhost:123", "Metadata storage address.")
16var selfAddress = flag.String("self", "", "Metadata storage address.")
17
18func main() {
19 flag.Parse()
20 log.Print("Chunk server starting")
21
22 // Create Master server client.
23 var opts []grpc.DialOption
24 opts = append(opts, grpc.WithInsecure())
25 opts = append(opts, grpc.WithBlock())
26 conn, err := grpc.Dial(*masterAddress, opts...)
27 if err != nil {
28 log.Fatalf("Failed to dial %s: %v", *masterAddress, err)
29 }
30 defer conn.Close()
31 client := api.NewMetadataStorageClient(conn)
32
33 // Register current Chunk server with Master.
34 ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
35 _, err = client.AddChunkServer(
36 ctx,
37 &api.AddChunkServerRequest{Address: *selfAddress})
38 if err != nil {
39 log.Fatalf("failed to register chunk server: %v", err)
40 }
41 log.Print("Registered myself")
42
43 // Start RPC server
44 lis, err := net.Listen("tcp", fmt.Sprintf(":%d", 234))
45 if err != nil {
46 log.Fatalf("failed to listen: %v", err)
47 }
48 server := grpc.NewServer()
49 api.RegisterChunkStorageServer(server, chunk.NewChunkServer())
50 server.Serve(lis)
51}