blob: 371db9e619650af504706227ce1e7e2f5ca3bdb8 [file] [log] [blame]
package main
import "context"
import "flag"
import "fmt"
import "log"
import "net"
import "time"
import "google.golang.org/grpc"
import "pcloud/api"
import "pcloud/chunk"
var masterAddress = flag.String("master", "localhost:123", "Metadata storage address.")
var selfAddress = flag.String("self", "", "Metadata storage address.")
func main() {
flag.Parse()
log.Print("Chunk server starting")
// Create Master server client.
var opts []grpc.DialOption
opts = append(opts, grpc.WithInsecure())
opts = append(opts, grpc.WithBlock())
conn, err := grpc.Dial(*masterAddress, opts...)
if err != nil {
log.Fatalf("Failed to dial %s: %v", *masterAddress, err)
}
defer conn.Close()
client := api.NewMetadataStorageClient(conn)
// Register current Chunk server with Master.
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
_, err = client.AddChunkServer(
ctx,
&api.AddChunkServerRequest{Address: *selfAddress})
if err != nil {
log.Fatalf("failed to register chunk server: %v", err)
}
log.Print("Registered myself")
// Start RPC server
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", 234))
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
server := grpc.NewServer()
api.RegisterChunkStorageServer(server, chunk.NewChunkServer())
server.Serve(lis)
}