]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/thrift/lib/netcore/Thrift/TBaseClient.cs
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / thrift / lib / netcore / Thrift / TBaseClient.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.Threading;
20using System.Threading.Tasks;
21using Thrift.Protocols;
22
23namespace Thrift
24{
25 // ReSharper disable once InconsistentNaming
26 /// <summary>
27 /// TBaseClient.
28 /// Base client for generated clients.
29 /// Do not change this class without checking generated code (namings, etc.)
30 /// </summary>
31 public abstract class TBaseClient
32 {
33 private readonly TProtocol _inputProtocol;
34 private readonly TProtocol _outputProtocol;
35 private bool _isDisposed;
36 private int _seqId;
37 public readonly Guid ClientId = Guid.NewGuid();
38
39 protected TBaseClient(TProtocol inputProtocol, TProtocol outputProtocol)
40 {
41 _inputProtocol = inputProtocol ?? throw new ArgumentNullException(nameof(inputProtocol));
42 _outputProtocol = outputProtocol ?? throw new ArgumentNullException(nameof(outputProtocol));
43 }
44
45 public TProtocol InputProtocol => _inputProtocol;
46
47 public TProtocol OutputProtocol => _outputProtocol;
48
49 public int SeqId
50 {
51 get { return ++_seqId; }
52 }
53
54 public virtual async Task OpenTransportAsync()
55 {
56 await OpenTransportAsync(CancellationToken.None);
57 }
58
59 public virtual async Task OpenTransportAsync(CancellationToken cancellationToken)
60 {
61 if (!_inputProtocol.Transport.IsOpen)
62 {
63 await _inputProtocol.Transport.OpenAsync(cancellationToken);
64 }
65
66 if (!_inputProtocol.Transport.IsOpen)
67 {
68 await _outputProtocol.Transport.OpenAsync(cancellationToken);
69 }
70 }
71
72 public void Dispose()
73 {
74 Dispose(true);
75 }
76
77 protected virtual void Dispose(bool disposing)
78 {
79 if (!_isDisposed)
80 {
81 if (disposing)
82 {
83 _inputProtocol?.Dispose();
84 _outputProtocol?.Dispose();
85 }
86 }
87
88 _isDisposed = true;
89 }
90 }
91}