|
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