MCPcopy Index your code
hub / github.com/ContainerSSH/ContainerSSH / Encode

Method Encode

internal/auditlog/codec/binary/encode.go:35–74  ·  view source on GitHub ↗
(messages <-chan message.Message, storage storage.Writer)

Source from the content-addressed store, hash-verified

33}
34
35func (e *encoder) Encode(messages <-chan message.Message, storage storage.Writer) error {
36 header := newHeader(CurrentVersion).getBytes()
37 if _, err := storage.Write(header); err != nil {
38 return err
39 }
40
41 var gzipHandle *gzip.Writer
42 var encoder *cbor.Encoder
43 gzipHandle = gzip.NewWriter(storage)
44 encoder = cbor.NewEncoder(gzipHandle, cbor.EncOptions{})
45
46 startTime := int64(0)
47 var ip = ""
48 var country = "XX"
49 var username *string
50 for {
51 msg, ok := <-messages
52 if !ok {
53 break
54 }
55 if startTime == 0 {
56 startTime = msg.Timestamp
57 }
58 ip, country, username = e.storeMetadata(msg, storage, startTime, ip, country, username)
59 if err := encoder.Encode(&msg); err != nil {
60 return fmt.Errorf("failed to encode audit log message (%w)", err)
61 }
62 _ = gzipHandle.Flush()
63 if msg.MessageType == message.TypeDisconnect {
64 break
65 }
66 }
67 if err := gzipHandle.Flush(); err != nil {
68 return fmt.Errorf("failed to flush audit log gzip stream (%w)", err)
69 }
70 if err := storage.Close(); err != nil {
71 return fmt.Errorf("failed to close audit log gzip stream (%w)", err)
72 }
73 return nil
74}
75
76func (e *encoder) storeMetadata(
77 msg message.Message,

Callers

nothing calls this directly

Calls 7

storeMetadataMethod · 0.95
EncodeMethod · 0.95
newHeaderFunction · 0.85
getBytesMethod · 0.80
WriteMethod · 0.65
ErrorfMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected