From 212482cba94056bd9829d809a8cedbe3077c4d4f Mon Sep 17 00:00:00 2001 From: number571 Date: Thu, 31 Oct 2024 05:23:49 +0700 Subject: [PATCH] update --- CHANGELOG.md | 1 + pkg/encoding/serialize_json.go | 5 +- pkg/encoding/serialize_yaml.go | 5 +- pkg/network/anonymity/anonymity.go | 21 +-- pkg/network/anonymity/queue/queue.go | 6 +- pkg/network/conn/conn.go | 24 +-- pkg/network/connkeeper/connkeeper.go | 4 +- pkg/network/network.go | 16 +- pkg/state/state.go | 7 +- pkg/storage/database/database.go | 13 +- pkg/utils/doc.go | 2 - pkg/utils/merge_errors.go | 19 -- pkg/utils/utils_test.go | 46 ----- test/result/badge_codelines.svg | 2 +- test/result/coverage.svg | 264 ++++++++++++++------------- 15 files changed, 188 insertions(+), 247 deletions(-) delete mode 100644 pkg/utils/doc.go delete mode 100644 pkg/utils/merge_errors.go delete mode 100644 pkg/utils/utils_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index e4c47eaf5..734ed039f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - `pkg/crypto/asymmetric`: append bench NewPrivKey - `pkg/network/anonymity/queue`: delete GetRandQueuePeriod - `cmd/tools/keygen`: add 'seed' param to generate private key +- `pkg/utils`: deleted diff --git a/pkg/encoding/serialize_json.go b/pkg/encoding/serialize_json.go index 6801e6222..035209d29 100644 --- a/pkg/encoding/serialize_json.go +++ b/pkg/encoding/serialize_json.go @@ -2,8 +2,7 @@ package encoding import ( "encoding/json" - - "github.com/number571/go-peer/pkg/utils" + "errors" ) func SerializeJSON(pData interface{}) []byte { @@ -13,7 +12,7 @@ func SerializeJSON(pData interface{}) []byte { func DeserializeJSON(pData []byte, pRes interface{}) error { if err := json.Unmarshal(pData, pRes); err != nil { - return utils.MergeErrors(ErrDeserialize, err) + return errors.Join(ErrDeserialize, err) } return nil } diff --git a/pkg/encoding/serialize_yaml.go b/pkg/encoding/serialize_yaml.go index 67080d120..11633afa7 100644 --- a/pkg/encoding/serialize_yaml.go +++ b/pkg/encoding/serialize_yaml.go @@ -1,7 +1,8 @@ package encoding import ( - "github.com/number571/go-peer/pkg/utils" + "errors" + yaml "gopkg.in/yaml.v2" ) @@ -12,7 +13,7 @@ func SerializeYAML(pData interface{}) []byte { func DeserializeYAML(pData []byte, pRes interface{}) error { if err := yaml.Unmarshal(pData, pRes); err != nil { - return utils.MergeErrors(ErrDeserialize, err) + return errors.Join(ErrDeserialize, err) } return nil } diff --git a/pkg/network/anonymity/anonymity.go b/pkg/network/anonymity/anonymity.go index 299da2c30..b1d8abd56 100644 --- a/pkg/network/anonymity/anonymity.go +++ b/pkg/network/anonymity/anonymity.go @@ -18,7 +18,6 @@ import ( "github.com/number571/go-peer/pkg/payload" "github.com/number571/go-peer/pkg/state" "github.com/number571/go-peer/pkg/storage/database" - "github.com/number571/go-peer/pkg/utils" anon_logger "github.com/number571/go-peer/pkg/network/anonymity/logger" net_message "github.com/number571/go-peer/pkg/network/message" @@ -71,7 +70,7 @@ func (p *sNode) Run(pCtx context.Context) error { return nil } if err := p.fState.Enable(enableFunc); err != nil { - return utils.MergeErrors(ErrRunning, err) + return errors.Join(ErrRunning, err) } defer func() { @@ -90,7 +89,7 @@ func (p *sNode) Run(pCtx context.Context) error { case <-pCtx.Done(): return pCtx.Err() case err := <-chErr: - return utils.MergeErrors(ErrProcessRun, err) + return errors.Join(ErrProcessRun, err) default: netMsg := p.fQueue.DequeueMessage(pCtx) if netMsg == nil { @@ -149,7 +148,7 @@ func (p *sNode) SendPayload( logBuilder := anon_logger.NewLogBuilder(p.fSettings.GetServiceName()) if err := p.enqueuePayload(logBuilder, pRecv, pPld); err != nil { // internal logger - return utils.MergeErrors(ErrEnqueuePayload, err) + return errors.Join(ErrEnqueuePayload, err) } return nil } @@ -175,12 +174,12 @@ func (p *sNode) FetchPayload( logBuilder := anon_logger.NewLogBuilder(p.fSettings.GetServiceName()) if err := p.enqueuePayload(logBuilder, pRecv, newPld); err != nil { // internal logger - return nil, utils.MergeErrors(ErrEnqueuePayload, err) + return nil, errors.Join(ErrEnqueuePayload, err) } resp, err := p.recvResponse(pCtx, actionKey) if err != nil { - return nil, utils.MergeErrors(ErrFetchResponse, err) + return nil, errors.Join(ErrFetchResponse, err) } return resp, nil @@ -223,14 +222,14 @@ func (p *sNode) networkHandler( if _, err := message.LoadMessage(client.GetMessageSize(), encMsg); err != nil { // problem from sender's side p.fLogger.PushWarn(logBuilder.WithType(anon_logger.CLogWarnMessageNull)) - return utils.MergeErrors(ErrLoadMessage, err) + return errors.Join(ErrLoadMessage, err) } // try store hash of message if ok, err := p.storeHashWithBroadcast(pCtx, logBuilder, pNetMsg); !ok { // internal logger if err != nil { - return utils.MergeErrors(ErrStoreHashWithBroadcast, err) + return errors.Join(ErrStoreHashWithBroadcast, err) } // hash already exist in database return nil @@ -355,7 +354,7 @@ func (p *sNode) enqueuePayload( if err := p.fQueue.EnqueueMessage(pRecv, pldBytes); err != nil { p.fLogger.PushWarn(pLogBuilder.WithType(logType)) - return utils.MergeErrors(ErrEnqueueMessage, err) + return errors.Join(ErrEnqueueMessage, err) } p.fLogger.PushInfo(pLogBuilder.WithType(logType)) @@ -409,12 +408,12 @@ func (p *sNode) storeHashIntoDatabase(pLogBuilder anon_logger.ILogBuilder, pHash } if !errors.Is(err, database.ErrNotFound) { p.fLogger.PushInfo(pLogBuilder.WithType(anon_logger.CLogErroDatabaseGet)) - return utils.MergeErrors(ErrGetHashFromDB, err) + return errors.Join(ErrGetHashFromDB, err) } // set hash to database with new address if err := p.fKVDatavase.Set(pHash, []byte{}); err != nil { p.fLogger.PushErro(pLogBuilder.WithType(anon_logger.CLogErroDatabaseSet)) - return utils.MergeErrors(ErrSetHashIntoDB, err) + return errors.Join(ErrSetHashIntoDB, err) } return nil } diff --git a/pkg/network/anonymity/queue/queue.go b/pkg/network/anonymity/queue/queue.go index 67c581f1a..32943d66d 100644 --- a/pkg/network/anonymity/queue/queue.go +++ b/pkg/network/anonymity/queue/queue.go @@ -2,6 +2,7 @@ package queue import ( "context" + "errors" "sync" "sync/atomic" "time" @@ -12,7 +13,6 @@ import ( "github.com/number571/go-peer/pkg/encoding" "github.com/number571/go-peer/pkg/payload" "github.com/number571/go-peer/pkg/state" - "github.com/number571/go-peer/pkg/utils" net_message "github.com/number571/go-peer/pkg/network/message" ) @@ -73,7 +73,7 @@ func (p *sQBProblemProcessor) Run(pCtx context.Context) error { defer cancel() if err := p.fState.Enable(nil); err != nil { - return utils.MergeErrors(ErrRunning, err) + return errors.Join(ErrRunning, err) } defer func() { _ = p.fState.Disable(nil) }() @@ -130,7 +130,7 @@ func (p *sQBProblemProcessor) EnqueueMessage(pPubKey asymmetric.IPubKey, pBytes rawMsg, err := p.fClient.EncryptMessage(pPubKey, pBytes) if err != nil { atomic.AddInt64(&p.fMainPool.fCount, -1) - return utils.MergeErrors(ErrEncryptMessage, err) + return errors.Join(ErrEncryptMessage, err) } p.fMainPool.fRawQueue <- rawMsg return nil diff --git a/pkg/network/conn/conn.go b/pkg/network/conn/conn.go index b86bb018c..a521228e4 100644 --- a/pkg/network/conn/conn.go +++ b/pkg/network/conn/conn.go @@ -3,13 +3,13 @@ package conn import ( "bytes" "context" + "errors" "net" "sync" "time" "github.com/number571/go-peer/pkg/encoding" "github.com/number571/go-peer/pkg/payload/joiner" - "github.com/number571/go-peer/pkg/utils" net_message "github.com/number571/go-peer/pkg/network/message" ) @@ -28,7 +28,7 @@ func Connect(pCtx context.Context, pSett ISettings, pAddr string) (IConn, error) dialer := &net.Dialer{Timeout: pSett.GetDialTimeout()} conn, err := dialer.DialContext(pCtx, "tcp", pAddr) if err != nil { - return nil, utils.MergeErrors(ErrCreateConnection, err) + return nil, errors.Join(ErrCreateConnection, err) } return LoadConn(pSett, conn), nil } @@ -58,7 +58,7 @@ func (p *sConn) WriteMessage(pCtx context.Context, pMsg net_message.IMessage) er bytesJoiner := joiner.NewBytesJoiner32([][]byte{pMsg.ToBytes()}) if err := p.sendBytes(pCtx, bytesJoiner); err != nil { - return utils.MergeErrors(ErrSendPayloadBytes, err) + return errors.Join(ErrSendPayloadBytes, err) } return nil @@ -68,18 +68,18 @@ func (p *sConn) ReadMessage(pCtx context.Context, pChRead chan<- struct{}) (net_ // large wait read deadline => the connection has not sent anything yet msgSize, err := p.recvHeadBytes(pCtx, pChRead, p.fSettings.GetWaitReadTimeout()) if err != nil { - return nil, utils.MergeErrors(ErrReadHeaderBytes, err) + return nil, errors.Join(ErrReadHeaderBytes, err) } dataBytes, err := p.recvDataBytes(pCtx, msgSize, p.fSettings.GetReadTimeout()) if err != nil { - return nil, utils.MergeErrors(ErrReadBodyBytes, err) + return nil, errors.Join(ErrReadBodyBytes, err) } // try unpack message from bytes msg, err := net_message.LoadMessage(p.fSettings.GetMessageSettings(), dataBytes) if err != nil { - return nil, utils.MergeErrors(ErrInvalidMessageBytes, err) + return nil, errors.Join(ErrInvalidMessageBytes, err) } return msg, nil @@ -93,12 +93,12 @@ func (p *sConn) sendBytes(pCtx context.Context, pBytes []byte) error { return pCtx.Err() default: if err := p.fSocket.SetWriteDeadline(time.Now().Add(p.fSettings.GetWriteTimeout())); err != nil { - return utils.MergeErrors(ErrSetWriteDeadline, err) + return errors.Join(ErrSetWriteDeadline, err) } n, err := p.fSocket.Write(pBytes[:bytesPtr]) if err != nil { - return utils.MergeErrors(ErrWriteToSocket, err) + return errors.Join(ErrWriteToSocket, err) } bytesPtr -= uint64(n) @@ -124,7 +124,7 @@ func (p *sConn) recvHeadBytes( go func() { headBytes, err = p.recvDataBytes(pCtx, encoding.CSizeUint32, pInitTimeout) if err != nil { - chErr <- utils.MergeErrors(ErrReadHeaderBlock, err) + chErr <- errors.Join(ErrReadHeaderBlock, err) return } chErr <- nil @@ -159,7 +159,7 @@ func (p *sConn) recvDataBytes(pCtx context.Context, pMustLen uint32, pInitTimeou dataRaw := make([]byte, 0, pMustLen) if err := p.fSocket.SetReadDeadline(time.Now().Add(pInitTimeout)); err != nil { - return nil, utils.MergeErrors(ErrSetReadDeadline, err) + return nil, errors.Join(ErrSetReadDeadline, err) } mustLen := pMustLen @@ -171,7 +171,7 @@ func (p *sConn) recvDataBytes(pCtx context.Context, pMustLen uint32, pInitTimeou buffer := make([]byte, mustLen) n, err := p.fSocket.Read(buffer) if err != nil { - return nil, utils.MergeErrors(ErrReadFromSocket, err) + return nil, errors.Join(ErrReadFromSocket, err) } dataRaw = bytes.Join( @@ -185,7 +185,7 @@ func (p *sConn) recvDataBytes(pCtx context.Context, pMustLen uint32, pInitTimeou mustLen -= uint32(n) if err := p.fSocket.SetReadDeadline(time.Now().Add(p.fSettings.GetReadTimeout())); err != nil { - return nil, utils.MergeErrors(ErrSetReadDeadline, err) + return nil, errors.Join(ErrSetReadDeadline, err) } } } diff --git a/pkg/network/connkeeper/connkeeper.go b/pkg/network/connkeeper/connkeeper.go index 35afa963f..8ef1069af 100644 --- a/pkg/network/connkeeper/connkeeper.go +++ b/pkg/network/connkeeper/connkeeper.go @@ -2,12 +2,12 @@ package connkeeper import ( "context" + "errors" "sync" "time" "github.com/number571/go-peer/pkg/network" "github.com/number571/go-peer/pkg/state" - "github.com/number571/go-peer/pkg/utils" ) var ( @@ -38,7 +38,7 @@ func (p *sConnKeeper) GetSettings() ISettings { func (p *sConnKeeper) Run(pCtx context.Context) error { if err := p.fState.Enable(nil); err != nil { - return utils.MergeErrors(ErrRunning, err) + return errors.Join(ErrRunning, err) } defer func() { _ = p.fState.Disable(nil) }() diff --git a/pkg/network/network.go b/pkg/network/network.go index 00b1b5a06..ab7dee7c3 100644 --- a/pkg/network/network.go +++ b/pkg/network/network.go @@ -2,13 +2,13 @@ package network import ( "context" + "errors" "net" "sync" "time" "github.com/number571/go-peer/pkg/network/conn" "github.com/number571/go-peer/pkg/storage/cache" - "github.com/number571/go-peer/pkg/utils" net_message "github.com/number571/go-peer/pkg/network/message" ) @@ -91,7 +91,7 @@ func (p *sNode) BroadcastMessage(pCtx context.Context, pMsg net_message.IMessage if err == nil { return } - listErr[i] = utils.MergeErrors(ErrBroadcastMessage, err) + listErr[i] = errors.Join(ErrBroadcastMessage, err) } // if got error -> delete connection @@ -102,7 +102,7 @@ func (p *sNode) BroadcastMessage(pCtx context.Context, pMsg net_message.IMessage } wg.Wait() - return utils.MergeErrors(listErr...) + return errors.Join(listErr...) } // Opens a tcp connection to receive data from outside. @@ -111,7 +111,7 @@ func (p *sNode) BroadcastMessage(pCtx context.Context, pMsg net_message.IMessage func (p *sNode) Listen(pCtx context.Context) error { listener, err := net.Listen("tcp", p.fSettings.GetAddress()) if err != nil { - return utils.MergeErrors(ErrCreateListener, err) + return errors.Join(ErrCreateListener, err) } defer listener.Close() @@ -123,7 +123,7 @@ func (p *sNode) Listen(pCtx context.Context) error { default: tconn, err := p.getListener().Accept() if err != nil { - return utils.MergeErrors(ErrListenerAccept, err) + return errors.Join(ErrListenerAccept, err) } if p.hasMaxConnSize() { @@ -155,7 +155,7 @@ func (p *sNode) Close() error { listErr = append(listErr, conn.Close()) } - return utils.MergeErrors(listErr...) + return errors.Join(listErr...) } // Saves the function to the map by key for subsequent redirection. @@ -194,7 +194,7 @@ func (p *sNode) AddConnection(pCtx context.Context, pAddress string) error { sett := p.fSettings.GetConnSettings() conn, err := conn.Connect(pCtx, sett, pAddress) if err != nil { - return utils.MergeErrors(ErrAddConnections, err) + return errors.Join(ErrAddConnections, err) } p.setConnection(pAddress, conn) @@ -216,7 +216,7 @@ func (p *sNode) DelConnection(pAddress string) error { delete(p.fConnections, pAddress) if err := conn.Close(); err != nil { - return utils.MergeErrors(ErrCloseConnection, err) + return errors.Join(ErrCloseConnection, err) } return nil diff --git a/pkg/state/state.go b/pkg/state/state.go index bac42e3c7..39aef3cfd 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -1,9 +1,8 @@ package state import ( + "errors" "sync" - - "github.com/number571/go-peer/pkg/utils" ) var ( @@ -29,7 +28,7 @@ func (p *sState) Enable(f IStateF) error { if f != nil { if err := f(); err != nil { - return utils.MergeErrors(ErrFuncEnable, err) + return errors.Join(ErrFuncEnable, err) } } @@ -47,7 +46,7 @@ func (p *sState) Disable(f IStateF) error { if f != nil { if err := f(); err != nil { - return utils.MergeErrors(ErrFuncDisable, err) + return errors.Join(ErrFuncDisable, err) } } diff --git a/pkg/storage/database/database.go b/pkg/storage/database/database.go index 3e4481e5c..c071ff117 100644 --- a/pkg/storage/database/database.go +++ b/pkg/storage/database/database.go @@ -1,7 +1,8 @@ package database import ( - "github.com/number571/go-peer/pkg/utils" + "errors" + "go.etcd.io/bbolt" ) @@ -20,7 +21,7 @@ type sKVDatabase struct { func NewKVDatabase(pPath string) (IKVDatabase, error) { db, err := bbolt.Open(pPath, 0600, &bbolt.Options{}) if err != nil { - return nil, utils.MergeErrors(ErrOpenDB, err) + return nil, errors.Join(ErrOpenDB, err) } return &sKVDatabase{fDB: db}, nil @@ -28,7 +29,7 @@ func NewKVDatabase(pPath string) (IKVDatabase, error) { func (p *sKVDatabase) Set(pKey []byte, pValue []byte) error { if err := setDB(p.fDB, pKey, pValue); err != nil { - return utils.MergeErrors(ErrSetValueDB, err) + return errors.Join(ErrSetValueDB, err) } return nil } @@ -46,7 +47,7 @@ func setDB(pDB *bbolt.DB, pKey []byte, pValue []byte) error { func (p *sKVDatabase) Get(pKey []byte) ([]byte, error) { value, err := getDB(p.fDB, pKey) if err != nil { - return nil, utils.MergeErrors(ErrGetValueDB, err) + return nil, errors.Join(ErrGetValueDB, err) } return value, nil } @@ -71,7 +72,7 @@ func getDB(pDB *bbolt.DB, pKey []byte) ([]byte, error) { func (p *sKVDatabase) Del(pKey []byte) error { if err := delDB(p.fDB, pKey); err != nil { - return utils.MergeErrors(ErrDelValueDB, err) + return errors.Join(ErrDelValueDB, err) } return nil } @@ -88,7 +89,7 @@ func delDB(pDB *bbolt.DB, pKey []byte) error { func (p *sKVDatabase) Close() error { if err := p.fDB.Close(); err != nil { - return utils.MergeErrors(ErrCloseDB, err) + return errors.Join(ErrCloseDB, err) } return nil } diff --git a/pkg/utils/doc.go b/pkg/utils/doc.go deleted file mode 100644 index c94ab16d9..000000000 --- a/pkg/utils/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package utils provides auxiliary functions. -package utils diff --git a/pkg/utils/merge_errors.go b/pkg/utils/merge_errors.go deleted file mode 100644 index 9254dbac1..000000000 --- a/pkg/utils/merge_errors.go +++ /dev/null @@ -1,19 +0,0 @@ -package utils - -import ( - error_chain "github.com/g8rswimmer/error-chain" -) - -func MergeErrors(pErrors ...error) error { - errChain := error_chain.New() - for _, err := range pErrors { - if err == nil { - continue - } - errChain.Add(err) - } - if len(errChain.Errors()) == 0 { - return nil - } - return errChain -} diff --git a/pkg/utils/utils_test.go b/pkg/utils/utils_test.go deleted file mode 100644 index ffa6e4d6e..000000000 --- a/pkg/utils/utils_test.go +++ /dev/null @@ -1,46 +0,0 @@ -package utils - -import ( - "errors" - "fmt" - "testing" -) - -var ( - err1 = errors.New("error#1") - err2 = errors.New("error#2") - err3 = errors.New("error#3") - err4 = errors.New("error#4") - errStr = fmt.Sprintf("%s: %s: %s", err1.Error(), err2.Error(), err3.Error()) -) - -func TestMergeErrors(t *testing.T) { - t.Parallel() - - errList := []error{err1, nil, err2, err3} - err := MergeErrors(errList...) - if err == nil { - t.Error("nothing errors?") - return - } - if !errors.Is(err, err1) { - t.Error("not found error#1") - return - } - if !errors.Is(err, err2) { - t.Error("not found error#2") - return - } - if !errors.Is(err, err3) { - t.Error("not found error#3") - return - } - if errors.Is(err, err4) { - t.Error("found not exist error#4") - return - } - if err.Error() != errStr { - t.Error("got another string error") - return - } -} diff --git a/test/result/badge_codelines.svg b/test/result/badge_codelines.svg index 772d81e2a..773c599e2 100644 --- a/test/result/badge_codelines.svg +++ b/test/result/badge_codelines.svg @@ -1 +1 @@ -code lines: 12544code lines12544 \ No newline at end of file +code lines: 12476code lines12476 \ No newline at end of file diff --git a/test/result/coverage.svg b/test/result/coverage.svg index 0d5d8e047..4dd90fca6 100644 --- a/test/result/coverage.svg +++ b/test/result/coverage.svg @@ -7,7 +7,7 @@ > - + - + - + - + client @@ -52,12 +52,12 @@ - + crypto @@ -65,12 +65,12 @@ - + encoding @@ -78,12 +78,12 @@ - + logger @@ -91,7 +91,7 @@ - + - + payload @@ -117,12 +117,12 @@ - + state @@ -130,12 +130,12 @@ - + storage @@ -143,18 +143,12 @@ - - - - - - - + client.go @@ -162,12 +156,12 @@ - + message @@ -175,12 +169,12 @@ - + asymmetric @@ -188,12 +182,12 @@ - + hashing @@ -201,18 +195,18 @@ - + - + puzzle/puzzle.go @@ -220,12 +214,12 @@ - + random/random.go @@ -233,12 +227,12 @@ - + symmetric/symmetric.go @@ -246,12 +240,12 @@ - + bytes.go @@ -259,43 +253,50 @@ - - - - - - - + - + +hex.go + - + serialize_yaml.go + data-math="N">serialize_json.go - + + + + + + + logger.go @@ -303,13 +304,13 @@ - + - + - + conn @@ -335,12 +336,12 @@ - + connkeeper @@ -348,18 +349,18 @@ - + - + message @@ -367,25 +368,25 @@ - + network.go - + settings.go @@ -393,12 +394,12 @@ - + joiner @@ -406,12 +407,12 @@ - + payload32.go @@ -419,12 +420,12 @@ - + payload64.go @@ -432,12 +433,12 @@ - + state.go @@ -445,12 +446,12 @@ - + cache/lru.go @@ -458,12 +459,12 @@ - + database @@ -471,12 +472,12 @@ - + message.go @@ -484,12 +485,12 @@ - + dsa.go @@ -497,12 +498,12 @@ - + kem.go @@ -510,12 +511,12 @@ - + key.go @@ -523,12 +524,12 @@ - + map_pubkeys.go @@ -536,24 +537,24 @@ - + - + - + action.go @@ -561,7 +562,7 @@ - + - + - + head.go @@ -593,12 +594,12 @@ - + logger @@ -606,12 +607,12 @@ - + queue @@ -619,12 +620,12 @@ - + settings.go @@ -632,12 +633,12 @@ - + conn.go @@ -645,12 +646,12 @@ - + settings.go @@ -658,12 +659,12 @@ - + connkeeper.go @@ -671,30 +672,37 @@ - + - + +settings.go + - + - + message.go @@ -702,12 +710,12 @@ - + settings.go @@ -715,12 +723,12 @@ - + joiner32.go @@ -728,12 +736,12 @@ - + database.go @@ -741,12 +749,12 @@ - + log_builder.go @@ -754,24 +762,24 @@ - + - + - + queue.go @@ -779,7 +787,7 @@ - +