| " | 
 | 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! ! |