Use C-buffer directly instead of GoBytes() 12/2512/4 v0.0.26
authorMohamed Abukar <abukar.mohamed@nokia.com>
Thu, 13 Feb 2020 18:43:15 +0000 (20:43 +0200)
committerMohamed Abukar <abukar.mohamed@nokia.com>
Thu, 13 Feb 2020 19:43:19 +0000 (21:43 +0200)
Change-Id: I5c1c418be39a25254e301c9564fbb6db65cc7364
Signed-off-by: Mohamed Abukar <abukar.mohamed@nokia.com>
pkg/xapp/logger.go [changed mode: 0644->0755]
pkg/xapp/rmr.go

old mode 100644 (file)
new mode 100755 (executable)
index ff6e52e..cd1b03b
@@ -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())
+}
index a25b340..fc354c3 100755 (executable)
@@ -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 {