|
30 | 30 | //--------------------------------------------------------------------------- |
31 | 31 |
|
32 | 32 | using System.Collections.Generic; |
| 33 | + |
33 | 34 | using RabbitMQ.Client.client.framing; |
34 | | -using RabbitMQ.Client.client.impl; |
35 | 35 | using RabbitMQ.Client.Impl; |
36 | 36 |
|
37 | 37 | namespace RabbitMQ.Client.Framing.Impl |
@@ -297,113 +297,115 @@ public override void TxSelect() |
297 | 297 |
|
298 | 298 | protected override bool DispatchAsynchronous(in IncomingCommand cmd) |
299 | 299 | { |
300 | | - switch (cmd.CommandId) |
| 300 | + int classType = (int)cmd.CommandId >> 16; |
| 301 | + int methodType = (int)cmd.CommandId & 0x00FF; |
| 302 | + return classType switch |
301 | 303 | { |
302 | | - case ProtocolCommandId.BasicDeliver: |
303 | | - { |
304 | | - HandleBasicDeliver(in cmd); |
305 | | - return true; |
306 | | - } |
307 | | - case ProtocolCommandId.BasicAck: |
308 | | - { |
309 | | - HandleBasicAck(in cmd); |
310 | | - return true; |
311 | | - } |
312 | | - case ProtocolCommandId.BasicCancel: |
313 | | - { |
314 | | - HandleBasicCancel(in cmd); |
| 304 | + ClassConstants.Basic => DispatchBasicCommand(in cmd, methodType), |
| 305 | + ClassConstants.Channel => DispatchChannelCommand(in cmd, methodType), |
| 306 | + ClassConstants.Connection => DispatchConnectionCommand(in cmd, methodType), |
| 307 | + ClassConstants.Queue => DispatchQueueCommand(in cmd, methodType), |
| 308 | + _ => false, |
| 309 | + }; |
| 310 | + } |
| 311 | + |
| 312 | + private bool DispatchQueueCommand(in IncomingCommand cmd, int methodType) |
| 313 | + { |
| 314 | + switch (methodType) |
| 315 | + { |
| 316 | + case QueueMethodConstants.DeclareOk: |
| 317 | + HandleQueueDeclareOk(in cmd); |
315 | 318 | return true; |
316 | | - } |
317 | | - case ProtocolCommandId.BasicCancelOk: |
318 | | - { |
319 | | - HandleBasicCancelOk(in cmd); |
| 319 | + default: |
| 320 | + return false; |
| 321 | + } |
| 322 | + } |
| 323 | + |
| 324 | + private bool DispatchConnectionCommand(in IncomingCommand cmd, int methodType) |
| 325 | + { |
| 326 | + switch (methodType) |
| 327 | + { |
| 328 | + case ConnectionMethodConstants.Start: |
| 329 | + HandleConnectionStart(in cmd); |
320 | 330 | return true; |
321 | | - } |
322 | | - case ProtocolCommandId.BasicConsumeOk: |
323 | | - { |
324 | | - HandleBasicConsumeOk(in cmd); |
| 331 | + case ConnectionMethodConstants.Secure: |
| 332 | + HandleConnectionSecure(in cmd); |
325 | 333 | return true; |
326 | | - } |
327 | | - case ProtocolCommandId.BasicGetEmpty: |
328 | | - { |
329 | | - cmd.ReturnMethodBuffer(); |
330 | | - HandleBasicGetEmpty(); |
| 334 | + case ConnectionMethodConstants.Tune: |
| 335 | + HandleConnectionTune(in cmd); |
331 | 336 | return true; |
332 | | - } |
333 | | - case ProtocolCommandId.BasicGetOk: |
334 | | - { |
335 | | - HandleBasicGetOk(in cmd); |
| 337 | + case ConnectionMethodConstants.Close: |
| 338 | + HandleConnectionClose(in cmd); |
336 | 339 | return true; |
337 | | - } |
338 | | - case ProtocolCommandId.BasicNack: |
339 | | - { |
340 | | - HandleBasicNack(in cmd); |
| 340 | + case ConnectionMethodConstants.Blocked: |
| 341 | + HandleConnectionBlocked(in cmd); |
341 | 342 | return true; |
342 | | - } |
343 | | - case ProtocolCommandId.BasicRecoverOk: |
344 | | - { |
| 343 | + case ConnectionMethodConstants.Unblocked: |
345 | 344 | cmd.ReturnMethodBuffer(); |
346 | | - HandleBasicRecoverOk(); |
| 345 | + HandleConnectionUnblocked(); |
347 | 346 | return true; |
348 | | - } |
349 | | - case ProtocolCommandId.BasicReturn: |
350 | | - { |
351 | | - HandleBasicReturn(in cmd); |
| 347 | + default: |
| 348 | + return false; |
| 349 | + } |
| 350 | + } |
| 351 | + |
| 352 | + private bool DispatchChannelCommand(in IncomingCommand cmd, int methodType) |
| 353 | + { |
| 354 | + switch (methodType) |
| 355 | + { |
| 356 | + case ChannelMethodConstants.Flow: |
| 357 | + HandleChannelFlow(in cmd); |
352 | 358 | return true; |
353 | | - } |
354 | | - case ProtocolCommandId.ChannelClose: |
355 | | - { |
| 359 | + case ChannelMethodConstants.Close: |
356 | 360 | HandleChannelClose(in cmd); |
357 | 361 | return true; |
358 | | - } |
359 | | - case ProtocolCommandId.ChannelCloseOk: |
360 | | - { |
| 362 | + case ChannelMethodConstants.CloseOk: |
361 | 363 | cmd.ReturnMethodBuffer(); |
362 | 364 | HandleChannelCloseOk(); |
363 | 365 | return true; |
364 | | - } |
365 | | - case ProtocolCommandId.ChannelFlow: |
366 | | - { |
367 | | - HandleChannelFlow(in cmd); |
| 366 | + default: |
| 367 | + return false; |
| 368 | + } |
| 369 | + } |
| 370 | + |
| 371 | + private bool DispatchBasicCommand(in IncomingCommand cmd, int methodType) |
| 372 | + { |
| 373 | + switch (methodType) |
| 374 | + { |
| 375 | + case BasicMethodConstants.ConsumeOk: |
| 376 | + HandleBasicConsumeOk(in cmd); |
368 | 377 | return true; |
369 | | - } |
370 | | - case ProtocolCommandId.ConnectionBlocked: |
371 | | - { |
372 | | - HandleConnectionBlocked(in cmd); |
| 378 | + case BasicMethodConstants.Cancel: |
| 379 | + HandleBasicCancel(in cmd); |
373 | 380 | return true; |
374 | | - } |
375 | | - case ProtocolCommandId.ConnectionClose: |
376 | | - { |
377 | | - HandleConnectionClose(in cmd); |
| 381 | + case BasicMethodConstants.CancelOk: |
| 382 | + HandleBasicCancelOk(in cmd); |
378 | 383 | return true; |
379 | | - } |
380 | | - case ProtocolCommandId.ConnectionSecure: |
381 | | - { |
382 | | - HandleConnectionSecure(in cmd); |
| 384 | + case BasicMethodConstants.Return: |
| 385 | + HandleBasicReturn(in cmd); |
383 | 386 | return true; |
384 | | - } |
385 | | - case ProtocolCommandId.ConnectionStart: |
386 | | - { |
387 | | - HandleConnectionStart(in cmd); |
| 387 | + case BasicMethodConstants.Deliver: |
| 388 | + HandleBasicDeliver(in cmd); |
388 | 389 | return true; |
389 | | - } |
390 | | - case ProtocolCommandId.ConnectionTune: |
391 | | - { |
392 | | - HandleConnectionTune(in cmd); |
| 390 | + case BasicMethodConstants.GetOk: |
| 391 | + HandleBasicGetOk(in cmd); |
393 | 392 | return true; |
394 | | - } |
395 | | - case ProtocolCommandId.ConnectionUnblocked: |
396 | | - { |
| 393 | + case BasicMethodConstants.GetEmpty: |
397 | 394 | cmd.ReturnMethodBuffer(); |
398 | | - HandleConnectionUnblocked(); |
| 395 | + HandleBasicGetEmpty(); |
399 | 396 | return true; |
400 | | - } |
401 | | - case ProtocolCommandId.QueueDeclareOk: |
402 | | - { |
403 | | - HandleQueueDeclareOk(in cmd); |
| 397 | + case BasicMethodConstants.Ack: |
| 398 | + HandleBasicAck(in cmd); |
| 399 | + return true; |
| 400 | + case BasicMethodConstants.RecoverOk: |
| 401 | + cmd.ReturnMethodBuffer(); |
| 402 | + HandleBasicRecoverOk(); |
| 403 | + return true; |
| 404 | + case BasicMethodConstants.Nack: |
| 405 | + HandleBasicNack(in cmd); |
404 | 406 | return true; |
405 | | - } |
406 | | - default: return false; |
| 407 | + default: |
| 408 | + return false; |
407 | 409 | } |
408 | 410 | } |
409 | 411 | } |
|
0 commit comments