MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / handleWriteCache

Method handleWriteCache

internal/nodes/api_stream.go:165–220  ·  view source on GitHub ↗

写入缓存

(message *pb.NodeStreamMessage)

Source from the content-addressed store, hash-verified

163
164// 写入缓存
165func (this *APIStream) handleWriteCache(message *pb.NodeStreamMessage) error {
166 msg := &messageconfigs.WriteCacheMessage{}
167 err := json.Unmarshal(message.DataJSON, msg)
168 if err != nil {
169 this.replyFail(message.RequestId, "decode message data failed: "+err.Error())
170 return err
171 }
172
173 storage, shouldStop, err := this.cacheStorage(message, msg.CachePolicyJSON)
174 if err != nil {
175 return err
176 }
177 if shouldStop {
178 defer func() {
179 storage.Stop()
180 }()
181 }
182
183 expiredAt := time.Now().Unix() + msg.LifeSeconds
184 writer, err := storage.OpenWriter(msg.Key, expiredAt, 200, -1, int64(len(msg.Value)), -1, false)
185 if err != nil {
186 this.replyFail(message.RequestId, "prepare writing failed: "+err.Error())
187 return err
188 }
189
190 // 写入一个空的Header
191 _, err = writer.WriteHeader([]byte(":"))
192 if err != nil {
193 this.replyFail(message.RequestId, "write failed: "+err.Error())
194 return err
195 }
196
197 // 写入数据
198 _, err = writer.Write(msg.Value)
199 if err != nil {
200 this.replyFail(message.RequestId, "write failed: "+err.Error())
201 return err
202 }
203
204 err = writer.Close()
205 if err != nil {
206 this.replyFail(message.RequestId, "write failed: "+err.Error())
207 return err
208 }
209 storage.AddToList(&caches.Item{
210 Type: writer.ItemType(),
211 Key: msg.Key,
212 ExpiresAt: expiredAt,
213 HeaderSize: writer.HeaderSize(),
214 BodySize: writer.BodySize(),
215 })
216
217 this.replyOk(message.RequestId, "write ok")
218
219 return nil
220}
221
222// 读取缓存

Callers 1

loopMethod · 0.95

Calls 14

replyFailMethod · 0.95
cacheStorageMethod · 0.95
replyOkMethod · 0.95
UnixMethod · 0.80
StopMethod · 0.65
OpenWriterMethod · 0.65
WriteHeaderMethod · 0.65
WriteMethod · 0.65
CloseMethod · 0.65
AddToListMethod · 0.65
ItemTypeMethod · 0.65
HeaderSizeMethod · 0.65

Tested by

no test coverage detected