blob: 1dde057e163d43ae915b2a6098a2761984b72a16 [file] [log] [blame]
Giorgi Lekveishvilic548ec52020-03-16 21:59:14 +04001package main
2
3import "context"
4import "flag"
5import "fmt"
6import "log"
7import "net"
8import "time"
9
10import "google.golang.org/grpc"
11
12import pc "pcloud"
13
14var masterAddress string
15var selfAddress string
16
17func init() {
18 flag.StringVar(&masterAddress, "master", "localhost:123", "Metadata storage address.")
19 flag.StringVar(&selfAddress, "self", "", "Metadata storage address.")
20}
21
22type chunkStorage struct {
23}
24
25func (s *chunkStorage) ListChunks(
26 ctx context.Context,
27 request *pc.ListChunksRequest) (*pc.ListChunksResponse, error) {
28 return nil, nil
29}
30
31func (s *chunkStorage) ReadChunk(
32 ctx context.Context,
33 request *pc.ReadChunkRequest) (*pc.ReadChunkResponse, error) {
34 return nil, nil
35}
36
37func (s *chunkStorage) StoreChunk(
38 ctx context.Context,
39 request *pc.StoreChunkRequest) (*pc.StoreChunkResponse, error) {
40 return nil, nil
41}
42
43func main() {
44 flag.Parse()
45 log.Print("Chunk server starting")
46
47 // Create Master server client.
48 var opts []grpc.DialOption
49 opts = append(opts, grpc.WithInsecure())
50 opts = append(opts, grpc.WithBlock())
51 conn, err := grpc.Dial(masterAddress, opts...)
52 if err != nil {
53 log.Fatalf("Failed to dial %s: %v", masterAddress, err)
54 }
55 defer conn.Close()
56 client := pc.NewMetadataStorageClient(conn)
57
58 // Register current Chunk server with Master.
59 ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
60 _, err = client.AddChunkServer(
61 ctx,
62 &pc.AddChunkServerRequest{Address: selfAddress})
63 if err != nil {
64 log.Fatalf("failed to register chunk server: %v", err)
65 }
66 log.Print("Registered myself")
67
68 // Start RPC server
69 lis, err := net.Listen("tcp", fmt.Sprintf(":%d", 234))
70 if err != nil {
71 log.Fatalf("failed to listen: %v", err)
72 }
73 server := grpc.NewServer()
74 pc.RegisterChunkStorageServer(server, &chunkStorage{})
75 server.Serve(lis)
76}