From b4c7039b6a720c2b35deb79b3018472243677c70 Mon Sep 17 00:00:00 2001 From: Mohamed Abukar Date: Thu, 13 Feb 2020 20:43:15 +0200 Subject: [PATCH] Use C-buffer directly instead of GoBytes() Change-Id: I5c1c418be39a25254e301c9564fbb6db65cc7364 Signed-off-by: Mohamed Abukar --- pkg/xapp/logger.go | 14 ++++++++++---- pkg/xapp/rmr.go | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) mode change 100644 => 100755 pkg/xapp/logger.go diff --git a/pkg/xapp/logger.go b/pkg/xapp/logger.go old mode 100644 new mode 100755 index ff6e52e..cd1b03b --- a/pkg/xapp/logger.go +++ b/pkg/xapp/logger.go @@ -20,6 +20,7 @@ package xapp import ( + "fmt" mdclog "gerrit.o-ran-sc.org/r/com/golog" "time" ) @@ -44,21 +45,26 @@ func (l *Log) SetMdc(key string, value string) { } func (l *Log) Error(pattern string, args ...interface{}) { - l.SetMdc("time", time.Now().Format("2019-01-02 15:04:05")) + l.SetMdc("time", timeFormat()) l.logger.Error(pattern, args...) } func (l *Log) Warn(pattern string, args ...interface{}) { - l.SetMdc("time", time.Now().Format("2019-01-02 15:04:05")) + l.SetMdc("time", timeFormat()) l.logger.Warning(pattern, args...) } func (l *Log) Info(pattern string, args ...interface{}) { - l.SetMdc("time", time.Now().Format("2019-01-02 15:04:05")) + l.SetMdc("time", timeFormat()) l.logger.Info(pattern, args...) } func (l *Log) Debug(pattern string, args ...interface{}) { - l.SetMdc("time", time.Now().Format("2019-01-02 15:04:05")) + l.SetMdc("time", timeFormat()) l.logger.Debug(pattern, args...) } + +func timeFormat() string { + t := time.Now() + return fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d", t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second()) +} diff --git a/pkg/xapp/rmr.go b/pkg/xapp/rmr.go index a25b340..fc354c3 100755 --- a/pkg/xapp/rmr.go +++ b/pkg/xapp/rmr.go @@ -180,10 +180,24 @@ func (m *RMRClient) parseMessage(rxBuffer *C.rmr_mbuf_t) { params.Src = strings.TrimRight(string(srcBuf[0:64]), "\000") } + // Default case: a single consumer + if len(m.consumers) == 1 && m.consumers[0] != nil { + params.PayloadLen = int(rxBuffer.len) + params.Payload = (*[1 << 30]byte)(unsafe.Pointer(rxBuffer.payload))[:params.PayloadLen:params.PayloadLen] + err := m.consumers[0].Consume(params) + if err != nil { + Logger.Warn("rmrClient: Consumer returned error: %v", err) + } + return + } + + // Special case for multiple consumers for _, c := range m.consumers { cptr := unsafe.Pointer(rxBuffer.payload) params.Payload = C.GoBytes(cptr, C.int(rxBuffer.len)) params.PayloadLen = int(rxBuffer.len) + params.Mtype = int(rxBuffer.mtype) + params.SubId = int(rxBuffer.sub_id) err := c.Consume(params) if err != nil { -- 2.16.6