MCPcopy Create free account
hub / github.com/brimdata/super / DecodeObject

Function DecodeObject

db/commits/object.go:113–142  ·  view source on GitHub ↗
(r io.Reader)

Source from the content-addressed store, hash-verified

111}
112
113func DecodeObject(r io.Reader) (*Object, error) {
114 o := &Object{}
115 reader := bsupbytes.NewDeserializer(r, ActionTypes)
116 defer reader.Close()
117 for {
118 entry, err := reader.Read()
119 if err != nil {
120 return nil, err
121 }
122 if entry == nil {
123 break
124 }
125 action, ok := entry.(Action)
126 if !ok {
127 return nil, badObject(entry)
128 }
129 o.append(action)
130 }
131 // Fill in the commit and parent IDs from the first record,
132 // which must always be a Commit action.
133 if len(o.Actions) > 0 {
134 first, ok := o.Actions[0].(*Commit)
135 if !ok {
136 return nil, ErrBadCommitObject
137 }
138 o.Commit = first.ID
139 o.Parent = first.Parent
140 }
141 return o, nil
142}
143
144func badObject(entry any) error {
145 return fmt.Errorf("internal error: corrupt commit object has unknown entry type %T", entry)

Callers 1

GetMethod · 0.85

Calls 5

CloseMethod · 0.95
ReadMethod · 0.95
appendMethod · 0.95
NewDeserializerFunction · 0.92
badObjectFunction · 0.85

Tested by

no test coverage detected