[VOL-3678] First implementation of the BBSim-sadis-server

Change-Id: I5077a8f861f4cc6af9759f31a4a415042c05eba3
diff --git a/internal/core/store.go b/internal/core/store.go
new file mode 100644
index 0000000..a6d24fb
--- /dev/null
+++ b/internal/core/store.go
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package core
+
+import (
+	"context"
+	"fmt"
+	"github.com/opencord/voltha-lib-go/v4/pkg/log"
+	"sync"
+)
+
+type Store struct {
+	olts sync.Map
+	onus sync.Map
+	bps  sync.Map
+}
+
+func NewStore() *Store {
+	return &Store{
+		olts: sync.Map{},
+		onus: sync.Map{},
+		bps:  sync.Map{},
+	}
+}
+
+func (s *Store) addOlt(ctx context.Context, entry SadisOltEntry) {
+	logger.Debugw(ctx, "adding-olt", log.Fields{"olt": entry})
+	s.olts.Store(entry.ID, entry)
+}
+
+func (s *Store) addOnu(ctx context.Context, entry SadisOnuEntryV2) {
+	logger.Debugw(ctx, "adding-onu", log.Fields{"onu": entry})
+	s.onus.Store(entry.ID, entry)
+}
+
+func (s *Store) addBp(ctx context.Context, entry SadisBWPEntry) {
+	logger.Debugw(ctx, "adding-bp", log.Fields{"bp": entry})
+	s.bps.Store(entry.ID, entry)
+}
+
+func (s *Store) getOlt(ctx context.Context, id string) (*SadisOltEntry, error) {
+	logger.Debugw(ctx, "getting-olt", log.Fields{"olt": id})
+	if entry, ok := s.olts.Load(id); ok {
+		e := entry.(SadisOltEntry)
+		return &e, nil
+	}
+	return nil, fmt.Errorf("olt-not-found-in-store")
+}
+
+func (s *Store) getOnu(ctx context.Context, id string) (*SadisOnuEntryV2, error) {
+	logger.Debugw(ctx, "getting-onu", log.Fields{"onu": id})
+	if entry, ok := s.onus.Load(id); ok {
+		e := entry.(SadisOnuEntryV2)
+		return &e, nil
+	}
+	return nil, fmt.Errorf("onu-not-found-in-store")
+}
+
+func (s *Store) getBp(ctx context.Context, id string) (*SadisBWPEntry, error) {
+	logger.Debugw(ctx, "getting-bp", log.Fields{"bp": id})
+	if entry, ok := s.bps.Load(id); ok {
+		e := entry.(SadisBWPEntry)
+		return &e, nil
+	}
+	return nil, fmt.Errorf("bp-not-found-in-store")
+}