MCPcopy Create free account
hub / github.com/pydio/cells / SetNodeInfo

Method SetNodeInfo

data/key/grpc/handler.go:183–270  ·  view source on GitHub ↗
(stream encryption.NodeKeyManager_SetNodeInfoServer)

Source from the content-addressed store, hash-verified

181}
182
183func (km *NodeKeyManagerHandler) SetNodeInfo(stream encryption.NodeKeyManager_SetNodeInfoServer) error {
184
185 ctx := context.WithoutCancel(stream.Context())
186
187 dao, err := manager.Resolve[key.DAO](ctx)
188 if err != nil {
189 return err
190 }
191
192 var rangedBlocks *encryption.RangedBlock
193 var nodeUuid string
194 received := make(map[string]int64, 4)
195
196 for {
197
198 req, rErr := stream.Recv()
199 if rErr != nil {
200 if rErr != io.EOF {
201 log.Logger(ctx).Error("data.key.handler.SetNodeInfo: failed to read SetInfoRequest", zap.Error(rErr))
202 }
203 break
204 }
205 log.Logger(ctx).Debug("Key Stream Received " + req.GetAction().String())
206 received[req.Action.String()]++
207
208 switch req.Action {
209
210 case encryption.SetNodeInfoActionType_KEY:
211
212 if err = km.saveNodeKey(ctx, req.SetNodeKey.NodeKey); err != nil {
213 log.Logger(ctx).Error("failed to save key", zap.Error(err))
214 }
215
216 case encryption.SetNodeInfoActionType_CLEAR:
217
218 if err = dao.ClearNodeEncryptedBlockInfo(ctx, req.SetBlock.NodeUuid); err != nil {
219 log.Logger(ctx).Error("failed to clear old blocks", zap.Error(err))
220 return err
221 }
222
223 if err = dao.UpgradeNodeVersion(ctx, req.SetBlock.NodeUuid); err != nil {
224 log.Logger(ctx).Error("failed to upgrade node version", zap.Error(err))
225 return err
226 }
227
228 case encryption.SetNodeInfoActionType_BLOCK:
229 if nodeUuid == "" {
230 nodeUuid = req.SetBlock.NodeUuid
231 }
232
233 tmpRangeBlock := &encryption.RangedBlock{
234 BlockSize: req.SetBlock.Block.BlockSize,
235 OwnerId: req.SetBlock.Block.OwnerId,
236 HeaderSize: req.SetBlock.Block.HeaderSize,
237 PartId: req.SetBlock.Block.PartId,
238 }
239
240 if rangedBlocks == nil {

Callers

nothing calls this directly

Calls 13

saveNodeKeyMethod · 0.95
LoggerFunction · 0.92
makeFunction · 0.85
ContextMethod · 0.65
RecvMethod · 0.65
ErrorMethod · 0.65
DebugMethod · 0.65
StringMethod · 0.65
UpgradeNodeVersionMethod · 0.65
SendAndCloseMethod · 0.65

Tested by

no test coverage detected