(stream encryption.NodeKeyManager_SetNodeInfoServer)
| 181 | } |
| 182 | |
| 183 | func (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 { |
nothing calls this directly
no test coverage detected