X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fsbi%2Fnngpub.go;fp=pkg%2Fsbi%2Fnngpub.go;h=02e4ebfd2fda352cc364b9978dfad7644a7a8ad4;hb=871fa393844ce1b61b8d5218d27687d9fc05803a;hp=0000000000000000000000000000000000000000;hpb=3b790149556c8d8f3a3701c0e3c4a56e56e078d1;p=ric-plt%2Frtmgr.git diff --git a/pkg/sbi/nngpub.go b/pkg/sbi/nngpub.go new file mode 100644 index 0000000..02e4ebf --- /dev/null +++ b/pkg/sbi/nngpub.go @@ -0,0 +1,68 @@ +/* +================================================================================== + Copyright (c) 2019 AT&T Intellectual Property. + Copyright (c) 2019 Nokia + + 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. +================================================================================== +*/ +/* + Mnemonic: nngpub.go + Abstract: mangos (NNG) Pub/Sub SBI implementation + Date: 12 March 2019 +*/ + +package sbi + +import ( + "errors" + "nanomsg.org/go/mangos/v2" + "nanomsg.org/go/mangos/v2/protocol/pub" + _ "nanomsg.org/go/mangos/v2/transport/all" + "rtmgr" + "strconv" +) + +var sock mangos.Socket + +/* +Creates the NNG publication channel +*/ +func openNngPub(url string) error { + var err error + if sock, err = pub.NewSocket(); err != nil { + return errors.New("can't get new pub socket due to:" + err.Error()) + } + rtmgr.Logger.Info("publishing on: " + url) + if err = sock.Listen(url); err != nil { + return errors.New("can't publish on socket " + url + " due to:" + err.Error()) + } + return nil +} + +func closeNngPub() error { + if err := sock.Close(); err != nil { + return errors.New("can't close socket due to:" + err.Error()) + } + return nil +} + +func publishAll(policies *[]string) error { + for _, pe := range *policies { + if err := sock.Send([]byte(pe)); err != nil { + return errors.New("Unable to send policy entry due to: " + err.Error()) + } + } + rtmgr.Logger.Info("NNG PUB: OK (# of Entries:" + strconv.Itoa(len((*policies))) + ")") + return nil +}