blob: 6e48faca36b2bc6869298598cc9526a5880b7fdb [file] [log] [blame]
David Reiss7f42bcf2008-01-11 20:59:12 +00001//
2// TProtocol.cs
3//
4// Begin: Aug 19, 2007
David Reiss0c90f6f2008-02-06 22:18:40 +00005// Authors:
David Reiss7f42bcf2008-01-11 20:59:12 +00006// Todd Berman <tberman@imeem.com>
7//
8// Distributed under the Thrift Software License
9//
10// See accompanying file LICENSE or visit the Thrift site at:
11// http://developers.facebook.com/thrift/using
12
13using System;
David Reiss7f42bcf2008-01-11 20:59:12 +000014using System.Text;
15using Thrift.Transport;
16
17namespace Thrift.Protocol
18{
19 public abstract class TProtocol
20 {
21 protected TTransport trans;
22
23 protected TProtocol(TTransport trans)
24 {
25 this.trans = trans;
26 }
27
28 public TTransport Transport
29 {
30 get { return trans; }
31 }
32
33 public abstract void WriteMessageBegin(TMessage message);
34 public abstract void WriteMessageEnd();
35 public abstract void WriteStructBegin(TStruct struc);
36 public abstract void WriteStructEnd();
37 public abstract void WriteFieldBegin(TField field);
38 public abstract void WriteFieldEnd();
39 public abstract void WriteFieldStop();
40 public abstract void WriteMapBegin(TMap map);
41 public abstract void WriteMapEnd();
42 public abstract void WriteListBegin(TList list);
43 public abstract void WriteListEnd();
44 public abstract void WriteSetBegin(TSet set);
45 public abstract void WriteSetEnd();
46 public abstract void WriteBool(bool b);
47 public abstract void WriteByte(byte b);
48 public abstract void WriteI16(short i16);
49 public abstract void WriteI32(int i32);
50 public abstract void WriteI64(long i64);
51 public abstract void WriteDouble(double d);
David Reisscba57272008-02-06 22:09:44 +000052 public void WriteString(string s) {
53 WriteBinary(Encoding.UTF8.GetBytes(s));
54 }
55 public abstract void WriteBinary(byte[] b);
David Reiss7f42bcf2008-01-11 20:59:12 +000056
57 public abstract TMessage ReadMessageBegin();
58 public abstract void ReadMessageEnd();
59 public abstract TStruct ReadStructBegin();
60 public abstract void ReadStructEnd();
61 public abstract TField ReadFieldBegin();
62 public abstract void ReadFieldEnd();
63 public abstract TMap ReadMapBegin();
64 public abstract void ReadMapEnd();
65 public abstract TList ReadListBegin();
66 public abstract void ReadListEnd();
67 public abstract TSet ReadSetBegin();
68 public abstract void ReadSetEnd();
69 public abstract bool ReadBool();
70 public abstract byte ReadByte();
71 public abstract short ReadI16();
72 public abstract int ReadI32();
73 public abstract long ReadI64();
74 public abstract double ReadDouble();
David Reisscba57272008-02-06 22:09:44 +000075 public string ReadString() {
76 return Encoding.UTF8.GetString(ReadBinary());
77 }
78 public abstract byte[] ReadBinary();
David Reiss7f42bcf2008-01-11 20:59:12 +000079 }
80}