@@ -83,61 +83,65 @@ internal ConsumerDispatcherChannelBase(Impl.Channel channel, ushort concurrency)
83
83
84
84
public ushort Concurrency => _concurrency ;
85
85
86
- public ValueTask HandleBasicConsumeOkAsync ( IAsyncBasicConsumer consumer , string consumerTag , CancellationToken cancellationToken )
86
+ public async ValueTask HandleBasicConsumeOkAsync ( IAsyncBasicConsumer consumer , string consumerTag , CancellationToken cancellationToken )
87
87
{
88
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
89
+
88
90
if ( false == _disposed && false == _quiesce )
89
91
{
90
- AddConsumer ( consumer , consumerTag ) ;
91
- WorkStruct work = WorkStruct . CreateConsumeOk ( consumer , consumerTag ) ;
92
- return _writer . WriteAsync ( work , cancellationToken ) ;
93
- }
94
- else
95
- {
96
- return default ;
92
+ try
93
+ {
94
+ AddConsumer ( consumer , consumerTag ) ;
95
+ WorkStruct work = WorkStruct . CreateConsumeOk ( consumer , consumerTag ) ;
96
+ await _writer . WriteAsync ( work , cancellationToken )
97
+ . ConfigureAwait ( false ) ;
98
+ }
99
+ catch
100
+ {
101
+ _ = GetAndRemoveConsumer ( consumerTag ) ;
102
+ throw ;
103
+ }
97
104
}
98
105
}
99
106
100
- public ValueTask HandleBasicDeliverAsync ( string consumerTag , ulong deliveryTag , bool redelivered ,
107
+ public async ValueTask HandleBasicDeliverAsync ( string consumerTag , ulong deliveryTag , bool redelivered ,
101
108
string exchange , string routingKey , IReadOnlyBasicProperties basicProperties , RentedMemory body ,
102
109
CancellationToken cancellationToken )
103
110
{
111
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
112
+
104
113
if ( false == _disposed && false == _quiesce )
105
114
{
106
115
IAsyncBasicConsumer consumer = GetConsumerOrDefault ( consumerTag ) ;
107
116
var work = WorkStruct . CreateDeliver ( consumer , consumerTag , deliveryTag , redelivered , exchange , routingKey , basicProperties , body ) ;
108
- return _writer . WriteAsync ( work , cancellationToken ) ;
109
- }
110
- else
111
- {
112
- return default ;
117
+ await _writer . WriteAsync ( work , cancellationToken )
118
+ . ConfigureAwait ( false ) ;
113
119
}
114
120
}
115
121
116
- public ValueTask HandleBasicCancelOkAsync ( string consumerTag , CancellationToken cancellationToken )
122
+ public async ValueTask HandleBasicCancelOkAsync ( string consumerTag , CancellationToken cancellationToken )
117
123
{
124
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
125
+
118
126
if ( false == _disposed && false == _quiesce )
119
127
{
120
128
IAsyncBasicConsumer consumer = GetAndRemoveConsumer ( consumerTag ) ;
121
129
WorkStruct work = WorkStruct . CreateCancelOk ( consumer , consumerTag ) ;
122
- return _writer . WriteAsync ( work , cancellationToken ) ;
123
- }
124
- else
125
- {
126
- return default ;
130
+ await _writer . WriteAsync ( work , cancellationToken )
131
+ . ConfigureAwait ( false ) ;
127
132
}
128
133
}
129
134
130
- public ValueTask HandleBasicCancelAsync ( string consumerTag , CancellationToken cancellationToken )
135
+ public async ValueTask HandleBasicCancelAsync ( string consumerTag , CancellationToken cancellationToken )
131
136
{
137
+ cancellationToken . ThrowIfCancellationRequested ( ) ;
138
+
132
139
if ( false == _disposed && false == _quiesce )
133
140
{
134
141
IAsyncBasicConsumer consumer = GetAndRemoveConsumer ( consumerTag ) ;
135
142
WorkStruct work = WorkStruct . CreateCancel ( consumer , consumerTag ) ;
136
- return _writer . WriteAsync ( work , cancellationToken ) ;
137
- }
138
- else
139
- {
140
- return default ;
143
+ await _writer . WriteAsync ( work , cancellationToken )
144
+ . ConfigureAwait ( false ) ;
141
145
}
142
146
}
143
147
0 commit comments