2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
19 * Contains some contributions under the Thrift Software License.
20 * Please see doc/old-thrift-license.txt in the Thrift distribution for
26 using Thrift.Transport;
27 using System.Collections.Generic;
29 namespace Thrift.Protocol
32 /// <see cref="TProtocolDecorator"/> forwards all requests to an enclosed <see cref="TProtocol"/> instance,
33 /// providing a way to author concise concrete decorator subclasses. While it has
34 /// no abstract methods, it is marked abstract as a reminder that by itself,
35 /// it does not modify the behaviour of the enclosed <see cref="TProtocol"/>.
37 /// See p.175 of Design Patterns (by Gamma et al.)
39 /// <seealso cref="TMultiplexedProtocol"/>
40 public abstract class TProtocolDecorator : TProtocol
42 private TProtocol WrappedProtocol;
45 /// Encloses the specified protocol.
47 /// <param name="protocol">All operations will be forward to this protocol. Must be non-null.</param>
48 public TProtocolDecorator(TProtocol protocol)
49 : base(protocol.Transport)
52 WrappedProtocol = protocol;
55 public override void WriteMessageBegin(TMessage tMessage)
57 WrappedProtocol.WriteMessageBegin(tMessage);
60 public override void WriteMessageEnd()
62 WrappedProtocol.WriteMessageEnd();
65 public override void WriteStructBegin(TStruct tStruct)
67 WrappedProtocol.WriteStructBegin(tStruct);
70 public override void WriteStructEnd()
72 WrappedProtocol.WriteStructEnd();
75 public override void WriteFieldBegin(TField tField)
77 WrappedProtocol.WriteFieldBegin(tField);
80 public override void WriteFieldEnd()
82 WrappedProtocol.WriteFieldEnd();
85 public override void WriteFieldStop()
87 WrappedProtocol.WriteFieldStop();
90 public override void WriteMapBegin(TMap tMap)
92 WrappedProtocol.WriteMapBegin(tMap);
95 public override void WriteMapEnd()
97 WrappedProtocol.WriteMapEnd();
100 public override void WriteListBegin(TList tList)
102 WrappedProtocol.WriteListBegin(tList);
105 public override void WriteListEnd()
107 WrappedProtocol.WriteListEnd();
110 public override void WriteSetBegin(TSet tSet)
112 WrappedProtocol.WriteSetBegin(tSet);
115 public override void WriteSetEnd()
117 WrappedProtocol.WriteSetEnd();
120 public override void WriteBool(bool b)
122 WrappedProtocol.WriteBool(b);
125 public override void WriteByte(sbyte b)
127 WrappedProtocol.WriteByte(b);
130 public override void WriteI16(short i)
132 WrappedProtocol.WriteI16(i);
135 public override void WriteI32(int i)
137 WrappedProtocol.WriteI32(i);
140 public override void WriteI64(long l)
142 WrappedProtocol.WriteI64(l);
145 public override void WriteDouble(double v)
147 WrappedProtocol.WriteDouble(v);
150 public override void WriteString(string s)
152 WrappedProtocol.WriteString(s);
155 public override void WriteBinary(byte[] bytes)
157 WrappedProtocol.WriteBinary(bytes);
160 public override TMessage ReadMessageBegin()
162 return WrappedProtocol.ReadMessageBegin();
165 public override void ReadMessageEnd()
167 WrappedProtocol.ReadMessageEnd();
170 public override TStruct ReadStructBegin()
172 return WrappedProtocol.ReadStructBegin();
175 public override void ReadStructEnd()
177 WrappedProtocol.ReadStructEnd();
180 public override TField ReadFieldBegin()
182 return WrappedProtocol.ReadFieldBegin();
185 public override void ReadFieldEnd()
187 WrappedProtocol.ReadFieldEnd();
190 public override TMap ReadMapBegin()
192 return WrappedProtocol.ReadMapBegin();
195 public override void ReadMapEnd()
197 WrappedProtocol.ReadMapEnd();
200 public override TList ReadListBegin()
202 return WrappedProtocol.ReadListBegin();
205 public override void ReadListEnd()
207 WrappedProtocol.ReadListEnd();
210 public override TSet ReadSetBegin()
212 return WrappedProtocol.ReadSetBegin();
215 public override void ReadSetEnd()
217 WrappedProtocol.ReadSetEnd();
220 public override bool ReadBool()
222 return WrappedProtocol.ReadBool();
225 public override sbyte ReadByte()
227 return WrappedProtocol.ReadByte();
230 public override short ReadI16()
232 return WrappedProtocol.ReadI16();
235 public override int ReadI32()
237 return WrappedProtocol.ReadI32();
240 public override long ReadI64()
242 return WrappedProtocol.ReadI64();
245 public override double ReadDouble()
247 return WrappedProtocol.ReadDouble();
250 public override string ReadString()
252 return WrappedProtocol.ReadString();
255 public override byte[] ReadBinary()
257 return WrappedProtocol.ReadBinary();