Move chunk/master data structures into libs
diff --git a/chunk/server.go b/chunk/server.go
new file mode 100644
index 0000000..c35d761
--- /dev/null
+++ b/chunk/server.go
@@ -0,0 +1,41 @@
+package chunk
+
+import "context"
+import "sync"
+
+import "pcloud/api"
+
+type ChunkServer struct {
+	chunks sync.Map
+}
+
+func NewChunkServer() *ChunkServer {
+	return &ChunkServer{}
+}
+
+func (s *ChunkServer) ListChunks(
+	ctx context.Context,
+	request *api.ListChunksRequest) (*api.ListChunksResponse, error) {
+	resp := api.ListChunksResponse{}
+	s.chunks.Range(func(k, v interface{}) bool {
+		resp.ChunkId = append(resp.ChunkId, k.(string))
+		return true
+	})
+	return &resp, nil
+}
+
+func (s *ChunkServer) ReadChunk(
+	ctx context.Context,
+	request *api.ReadChunkRequest) (*api.ReadChunkResponse, error) {
+	if data, ok := s.chunks.Load(request.ChunkId); ok {
+		return &api.ReadChunkResponse{Data: data.([]byte)}, nil
+	}
+	return nil, nil
+}
+
+func (s *ChunkServer) StoreChunk(
+	ctx context.Context,
+	request *api.StoreChunkRequest) (*api.StoreChunkResponse, error) {
+	s.chunks.Store(request.ChunkId, request.Data)
+	return &api.StoreChunkResponse{}, nil
+}