Cleaning and bug fixes
[ric-plt/submgr.git] / e2ap / pkg / packer / packer.go
index e36af8b..9eeefaf 100644 (file)
@@ -21,47 +21,44 @@ package packer
 
 import (
        "fmt"
+       "strings"
 )
 
-const cLogBufferMaxSize = 1024
-const cMsgBufferMaxSize = 2048
+const cLogBufferMaxSize = 40960
 
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
 
-type PduPackerIf interface {
-       PduPack(logBuf []byte, data *PackedData) error
+type PduLoggerBuf struct {
+       logBuffer []byte
 }
 
-func PduPackerPack(entry PduPackerIf, trgBuf *PackedData) error {
-
-       var logBuffer []byte = make([]byte, cLogBufferMaxSize)
-       logBuffer[0] = 0
+func (lb *PduLoggerBuf) String() string {
+       return "logbuffer(" + string(lb.logBuffer[:strings.Index(string(lb.logBuffer[:]), "\000")]) + ")"
+}
 
-       if trgBuf != nil {
-               trgBuf.Buf = make([]byte, cMsgBufferMaxSize)
-       }
-       err := entry.PduPack(logBuffer, trgBuf)
-       if err == nil {
-               return nil
-       }
-       reterr := fmt.Errorf("Pack failed: %s", err.Error())
+func NewPduLoggerBuf() *PduLoggerBuf {
+       lb := &PduLoggerBuf{}
+       lb.logBuffer = make([]byte, cLogBufferMaxSize)
+       lb.logBuffer[0] = 0
+       return lb
+}
 
-       //reterr = fmt.Errorf("%s: PDU:%s", reterr.Error(), string(logBuffer))
-       return reterr
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type PduPackerIf interface {
+       PduPack(logBuf []byte) (error, *PackedData)
 }
 
-func PduPackerPackAllocTrg(entry PduPackerIf, trgBuf *PackedData) (error, *PackedData) {
-       dataPacked := trgBuf
-       if dataPacked == nil {
-               dataPacked = &PackedData{}
-       }
-       err := PduPackerPack(entry, dataPacked)
-       if err != nil {
-               return err, nil
+func PduPackerPack(entry PduPackerIf) (error, *PackedData) {
+       lb := NewPduLoggerBuf()
+       err, buf := entry.PduPack(lb.logBuffer)
+       if err == nil {
+               return nil, buf
        }
-       return nil, dataPacked
+       return fmt.Errorf("Pack failed: err(%s), %s", err.Error(), lb.String()), nil
 }
 
 //-----------------------------------------------------------------------------
@@ -73,15 +70,13 @@ type PduUnPackerIf interface {
 }
 
 func PduPackerUnPack(entry PduUnPackerIf, data *PackedData) error {
-       var logBuffer []byte = make([]byte, cLogBufferMaxSize)
-
-       logBuffer[0] = 0
-       err := entry.PduUnPack(logBuffer, data)
+       if data == nil {
+               return fmt.Errorf("Unpack failed: data is nil")
+       }
+       lb := NewPduLoggerBuf()
+       err := entry.PduUnPack(lb.logBuffer, data)
        if err == nil {
                return nil
        }
-       reterr := fmt.Errorf("Unpack failed: %s", logBuffer)
-
-       //reterr = fmt.Errorf("%s: PDU:%s", reterr.Error(), string(logBuffer))
-       return reterr
+       return fmt.Errorf("Unpack failed: err(%s), %s", err.Error(), lb.String())
 }