]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/netstd/Thrift/Protocol/TProtocol.cs
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / netstd / Thrift / Protocol / TProtocol.cs
CommitLineData
f67539c2
TL
1// Licensed to the Apache Software Foundation(ASF) under one
2// or more contributor license agreements.See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership.The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License. You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied. See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18using System;
19using System.Text;
20using System.Threading;
21using System.Threading.Tasks;
22using Thrift.Protocol.Entities;
23using Thrift.Transport;
24
25namespace Thrift.Protocol
26{
27 // ReSharper disable once InconsistentNaming
28 public abstract class TProtocol : IDisposable
29 {
30 public const int DefaultRecursionDepth = 64;
31 private bool _isDisposed;
32 protected int RecursionDepth;
33
34 protected TTransport Trans;
35
36 protected TProtocol(TTransport trans)
37 {
38 Trans = trans;
39 RecursionLimit = DefaultRecursionDepth;
40 RecursionDepth = 0;
41 }
42
43 public TTransport Transport => Trans;
44
45 protected int RecursionLimit { get; set; }
46
47 public void Dispose()
48 {
49 Dispose(true);
50 }
51
52 public void IncrementRecursionDepth()
53 {
54 if (RecursionDepth < RecursionLimit)
55 {
56 ++RecursionDepth;
57 }
58 else
59 {
60 throw new TProtocolException(TProtocolException.DEPTH_LIMIT, "Depth limit exceeded");
61 }
62 }
63
64 public void DecrementRecursionDepth()
65 {
66 --RecursionDepth;
67 }
68
69 protected virtual void Dispose(bool disposing)
70 {
71 if (!_isDisposed)
72 {
73 if (disposing)
74 {
75 (Trans as IDisposable)?.Dispose();
76 }
77 }
78 _isDisposed = true;
79 }
80
81 public virtual async Task WriteMessageBeginAsync(TMessage message)
82 {
83 await WriteMessageBeginAsync(message, CancellationToken.None);
84 }
85
86 public abstract Task WriteMessageBeginAsync(TMessage message, CancellationToken cancellationToken);
87
88 public virtual async Task WriteMessageEndAsync()
89 {
90 await WriteMessageEndAsync(CancellationToken.None);
91 }
92
93 public abstract Task WriteMessageEndAsync(CancellationToken cancellationToken);
94
95 public virtual async Task WriteStructBeginAsync(TStruct @struct)
96 {
97 await WriteStructBeginAsync(@struct, CancellationToken.None);
98 }
99
100 public abstract Task WriteStructBeginAsync(TStruct @struct, CancellationToken cancellationToken);
101
102 public virtual async Task WriteStructEndAsync()
103 {
104 await WriteStructEndAsync(CancellationToken.None);
105 }
106
107 public abstract Task WriteStructEndAsync(CancellationToken cancellationToken);
108
109 public virtual async Task WriteFieldBeginAsync(TField field)
110 {
111 await WriteFieldBeginAsync(field, CancellationToken.None);
112 }
113
114 public abstract Task WriteFieldBeginAsync(TField field, CancellationToken cancellationToken);
115
116 public virtual async Task WriteFieldEndAsync()
117 {
118 await WriteFieldEndAsync(CancellationToken.None);
119 }
120
121 public abstract Task WriteFieldEndAsync(CancellationToken cancellationToken);
122
123 public virtual async Task WriteFieldStopAsync()
124 {
125 await WriteFieldStopAsync(CancellationToken.None);
126 }
127
128 public abstract Task WriteFieldStopAsync(CancellationToken cancellationToken);
129
130 public virtual async Task WriteMapBeginAsync(TMap map)
131 {
132 await WriteMapBeginAsync(map, CancellationToken.None);
133 }
134
135 public abstract Task WriteMapBeginAsync(TMap map, CancellationToken cancellationToken);
136
137 public virtual async Task WriteMapEndAsync()
138 {
139 await WriteMapEndAsync(CancellationToken.None);
140 }
141
142 public abstract Task WriteMapEndAsync(CancellationToken cancellationToken);
143
144 public virtual async Task WriteListBeginAsync(TList list)
145 {
146 await WriteListBeginAsync(list, CancellationToken.None);
147 }
148
149 public abstract Task WriteListBeginAsync(TList list, CancellationToken cancellationToken);
150
151 public virtual async Task WriteListEndAsync()
152 {
153 await WriteListEndAsync(CancellationToken.None);
154 }
155
156 public abstract Task WriteListEndAsync(CancellationToken cancellationToken);
157
158 public virtual async Task WriteSetBeginAsync(TSet set)
159 {
160 await WriteSetBeginAsync(set, CancellationToken.None);
161 }
162
163 public abstract Task WriteSetBeginAsync(TSet set, CancellationToken cancellationToken);
164
165 public virtual async Task WriteSetEndAsync()
166 {
167 await WriteSetEndAsync(CancellationToken.None);
168 }
169
170 public abstract Task WriteSetEndAsync(CancellationToken cancellationToken);
171
172 public virtual async Task WriteBoolAsync(bool b)
173 {
174 await WriteBoolAsync(b, CancellationToken.None);
175 }
176
177 public abstract Task WriteBoolAsync(bool b, CancellationToken cancellationToken);
178
179 public virtual async Task WriteByteAsync(sbyte b)
180 {
181 await WriteByteAsync(b, CancellationToken.None);
182 }
183
184 public abstract Task WriteByteAsync(sbyte b, CancellationToken cancellationToken);
185
186 public virtual async Task WriteI16Async(short i16)
187 {
188 await WriteI16Async(i16, CancellationToken.None);
189 }
190
191 public abstract Task WriteI16Async(short i16, CancellationToken cancellationToken);
192
193 public virtual async Task WriteI32Async(int i32)
194 {
195 await WriteI32Async(i32, CancellationToken.None);
196 }
197
198 public abstract Task WriteI32Async(int i32, CancellationToken cancellationToken);
199
200 public virtual async Task WriteI64Async(long i64)
201 {
202 await WriteI64Async(i64, CancellationToken.None);
203 }
204
205 public abstract Task WriteI64Async(long i64, CancellationToken cancellationToken);
206
207 public virtual async Task WriteDoubleAsync(double d)
208 {
209 await WriteDoubleAsync(d, CancellationToken.None);
210 }
211
212 public abstract Task WriteDoubleAsync(double d, CancellationToken cancellationToken);
213
214 public virtual async Task WriteStringAsync(string s)
215 {
216 await WriteStringAsync(s, CancellationToken.None);
217 }
218
219 public virtual async Task WriteStringAsync(string s, CancellationToken cancellationToken)
220 {
221 var bytes = Encoding.UTF8.GetBytes(s);
222 await WriteBinaryAsync(bytes, cancellationToken);
223 }
224
225 public virtual async Task WriteBinaryAsync(byte[] bytes)
226 {
227 await WriteBinaryAsync(bytes, CancellationToken.None);
228 }
229
230 public abstract Task WriteBinaryAsync(byte[] bytes, CancellationToken cancellationToken);
231
232 public virtual async ValueTask<TMessage> ReadMessageBeginAsync()
233 {
234 return await ReadMessageBeginAsync(CancellationToken.None);
235 }
236
237 public abstract ValueTask<TMessage> ReadMessageBeginAsync(CancellationToken cancellationToken);
238
239 public virtual async Task ReadMessageEndAsync()
240 {
241 await ReadMessageEndAsync(CancellationToken.None);
242 }
243
244 public abstract Task ReadMessageEndAsync(CancellationToken cancellationToken);
245
246 public virtual async ValueTask<TStruct> ReadStructBeginAsync()
247 {
248 return await ReadStructBeginAsync(CancellationToken.None);
249 }
250
251 public abstract ValueTask<TStruct> ReadStructBeginAsync(CancellationToken cancellationToken);
252
253 public virtual async Task ReadStructEndAsync()
254 {
255 await ReadStructEndAsync(CancellationToken.None);
256 }
257
258 public abstract Task ReadStructEndAsync(CancellationToken cancellationToken);
259
260 public virtual async ValueTask<TField> ReadFieldBeginAsync()
261 {
262 return await ReadFieldBeginAsync(CancellationToken.None);
263 }
264
265 public abstract ValueTask<TField> ReadFieldBeginAsync(CancellationToken cancellationToken);
266
267 public virtual async Task ReadFieldEndAsync()
268 {
269 await ReadFieldEndAsync(CancellationToken.None);
270 }
271
272 public abstract Task ReadFieldEndAsync(CancellationToken cancellationToken);
273
274 public virtual async ValueTask<TMap> ReadMapBeginAsync()
275 {
276 return await ReadMapBeginAsync(CancellationToken.None);
277 }
278
279 public abstract ValueTask<TMap> ReadMapBeginAsync(CancellationToken cancellationToken);
280
281 public virtual async Task ReadMapEndAsync()
282 {
283 await ReadMapEndAsync(CancellationToken.None);
284 }
285
286 public abstract Task ReadMapEndAsync(CancellationToken cancellationToken);
287
288 public virtual async ValueTask<TList> ReadListBeginAsync()
289 {
290 return await ReadListBeginAsync(CancellationToken.None);
291 }
292
293 public abstract ValueTask<TList> ReadListBeginAsync(CancellationToken cancellationToken);
294
295 public virtual async Task ReadListEndAsync()
296 {
297 await ReadListEndAsync(CancellationToken.None);
298 }
299
300 public abstract Task ReadListEndAsync(CancellationToken cancellationToken);
301
302 public virtual async ValueTask<TSet> ReadSetBeginAsync()
303 {
304 return await ReadSetBeginAsync(CancellationToken.None);
305 }
306
307 public abstract ValueTask<TSet> ReadSetBeginAsync(CancellationToken cancellationToken);
308
309 public virtual async Task ReadSetEndAsync()
310 {
311 await ReadSetEndAsync(CancellationToken.None);
312 }
313
314 public abstract Task ReadSetEndAsync(CancellationToken cancellationToken);
315
316 public virtual async ValueTask<bool> ReadBoolAsync()
317 {
318 return await ReadBoolAsync(CancellationToken.None);
319 }
320
321 public abstract ValueTask<bool> ReadBoolAsync(CancellationToken cancellationToken);
322
323 public virtual async ValueTask<sbyte> ReadByteAsync()
324 {
325 return await ReadByteAsync(CancellationToken.None);
326 }
327
328 public abstract ValueTask<sbyte> ReadByteAsync(CancellationToken cancellationToken);
329
330 public virtual async ValueTask<short> ReadI16Async()
331 {
332 return await ReadI16Async(CancellationToken.None);
333 }
334
335 public abstract ValueTask<short> ReadI16Async(CancellationToken cancellationToken);
336
337 public virtual async ValueTask<int> ReadI32Async()
338 {
339 return await ReadI32Async(CancellationToken.None);
340 }
341
342 public abstract ValueTask<int> ReadI32Async(CancellationToken cancellationToken);
343
344 public virtual async ValueTask<long> ReadI64Async()
345 {
346 return await ReadI64Async(CancellationToken.None);
347 }
348
349 public abstract ValueTask<long> ReadI64Async(CancellationToken cancellationToken);
350
351 public virtual async ValueTask<double> ReadDoubleAsync()
352 {
353 return await ReadDoubleAsync(CancellationToken.None);
354 }
355
356 public abstract ValueTask<double> ReadDoubleAsync(CancellationToken cancellationToken);
357
358 public virtual async ValueTask<string> ReadStringAsync()
359 {
360 return await ReadStringAsync(CancellationToken.None);
361 }
362
363 public virtual async ValueTask<string> ReadStringAsync(CancellationToken cancellationToken)
364 {
365 var buf = await ReadBinaryAsync(cancellationToken);
366 return Encoding.UTF8.GetString(buf, 0, buf.Length);
367 }
368
369 public virtual async ValueTask<byte[]> ReadBinaryAsync()
370 {
371 return await ReadBinaryAsync(CancellationToken.None);
372 }
373
374 public abstract ValueTask<byte[]> ReadBinaryAsync(CancellationToken cancellationToken);
375 }
376}