|  | " | 
|  | Licensed to the Apache Software Foundation (ASF) under one | 
|  | or more contributor license agreements. See the NOTICE file | 
|  | distributed with this work for additional information | 
|  | regarding copyright ownership. The ASF licenses this file | 
|  | to you under the Apache License, Version 2.0 (the | 
|  | License); you may not use this file except in compliance | 
|  | with the License. You may obtain a copy of the License at | 
|  |  | 
|  | http://www.apache.org/licenses/LICENSE-2.0 | 
|  |  | 
|  | Unless required by applicable law or agreed to in writing, | 
|  | software distributed under the License is distributed on an | 
|  | AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | KIND, either express or implied. See the License for the | 
|  | specific language governing permissions and limitations | 
|  | under the License. | 
|  |  | 
|  | Contains some contributions under the Thrift Software License. | 
|  | Please see doc/old-thrift-license.txt in the Thrift distribution for | 
|  | details. | 
|  | " | 
|  |  | 
|  | SystemOrganization addCategory: #Thrift! | 
|  | SystemOrganization addCategory: #'Thrift-Protocol'! | 
|  | SystemOrganization addCategory: #'Thrift-Transport'! | 
|  |  | 
|  | Error subclass: #TError | 
|  | instanceVariableNames: 'code' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift'! | 
|  |  | 
|  | !TError class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:28'! | 
|  | signalWithCode: anInteger | 
|  | self new code: anInteger; signal! ! | 
|  |  | 
|  | !TError methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:28'! | 
|  | code | 
|  | ^ code! ! | 
|  |  | 
|  | !TError methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:28'! | 
|  | code: anInteger | 
|  | code := anInteger! ! | 
|  |  | 
|  | TError subclass: #TProtocolError | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TProtocolError class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 18:39'! | 
|  | badVersion | 
|  | ^ 4! ! | 
|  |  | 
|  | !TProtocolError class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 18:39'! | 
|  | invalidData | 
|  | ^ 1! ! | 
|  |  | 
|  | !TProtocolError class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 18:39'! | 
|  | negativeSize | 
|  | ^ 2! ! | 
|  |  | 
|  | !TProtocolError class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 18:40'! | 
|  | sizeLimit | 
|  | ^ 3! ! | 
|  |  | 
|  | !TProtocolError class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 18:40'! | 
|  | unknown | 
|  | ^ 0! ! | 
|  |  | 
|  | TError subclass: #TTransportError | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Transport'! | 
|  |  | 
|  | TTransportError subclass: #TTransportClosedError | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Transport'! | 
|  |  | 
|  | Object subclass: #TClient | 
|  | instanceVariableNames: 'iprot oprot seqid remoteSeqid' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift'! | 
|  |  | 
|  | !TClient class methodsFor: 'as yet unclassified' stamp: 'pc 11/7/2007 06:00'! | 
|  | binaryOnHost: aString port: anInteger | 
|  | | sock | | 
|  | sock := TSocket new host: aString; port: anInteger; open; yourself. | 
|  | ^ self new | 
|  | inProtocol: (TBinaryProtocol new transport: sock); | 
|  | yourself! ! | 
|  |  | 
|  | !TClient methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 23:03'! | 
|  | inProtocol: aProtocol | 
|  | iprot := aProtocol. | 
|  | oprot ifNil: [oprot := aProtocol]! ! | 
|  |  | 
|  | !TClient methodsFor: 'as yet unclassified' stamp: 'pc 10/26/2007 04:28'! | 
|  | nextSeqid | 
|  | ^ seqid | 
|  | ifNil: [seqid := 0] | 
|  | ifNotNil: [seqid := seqid + 1]! ! | 
|  |  | 
|  | !TClient methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:51'! | 
|  | outProtocol: aProtocol | 
|  | oprot := aProtocol! ! | 
|  |  | 
|  | !TClient methodsFor: 'as yet unclassified' stamp: 'pc 10/28/2007 15:32'! | 
|  | validateRemoteMessage: aMsg | 
|  | remoteSeqid | 
|  | ifNil: [remoteSeqid := aMsg seqid] | 
|  | ifNotNil: | 
|  | [(remoteSeqid + 1) = aMsg seqid ifFalse: | 
|  | [TProtocolError signal: 'Bad seqid: ', aMsg seqid asString, | 
|  | '; wanted: ', remoteSeqid asString]. | 
|  | remoteSeqid := aMsg seqid]! ! | 
|  |  | 
|  | Object subclass: #TField | 
|  | instanceVariableNames: 'name type id' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TField methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:05'! | 
|  | id | 
|  | ^ id ifNil: [0]! ! | 
|  |  | 
|  | !TField methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:44'! | 
|  | id: anInteger | 
|  | id := anInteger! ! | 
|  |  | 
|  | !TField methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:04'! | 
|  | name | 
|  | ^ name ifNil: ['']! ! | 
|  |  | 
|  | !TField methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:44'! | 
|  | name: anObject | 
|  | name := anObject! ! | 
|  |  | 
|  | !TField methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:05'! | 
|  | type | 
|  | ^ type ifNil: [TType stop]! ! | 
|  |  | 
|  | !TField methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:44'! | 
|  | type: anInteger | 
|  | type := anInteger! ! | 
|  |  | 
|  | Object subclass: #TMessage | 
|  | instanceVariableNames: 'name seqid type' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | TMessage subclass: #TCallMessage | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TCallMessage methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:53'! | 
|  | type | 
|  | ^ 1! ! | 
|  |  | 
|  | !TMessage methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:05'! | 
|  | name | 
|  | ^ name ifNil: ['']! ! | 
|  |  | 
|  | !TMessage methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:35'! | 
|  | name: aString | 
|  | name := aString! ! | 
|  |  | 
|  | !TMessage methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:05'! | 
|  | seqid | 
|  | ^ seqid ifNil: [0]! ! | 
|  |  | 
|  | !TMessage methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:35'! | 
|  | seqid: anInteger | 
|  | seqid := anInteger! ! | 
|  |  | 
|  | !TMessage methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:06'! | 
|  | type | 
|  | ^ type ifNil: [0]! ! | 
|  |  | 
|  | !TMessage methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:35'! | 
|  | type: anInteger | 
|  | type := anInteger! ! | 
|  |  | 
|  | Object subclass: #TProtocol | 
|  | instanceVariableNames: 'transport' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | TProtocol subclass: #TBinaryProtocol | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 11/1/2007 04:24'! | 
|  | intFromByteArray: buf | 
|  | | vals | | 
|  | vals := Array new: buf size. | 
|  | 1 to: buf size do: [:n | vals at: n put: ((buf at: n) bitShift: (buf size - n) * 8)]. | 
|  | ^ vals sum! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 18:46'! | 
|  | readBool | 
|  | ^ self readByte isZero not! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/25/2007 00:02'! | 
|  | readByte | 
|  | ^ (self transport read: 1) first! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/28/2007 16:24'! | 
|  | readDouble | 
|  | | val | | 
|  | val := Float new: 2. | 
|  | ^ val basicAt: 1 put: (self readRawInt: 4); | 
|  | basicAt: 2 put: (self readRawInt: 4); | 
|  | yourself! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 20:02'! | 
|  | readFieldBegin | 
|  | | field | | 
|  | field := TField new type: self readByte. | 
|  |  | 
|  | ^ field type = TType stop | 
|  | ifTrue: [field] | 
|  | ifFalse: [field id: self readI16; yourself]! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:15'! | 
|  | readI16 | 
|  | ^ self readInt: 2! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:20'! | 
|  | readI32 | 
|  | ^ self readInt: 4! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:20'! | 
|  | readI64 | 
|  | ^ self readInt: 8! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 11/1/2007 02:35'! | 
|  | readInt: size | 
|  | | buf val | | 
|  | buf := transport read: size. | 
|  | val := self intFromByteArray: buf. | 
|  | ^ buf first > 16r7F | 
|  | ifTrue: [self unsignedInt: val size: size] | 
|  | ifFalse: [val]! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:57'! | 
|  | readListBegin | 
|  | ^ TList new | 
|  | elemType: self readByte; | 
|  | size: self readI32! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:58'! | 
|  | readMapBegin | 
|  | ^ TMap new | 
|  | keyType: self readByte; | 
|  | valueType: self readByte; | 
|  | size: self readI32! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 11/1/2007 04:22'! | 
|  | readMessageBegin | 
|  | | version | | 
|  | version := self readI32. | 
|  |  | 
|  | (version bitAnd: self versionMask) = self version1 | 
|  | ifFalse: [TProtocolError signalWithCode: TProtocolError badVersion]. | 
|  |  | 
|  | ^ TMessage new | 
|  | type: (version bitAnd: 16r000000FF); | 
|  | name: self readString; | 
|  | seqid: self readI32! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 10/28/2007 16:24'! | 
|  | readRawInt: size | 
|  | ^ self intFromByteArray: (transport read: size)! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 11/1/2007 00:59'! | 
|  | readSetBegin | 
|  | "element type, size" | 
|  | ^ TSet new | 
|  | elemType: self readByte; | 
|  | size: self readI32! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 02/07/2009 19:00'! | 
|  | readString | 
|  | | sz | | 
|  | sz := self readI32. | 
|  | ^ sz > 0 ifTrue: [(transport read: sz) asString] ifFalse: ['']! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'reading' stamp: 'pc 11/1/2007 04:22'! | 
|  | unsignedInt: val size: size | 
|  | ^ 0 - ((val - 1) bitXor: ((2 raisedTo: (size * 8)) - 1))! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:13'! | 
|  | version1 | 
|  | ^ 16r80010000 ! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 18:01'! | 
|  | versionMask | 
|  | ^ 16rFFFF0000! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 18:35'! | 
|  | write: aString | 
|  | transport write: aString! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:23'! | 
|  | writeBool: bool | 
|  | bool ifTrue: [self writeByte: 1] | 
|  | ifFalse: [self writeByte: 0]! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/26/2007 09:31'! | 
|  | writeByte: aNumber | 
|  | aNumber > 16rFF ifTrue: [TError signal: 'writeByte too big']. | 
|  | transport write: (Array with: aNumber)! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/28/2007 16:16'! | 
|  | writeDouble: aDouble | 
|  | self writeI32: (aDouble basicAt: 1); | 
|  | writeI32: (aDouble basicAt: 2)! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:56'! | 
|  | writeField: aField | 
|  | self writeByte: aField type; | 
|  | writeI16: aField id! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/25/2007 00:01'! | 
|  | writeFieldBegin: aField | 
|  | self writeByte: aField type. | 
|  | self writeI16: aField id! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 18:04'! | 
|  | writeFieldStop | 
|  | self writeByte: TType stop! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 11/1/2007 02:06'! | 
|  | writeI16: i16 | 
|  | self writeInt: i16 size: 2! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 11/1/2007 02:06'! | 
|  | writeI32: i32 | 
|  | self writeInt: i32 size: 4! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 11/1/2007 02:06'! | 
|  | writeI64: i64 | 
|  | self writeInt: i64 size: 8! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 11/1/2007 04:23'! | 
|  | writeInt: val size: size | 
|  | 1 to: size do: [:n | self writeByte: ((val bitShift: (size negated + n) * 8) bitAnd: 16rFF)]! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 11/1/2007 00:48'! | 
|  | writeListBegin: aList | 
|  | self writeByte: aList elemType; writeI32: aList size! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:55'! | 
|  | writeMapBegin: aMap | 
|  | self writeByte: aMap keyType; | 
|  | writeByte: aMap valueType; | 
|  | writeI32: aMap size! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 20:36'! | 
|  | writeMessageBegin: msg | 
|  | self writeI32: (self version1 bitOr: msg type); | 
|  | writeString: msg name; | 
|  | writeI32: msg seqid! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 11/1/2007 00:56'! | 
|  | writeSetBegin: aSet | 
|  | self writeByte: aSet elemType; writeI32: aSet size! ! | 
|  |  | 
|  | !TBinaryProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 18:35'! | 
|  | writeString: aString | 
|  | self writeI32: aString size; | 
|  | write: aString! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readBool! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readByte! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readDouble! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readFieldBegin! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readFieldEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readI16! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readI32! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readI64! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readListBegin! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readListEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readMapBegin! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readMapEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:39'! | 
|  | readMessageBegin! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:39'! | 
|  | readMessageEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readSetBegin! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readSetEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/25/2007 16:10'! | 
|  | readSimpleType: aType | 
|  | aType = TType bool ifTrue: [^ self readBool]. | 
|  | aType = TType byte ifTrue: [^ self readByte]. | 
|  | aType = TType double ifTrue: [^ self readDouble]. | 
|  | aType = TType i16 ifTrue: [^ self readI16]. | 
|  | aType = TType i32 ifTrue: [^ self readI32]. | 
|  | aType = TType i64 ifTrue: [^ self readI64]. | 
|  | aType = TType list ifTrue: [^ self readBool].! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readString! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readStructBegin | 
|  | ! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/24/2007 19:40'! | 
|  | readStructEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'reading' stamp: 'pc 10/26/2007 21:34'! | 
|  | skip: aType | 
|  | aType = TType stop ifTrue: [^ self]. | 
|  | aType = TType bool ifTrue: [^ self readBool]. | 
|  | aType = TType byte ifTrue: [^ self readByte]. | 
|  | aType = TType i16 ifTrue: [^ self readI16]. | 
|  | aType = TType i32 ifTrue: [^ self readI32]. | 
|  | aType = TType i64 ifTrue: [^ self readI64]. | 
|  | aType = TType string ifTrue: [^ self readString]. | 
|  | aType = TType double ifTrue: [^ self readDouble]. | 
|  | aType = TType struct ifTrue: | 
|  | [| field | | 
|  | self readStructBegin. | 
|  | [(field := self readFieldBegin) type = TType stop] whileFalse: | 
|  | [self skip: field type. self readFieldEnd]. | 
|  | ^ self readStructEnd]. | 
|  | aType = TType map ifTrue: | 
|  | [| map | | 
|  | map := self readMapBegin. | 
|  | map size timesRepeat: [self skip: map keyType. self skip: map valueType]. | 
|  | ^ self readMapEnd]. | 
|  | aType = TType list ifTrue: | 
|  | [| list | | 
|  | list := self readListBegin. | 
|  | list size timesRepeat: [self skip: list elemType]. | 
|  | ^ self readListEnd]. | 
|  | aType = TType set ifTrue: | 
|  | [| set | | 
|  | set := self readSetBegin. | 
|  | set size timesRepeat: [self skip: set elemType]. | 
|  | ^ self readSetEnd]. | 
|  |  | 
|  | self error: 'Unknown type'! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 23:02'! | 
|  | transport | 
|  | ^ transport! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:28'! | 
|  | transport: aTransport | 
|  | transport := aTransport! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeBool: aBool! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeByte: aByte! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:38'! | 
|  | writeDouble: aFloat! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:38'! | 
|  | writeFieldBegin: aField! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeFieldEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeFieldStop! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeI16: i16! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeI32: i32! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeI64: i64! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:39'! | 
|  | writeListBegin: aList! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeListEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:39'! | 
|  | writeMapBegin: aMap! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeMapEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:36'! | 
|  | writeMessageBegin! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:36'! | 
|  | writeMessageEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:39'! | 
|  | writeSetBegin: aSet! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeSetEnd! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:38'! | 
|  | writeString: aString! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:38'! | 
|  | writeStructBegin: aStruct! ! | 
|  |  | 
|  | !TProtocol methodsFor: 'writing' stamp: 'pc 10/24/2007 19:37'! | 
|  | writeStructEnd! ! | 
|  |  | 
|  | Object subclass: #TResult | 
|  | instanceVariableNames: 'success oprot iprot exception' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift'! | 
|  |  | 
|  | !TResult methodsFor: 'as yet unclassified' stamp: 'pc 10/26/2007 21:35'! | 
|  | exception | 
|  | ^ exception! ! | 
|  |  | 
|  | !TResult methodsFor: 'as yet unclassified' stamp: 'pc 10/26/2007 21:35'! | 
|  | exception: anError | 
|  | exception := anError! ! | 
|  |  | 
|  | !TResult methodsFor: 'as yet unclassified' stamp: 'pc 10/26/2007 14:43'! | 
|  | success | 
|  | ^ success! ! | 
|  |  | 
|  | !TResult methodsFor: 'as yet unclassified' stamp: 'pc 10/26/2007 14:43'! | 
|  | success: anObject | 
|  | success := anObject! ! | 
|  |  | 
|  | Object subclass: #TSizedObject | 
|  | instanceVariableNames: 'size' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | TSizedObject subclass: #TList | 
|  | instanceVariableNames: 'elemType' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TList methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:04'! | 
|  | elemType | 
|  | ^ elemType ifNil: [TType stop]! ! | 
|  |  | 
|  | !TList methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:42'! | 
|  | elemType: anInteger | 
|  | elemType := anInteger! ! | 
|  |  | 
|  | TList subclass: #TSet | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | TSizedObject subclass: #TMap | 
|  | instanceVariableNames: 'keyType valueType' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TMap methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:04'! | 
|  | keyType | 
|  | ^ keyType ifNil: [TType stop]! ! | 
|  |  | 
|  | !TMap methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:45'! | 
|  | keyType: anInteger | 
|  | keyType := anInteger! ! | 
|  |  | 
|  | !TMap methodsFor: 'accessing' stamp: 'pc 10/24/2007 20:04'! | 
|  | valueType | 
|  | ^ valueType ifNil: [TType stop]! ! | 
|  |  | 
|  | !TMap methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:45'! | 
|  | valueType: anInteger | 
|  | valueType := anInteger! ! | 
|  |  | 
|  | !TSizedObject methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 20:03'! | 
|  | size | 
|  | ^ size ifNil: [0]! ! | 
|  |  | 
|  | !TSizedObject methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 20:06'! | 
|  | size: anInteger | 
|  | size := anInteger! ! | 
|  |  | 
|  | Object subclass: #TSocket | 
|  | instanceVariableNames: 'host port stream' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Transport'! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:34'! | 
|  | close | 
|  | self isOpen ifTrue: [stream close]! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:23'! | 
|  | connect | 
|  | ^ (self socketStream openConnectionToHost: | 
|  | (NetNameResolver addressForName: host) port: port) | 
|  | timeout: 180; | 
|  | binary; | 
|  | yourself! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 20:35'! | 
|  | flush | 
|  | stream flush! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:08'! | 
|  | host: aString | 
|  | host := aString! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 20:34'! | 
|  | isOpen | 
|  | ^ stream isNil not | 
|  | and: [stream socket isConnected] | 
|  | and: [stream socket isOtherEndClosed not]! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:22'! | 
|  | open | 
|  | stream := self connect! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:09'! | 
|  | port: anInteger | 
|  | port := anInteger! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:17'! | 
|  | read: size | 
|  | | data | | 
|  | [data := stream next: size. | 
|  | data isEmpty ifTrue: [TTransportError signal: 'Could not read ', size asString, ' bytes']. | 
|  | ^ data] | 
|  | on: ConnectionClosed | 
|  | do: [TTransportClosedError signal]! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:18'! | 
|  | socketStream | 
|  | ^ Smalltalk at: #FastSocketStream ifAbsent: [SocketStream] ! ! | 
|  |  | 
|  | !TSocket methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 22:17'! | 
|  | write: aCollection | 
|  | [stream nextPutAll: aCollection] | 
|  | on: ConnectionClosed | 
|  | do: [TTransportClosedError signal]! ! | 
|  |  | 
|  | Object subclass: #TStruct | 
|  | instanceVariableNames: 'name' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Protocol'! | 
|  |  | 
|  | !TStruct methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:47'! | 
|  | name | 
|  | ^ name! ! | 
|  |  | 
|  | !TStruct methodsFor: 'accessing' stamp: 'pc 10/24/2007 19:47'! | 
|  | name: aString | 
|  | name := aString! ! | 
|  |  | 
|  | Object subclass: #TTransport | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift-Transport'! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:18'! | 
|  | close | 
|  | self subclassResponsibility! ! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:22'! | 
|  | flush | 
|  | self subclassResponsibility! ! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:18'! | 
|  | isOpen | 
|  | self subclassResponsibility! ! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:18'! | 
|  | open | 
|  | self subclassResponsibility! ! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:18'! | 
|  | read: anInteger | 
|  | self subclassResponsibility! ! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:22'! | 
|  | readAll: anInteger | 
|  | ^ String streamContents: [:str | | 
|  | [str size < anInteger] whileTrue: | 
|  | [str nextPutAll: (self read: anInteger - str size)]]! ! | 
|  |  | 
|  | !TTransport methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:22'! | 
|  | write: aString | 
|  | self subclassResponsibility! ! | 
|  |  | 
|  | Object subclass: #TType | 
|  | instanceVariableNames: '' | 
|  | classVariableNames: '' | 
|  | poolDictionaries: '' | 
|  | category: 'Thrift'! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'! | 
|  | bool | 
|  | ^ 2! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'! | 
|  | byte | 
|  | ^ 3! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/25/2007 15:55'! | 
|  | codeOf: aTypeName | 
|  | self typeMap do: [:each | each first = aTypeName ifTrue: [^ each second]]. | 
|  | ^ nil! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'! | 
|  | double | 
|  | ^ 4! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | i16 | 
|  | ^ 6! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | i32 | 
|  | ^ 8! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | i64 | 
|  | ^ 10! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | list | 
|  | ^ 15! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | map | 
|  | ^ 13! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/25/2007 15:56'! | 
|  | nameOf: aTypeCode | 
|  | self typeMap do: [:each | each second = aTypeCode ifTrue: [^ each first]]. | 
|  | ^ nil! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | set | 
|  | ^ 14! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'! | 
|  | stop | 
|  | ^ 0! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | string | 
|  | ^ 11! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:04'! | 
|  | struct | 
|  | ^ 12! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/25/2007 15:51'! | 
|  | typeMap | 
|  | ^ #((bool 2) (byte 3) (double 4) (i16 6) (i32 8) (i64 10) (list 15) | 
|  | (map 13) (set 15) (stop 0) (string 11) (struct 12) (void 1))! ! | 
|  |  | 
|  | !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'! | 
|  | void | 
|  | ^ 1! ! |