├── .gitattributes
├── .gitignore
├── LICENSE.txt
├── README.md
├── history
├── 0.1.2
│ ├── tatala-client-csharp
│ │ ├── cfg
│ │ │ └── controller.xml
│ │ ├── src
│ │ │ ├── Example
│ │ │ │ └── Tatala
│ │ │ │ │ ├── client
│ │ │ │ │ ├── ChatRoomClient.cs
│ │ │ │ │ └── TestClient.cs
│ │ │ │ │ ├── model
│ │ │ │ │ ├── AllTypeBean.cs
│ │ │ │ │ └── TestAccount.cs
│ │ │ │ │ └── proxy
│ │ │ │ │ ├── ChatRoomClientDefaultProxy.cs
│ │ │ │ │ ├── ChatRoomClientProxy.cs
│ │ │ │ │ ├── TestClientProxy.cs
│ │ │ │ │ └── wrapper
│ │ │ │ │ ├── AllTypeBeanWrapper.cs
│ │ │ │ │ └── TestAccountWrapper.cs
│ │ │ └── QiLeYuan
│ │ │ │ ├── Tatala
│ │ │ │ ├── executor
│ │ │ │ │ ├── LocalTarget.cs
│ │ │ │ │ ├── ServerExecutor.cs
│ │ │ │ │ ├── ServerTarget.cs
│ │ │ │ │ └── SocketServerTarget.cs
│ │ │ │ ├── proxy
│ │ │ │ │ └── DefaultProxy.cs
│ │ │ │ ├── socket
│ │ │ │ │ ├── client
│ │ │ │ │ │ ├── Future.cs
│ │ │ │ │ │ ├── LongClientSession.cs
│ │ │ │ │ │ ├── ShortClientSession.cs
│ │ │ │ │ │ ├── SocketConnection.cs
│ │ │ │ │ │ └── SocketController.cs
│ │ │ │ │ ├── io
│ │ │ │ │ │ ├── TransferInputStream.cs
│ │ │ │ │ │ └── TransferOutputStream.cs
│ │ │ │ │ ├── to
│ │ │ │ │ │ ├── NewTransferObject.cs
│ │ │ │ │ │ ├── StandardTransferObject.cs
│ │ │ │ │ │ ├── TransferObject.cs
│ │ │ │ │ │ ├── TransferObjectFactory.cs
│ │ │ │ │ │ ├── TransferObjectWrapper.cs
│ │ │ │ │ │ └── helper
│ │ │ │ │ │ │ ├── BooleanMapHelper.cs
│ │ │ │ │ │ │ ├── ByteArrayMapHelper.cs
│ │ │ │ │ │ │ ├── ByteMapHelper.cs
│ │ │ │ │ │ │ ├── CharMapHelper.cs
│ │ │ │ │ │ │ ├── DateMapHelper.cs
│ │ │ │ │ │ │ ├── DoubleArrayMapHelper.cs
│ │ │ │ │ │ │ ├── DoubleMapHelper.cs
│ │ │ │ │ │ │ ├── FloatArrayMapHelper.cs
│ │ │ │ │ │ │ ├── FloatMapHelper.cs
│ │ │ │ │ │ │ ├── IntArrayMapHelper.cs
│ │ │ │ │ │ │ ├── IntMapHelper.cs
│ │ │ │ │ │ │ ├── LongArrayMapHelper.cs
│ │ │ │ │ │ │ ├── LongMapHelper.cs
│ │ │ │ │ │ │ ├── ShortMapHelper.cs
│ │ │ │ │ │ │ ├── StringArrayMapHelper.cs
│ │ │ │ │ │ │ ├── StringMapHelper.cs
│ │ │ │ │ │ │ └── WrapperMapHelper.cs
│ │ │ │ │ └── util
│ │ │ │ │ │ └── TransferUtil.cs
│ │ │ │ └── util
│ │ │ │ │ └── BlockingQueue.cs
│ │ │ │ └── Tools
│ │ │ │ ├── ICSharpCode
│ │ │ │ └── SharpZipLib
│ │ │ │ │ ├── Checksums
│ │ │ │ │ ├── Adler32.cs
│ │ │ │ │ ├── CRC32.cs
│ │ │ │ │ ├── IChecksum.cs
│ │ │ │ │ └── StrangeCRC.cs
│ │ │ │ │ ├── Encryption
│ │ │ │ │ ├── PkzipClassic.cs
│ │ │ │ │ ├── ZipAESStream.cs
│ │ │ │ │ └── ZipAESTransform.cs
│ │ │ │ │ ├── Main.cs
│ │ │ │ │ ├── SharpZipBaseException.cs
│ │ │ │ │ └── Zip
│ │ │ │ │ ├── Compression
│ │ │ │ │ ├── Deflater.cs
│ │ │ │ │ ├── DeflaterConstants.cs
│ │ │ │ │ ├── DeflaterEngine.cs
│ │ │ │ │ ├── DeflaterHuffman.cs
│ │ │ │ │ ├── DeflaterPending.cs
│ │ │ │ │ ├── Inflater.cs
│ │ │ │ │ ├── InflaterDynHeader.cs
│ │ │ │ │ ├── InflaterHuffmanTree.cs
│ │ │ │ │ ├── PendingBuffer.cs
│ │ │ │ │ └── Streams
│ │ │ │ │ │ ├── DeflaterOutputStream.cs
│ │ │ │ │ │ ├── InflaterInputStream.cs
│ │ │ │ │ │ ├── OutputWindow.cs
│ │ │ │ │ │ └── StreamManipulator.cs
│ │ │ │ │ ├── ZipConstants.cs
│ │ │ │ │ ├── ZipEntry.cs
│ │ │ │ │ ├── ZipException.cs
│ │ │ │ │ ├── ZipExtraData.cs
│ │ │ │ │ └── ZipHelperStream.cs
│ │ │ │ └── Xstream
│ │ │ │ └── Core
│ │ │ │ ├── ConditionalConverter.cs
│ │ │ │ ├── ConversionException.cs
│ │ │ │ ├── Converters
│ │ │ │ ├── ArrayConverter.cs
│ │ │ │ ├── BooleanConverter.cs
│ │ │ │ ├── ByteConverter.cs
│ │ │ │ ├── CDataConverter.cs
│ │ │ │ ├── CharConverter.cs
│ │ │ │ ├── Complex
│ │ │ │ │ └── StringBuilderConverter.cs
│ │ │ │ ├── DateTimeConverter.cs
│ │ │ │ ├── DecimalConverter.cs
│ │ │ │ ├── DoubleConverter.cs
│ │ │ │ ├── EnumConverter.cs
│ │ │ │ ├── FloatConverter.cs
│ │ │ │ ├── GenericListConverter.cs
│ │ │ │ ├── GuidConverter.cs
│ │ │ │ ├── IntConverter.cs
│ │ │ │ ├── LongConverter.cs
│ │ │ │ ├── MethodInfoConverter.cs
│ │ │ │ ├── NoopConverter.cs
│ │ │ │ ├── NullConverter.cs
│ │ │ │ ├── ObjectConverter.cs
│ │ │ │ ├── PointerConverter.cs
│ │ │ │ ├── ShortConverter.cs
│ │ │ │ ├── StringConverter.cs
│ │ │ │ ├── TargetForceLoader.cs
│ │ │ │ ├── TimeSpanConverter.cs
│ │ │ │ └── TypeConverter.cs
│ │ │ │ ├── DynamicInstanceBuilder.cs
│ │ │ │ ├── FileXStream.cs
│ │ │ │ ├── IConverter.cs
│ │ │ │ ├── IMarshalContext.cs
│ │ │ │ ├── IXStream.cs
│ │ │ │ ├── IdFields.cs
│ │ │ │ ├── MarshalContext.cs
│ │ │ │ ├── NullType.cs
│ │ │ │ ├── ReferenceComparer.cs
│ │ │ │ ├── XStream.cs
│ │ │ │ ├── XStreamBase.cs
│ │ │ │ └── XStreamMarshaller.cs
│ │ └── tatala-client-csharp.csproj
│ ├── tatala-java-example
│ │ ├── build.xml
│ │ ├── cfg
│ │ │ ├── controller.xml
│ │ │ ├── log4j.xml
│ │ │ └── tatala.properties
│ │ ├── chatroom.bat
│ │ ├── chatroomserver.bat
│ │ ├── client.bat
│ │ ├── client2.bat
│ │ ├── dist
│ │ │ └── tatala-java-example.jar
│ │ ├── easyclient.bat
│ │ ├── lib
│ │ │ ├── log4j-1.2.13.jar
│ │ │ ├── tatala.jar
│ │ │ ├── xpp3_min-1.1.4c.jar
│ │ │ └── xstream-1.3.1.jar
│ │ ├── server.bat
│ │ └── src
│ │ │ └── com
│ │ │ └── qileyuan
│ │ │ └── tatala
│ │ │ └── example
│ │ │ ├── client
│ │ │ ├── ChatRoomClient.java
│ │ │ ├── EasyClient.java
│ │ │ ├── NewToClient.java
│ │ │ ├── TestClient.java
│ │ │ └── TestClient2.java
│ │ │ ├── model
│ │ │ ├── AllTypeBean.java
│ │ │ └── TestAccount.java
│ │ │ ├── proxy
│ │ │ ├── ChatRoomClientDefaultProxy.java
│ │ │ ├── ChatRoomClientProxy.java
│ │ │ ├── ChatRoomServerProxy.java
│ │ │ ├── NewToClientProxy.java
│ │ │ ├── NewToServerProxy.java
│ │ │ ├── TestClientProxy.java
│ │ │ ├── TestDefaultProxy.java
│ │ │ ├── TestServerProxy.java
│ │ │ └── wrapper
│ │ │ │ ├── AllTypeBeanWrapper.java
│ │ │ │ ├── TestAccountListWrapper.java
│ │ │ │ ├── TestAccountMapWrapper.java
│ │ │ │ └── TestAccountWrapper.java
│ │ │ └── service
│ │ │ ├── ChatRoomServer.java
│ │ │ ├── ChatRoomServerLogic.java
│ │ │ ├── TestManager.java
│ │ │ ├── TestManagerImpl.java
│ │ │ ├── TestReturnException.java
│ │ │ └── TestServer.java
│ └── tatala-java
│ │ ├── build.xml
│ │ ├── dist
│ │ └── tatala.jar
│ │ ├── lib
│ │ ├── log4j-1.2.13.jar
│ │ ├── xpp3_min-1.1.4c.jar
│ │ └── xstream-1.3.1.jar
│ │ └── src
│ │ └── com
│ │ └── qileyuan
│ │ └── tatala
│ │ ├── executor
│ │ ├── LocalTarget.java
│ │ ├── ServerExecutor.java
│ │ ├── ServerTarget.java
│ │ └── SocketServerTarget.java
│ │ ├── proxy
│ │ ├── ClientProxy.java
│ │ ├── ClientProxyFactory.java
│ │ ├── DefaultProxy.java
│ │ └── ServerProxy.java
│ │ ├── socket
│ │ ├── SocketExecuteException.java
│ │ ├── TatalaReturnException.java
│ │ ├── client
│ │ │ ├── AioClientReceiveHandler.java
│ │ │ ├── LongClientSession.java
│ │ │ ├── ShortClientSession.java
│ │ │ ├── SocketConnection.java
│ │ │ └── SocketController.java
│ │ ├── io
│ │ │ ├── TransferInputStream.java
│ │ │ └── TransferOutputStream.java
│ │ ├── server
│ │ │ ├── AioReceiveHandler.java
│ │ │ ├── AioSocketHandler.java
│ │ │ ├── AioSocketServer.java
│ │ │ ├── ServerSession.java
│ │ │ └── SessionFilter.java
│ │ ├── to
│ │ │ ├── NewTransferObject.java
│ │ │ ├── StandardTransferObject.java
│ │ │ ├── TransferObject.java
│ │ │ ├── TransferObjectFactory.java
│ │ │ ├── TransferObjectWrapper.java
│ │ │ └── helper
│ │ │ │ ├── BooleanMapHelper.java
│ │ │ │ ├── ByteArrayMapHelper.java
│ │ │ │ ├── ByteMapHelper.java
│ │ │ │ ├── CharMapHelper.java
│ │ │ │ ├── DateMapHelper.java
│ │ │ │ ├── DoubleArrayMapHelper.java
│ │ │ │ ├── DoubleMapHelper.java
│ │ │ │ ├── FloatArrayMapHelper.java
│ │ │ │ ├── FloatMapHelper.java
│ │ │ │ ├── IntArrayMapHelper.java
│ │ │ │ ├── IntMapHelper.java
│ │ │ │ ├── LongArrayMapHelper.java
│ │ │ │ ├── LongMapHelper.java
│ │ │ │ ├── SerializableMapHelper.java
│ │ │ │ ├── ShortMapHelper.java
│ │ │ │ ├── StringArrayMapHelper.java
│ │ │ │ ├── StringMapHelper.java
│ │ │ │ └── WrapperMapHelper.java
│ │ └── util
│ │ │ ├── NetworkUtil.java
│ │ │ └── TransferUtil.java
│ │ └── util
│ │ └── Configuration.java
└── 0.2.0
│ ├── tatala-client-csharp
│ ├── cfg
│ │ └── controller.xml
│ ├── src
│ │ ├── Example
│ │ │ └── Tatala
│ │ │ │ ├── client
│ │ │ │ ├── ChatRoomClient.cs
│ │ │ │ └── TestClient.cs
│ │ │ │ ├── model
│ │ │ │ ├── AllTypeBean.cs
│ │ │ │ └── TestAccount.cs
│ │ │ │ └── proxy
│ │ │ │ ├── ChatRoomClientDefaultProxy.cs
│ │ │ │ ├── ChatRoomClientProxy.cs
│ │ │ │ ├── TestClientProxy.cs
│ │ │ │ └── wrapper
│ │ │ │ ├── AllTypeBeanWrapper.cs
│ │ │ │ └── TestAccountWrapper.cs
│ │ └── QiLeYuan
│ │ │ ├── Tatala
│ │ │ ├── executor
│ │ │ │ ├── LocalTarget.cs
│ │ │ │ ├── ServerExecutor.cs
│ │ │ │ ├── ServerTarget.cs
│ │ │ │ └── SocketServerTarget.cs
│ │ │ ├── proxy
│ │ │ │ └── DefaultProxy.cs
│ │ │ ├── socket
│ │ │ │ ├── client
│ │ │ │ │ ├── Future.cs
│ │ │ │ │ ├── LongClientSession.cs
│ │ │ │ │ ├── ShortClientSession.cs
│ │ │ │ │ ├── SocketConnection.cs
│ │ │ │ │ └── SocketController.cs
│ │ │ │ ├── io
│ │ │ │ │ ├── TransferInputStream.cs
│ │ │ │ │ └── TransferOutputStream.cs
│ │ │ │ ├── to
│ │ │ │ │ ├── NewTransferObject.cs
│ │ │ │ │ ├── StandardTransferObject.cs
│ │ │ │ │ ├── TransferObject.cs
│ │ │ │ │ ├── TransferObjectFactory.cs
│ │ │ │ │ ├── TransferObjectWrapper.cs
│ │ │ │ │ └── helper
│ │ │ │ │ │ ├── BooleanMapHelper.cs
│ │ │ │ │ │ ├── ByteArrayMapHelper.cs
│ │ │ │ │ │ ├── ByteMapHelper.cs
│ │ │ │ │ │ ├── CharMapHelper.cs
│ │ │ │ │ │ ├── DateMapHelper.cs
│ │ │ │ │ │ ├── DoubleArrayMapHelper.cs
│ │ │ │ │ │ ├── DoubleMapHelper.cs
│ │ │ │ │ │ ├── FloatArrayMapHelper.cs
│ │ │ │ │ │ ├── FloatMapHelper.cs
│ │ │ │ │ │ ├── IntArrayMapHelper.cs
│ │ │ │ │ │ ├── IntMapHelper.cs
│ │ │ │ │ │ ├── LongArrayMapHelper.cs
│ │ │ │ │ │ ├── LongMapHelper.cs
│ │ │ │ │ │ ├── ShortMapHelper.cs
│ │ │ │ │ │ ├── StringArrayMapHelper.cs
│ │ │ │ │ │ ├── StringMapHelper.cs
│ │ │ │ │ │ └── WrapperMapHelper.cs
│ │ │ │ └── util
│ │ │ │ │ └── TransferUtil.cs
│ │ │ └── util
│ │ │ │ └── BlockingQueue.cs
│ │ │ └── Tools
│ │ │ ├── ICSharpCode
│ │ │ └── SharpZipLib
│ │ │ │ ├── Checksums
│ │ │ │ ├── Adler32.cs
│ │ │ │ ├── CRC32.cs
│ │ │ │ ├── IChecksum.cs
│ │ │ │ └── StrangeCRC.cs
│ │ │ │ ├── Encryption
│ │ │ │ ├── PkzipClassic.cs
│ │ │ │ ├── ZipAESStream.cs
│ │ │ │ └── ZipAESTransform.cs
│ │ │ │ ├── Main.cs
│ │ │ │ ├── SharpZipBaseException.cs
│ │ │ │ └── Zip
│ │ │ │ ├── Compression
│ │ │ │ ├── Deflater.cs
│ │ │ │ ├── DeflaterConstants.cs
│ │ │ │ ├── DeflaterEngine.cs
│ │ │ │ ├── DeflaterHuffman.cs
│ │ │ │ ├── DeflaterPending.cs
│ │ │ │ ├── Inflater.cs
│ │ │ │ ├── InflaterDynHeader.cs
│ │ │ │ ├── InflaterHuffmanTree.cs
│ │ │ │ ├── PendingBuffer.cs
│ │ │ │ └── Streams
│ │ │ │ │ ├── DeflaterOutputStream.cs
│ │ │ │ │ ├── InflaterInputStream.cs
│ │ │ │ │ ├── OutputWindow.cs
│ │ │ │ │ └── StreamManipulator.cs
│ │ │ │ ├── ZipConstants.cs
│ │ │ │ ├── ZipEntry.cs
│ │ │ │ ├── ZipException.cs
│ │ │ │ ├── ZipExtraData.cs
│ │ │ │ └── ZipHelperStream.cs
│ │ │ └── Xstream
│ │ │ └── Core
│ │ │ ├── ConditionalConverter.cs
│ │ │ ├── ConversionException.cs
│ │ │ ├── Converters
│ │ │ ├── ArrayConverter.cs
│ │ │ ├── BooleanConverter.cs
│ │ │ ├── ByteConverter.cs
│ │ │ ├── CDataConverter.cs
│ │ │ ├── CharConverter.cs
│ │ │ ├── Complex
│ │ │ │ └── StringBuilderConverter.cs
│ │ │ ├── DateTimeConverter.cs
│ │ │ ├── DecimalConverter.cs
│ │ │ ├── DoubleConverter.cs
│ │ │ ├── EnumConverter.cs
│ │ │ ├── FloatConverter.cs
│ │ │ ├── GenericListConverter.cs
│ │ │ ├── GuidConverter.cs
│ │ │ ├── IntConverter.cs
│ │ │ ├── LongConverter.cs
│ │ │ ├── MethodInfoConverter.cs
│ │ │ ├── NoopConverter.cs
│ │ │ ├── NullConverter.cs
│ │ │ ├── ObjectConverter.cs
│ │ │ ├── PointerConverter.cs
│ │ │ ├── ShortConverter.cs
│ │ │ ├── StringConverter.cs
│ │ │ ├── TargetForceLoader.cs
│ │ │ ├── TimeSpanConverter.cs
│ │ │ └── TypeConverter.cs
│ │ │ ├── DynamicInstanceBuilder.cs
│ │ │ ├── FileXStream.cs
│ │ │ ├── IConverter.cs
│ │ │ ├── IMarshalContext.cs
│ │ │ ├── IXStream.cs
│ │ │ ├── IdFields.cs
│ │ │ ├── MarshalContext.cs
│ │ │ ├── NullType.cs
│ │ │ ├── ReferenceComparer.cs
│ │ │ ├── XStream.cs
│ │ │ ├── XStreamBase.cs
│ │ │ └── XStreamMarshaller.cs
│ └── tatala-client-csharp.csproj
│ ├── tatala-java-example
│ ├── build.xml
│ ├── cfg
│ │ └── log4j.xml
│ ├── chatroom.bat
│ ├── chatroomserver.bat
│ ├── client.bat
│ ├── dist
│ │ └── tatala-java-example.jar
│ ├── easyclient.bat
│ ├── lib
│ │ ├── log4j-1.2.13.jar
│ │ ├── protobuf-java-2.6.1.jar
│ │ └── tatala.jar
│ ├── server.bat
│ └── src
│ │ └── com
│ │ └── qileyuan
│ │ └── tatala
│ │ └── example
│ │ ├── client
│ │ ├── ChatRoomClient.java
│ │ ├── EasyClient.java
│ │ ├── ExampleClient.java
│ │ └── PerformanceTestClient.java
│ │ ├── proxy
│ │ ├── ChatRoomClientDefaultProxy.java
│ │ ├── ChatRoomClientProxy.java
│ │ ├── ChatRoomServerProxy.java
│ │ ├── ExampleClientProxy.java
│ │ ├── ExampleDefaultProxy.java
│ │ └── ExampleServerProxy.java
│ │ ├── server
│ │ ├── ChatRoomServer.java
│ │ └── ExampleServer.java
│ │ └── service
│ │ ├── ChatRoomServerLogic.java
│ │ ├── ExampleManager.java
│ │ ├── ExampleManagerImpl.java
│ │ ├── ExampleReturnException.java
│ │ └── model
│ │ ├── Account.java
│ │ ├── AllTypeBean.java
│ │ ├── proto
│ │ ├── AccountProto.java
│ │ └── account.proto
│ │ └── wrapper
│ │ ├── AccountListWrapper.java
│ │ ├── AccountMapWrapper.java
│ │ ├── AccountWrapper.java
│ │ └── AllTypeBeanWrapper.java
│ └── tatala-java
│ ├── build.xml
│ ├── dist
│ └── tatala.jar
│ ├── lib
│ └── log4j-1.2.13.jar
│ └── src
│ └── com
│ └── qileyuan
│ └── tatala
│ ├── executor
│ └── ServerExecutor.java
│ ├── proxy
│ ├── ClientProxy.java
│ ├── ClientProxyFactory.java
│ ├── DefaultProxy.java
│ └── ServerProxy.java
│ └── socket
│ ├── client
│ ├── AioClientReceiveHandler.java
│ ├── LongClientSession.java
│ ├── SocketConnection.java
│ └── SocketController.java
│ ├── exception
│ ├── SocketExecuteException.java
│ └── TatalaRollbackException.java
│ ├── io
│ ├── TransferInputStream.java
│ └── TransferOutputStream.java
│ ├── server
│ ├── AioReceiveHandler.java
│ ├── AioSocketHandler.java
│ ├── AioSocketServer.java
│ ├── ServerSession.java
│ └── SessionFilter.java
│ ├── to
│ ├── OrderedTransferObject.java
│ ├── TransferObject.java
│ ├── TransferObjectFactory.java
│ └── TransferObjectWrapper.java
│ └── util
│ ├── NetworkUtil.java
│ └── TransferUtil.java
├── tatala-client-csharp
├── cfg
│ └── controller.xml
├── src
│ ├── Example
│ │ └── Tatala
│ │ │ ├── client
│ │ │ ├── ChatRoomClient.cs
│ │ │ └── TestClient.cs
│ │ │ ├── model
│ │ │ ├── AllTypeBean.cs
│ │ │ └── TestAccount.cs
│ │ │ └── proxy
│ │ │ ├── ChatRoomClientDefaultProxy.cs
│ │ │ ├── ChatRoomClientProxy.cs
│ │ │ ├── TestClientProxy.cs
│ │ │ └── wrapper
│ │ │ ├── AllTypeBeanWrapper.cs
│ │ │ └── TestAccountWrapper.cs
│ └── QiLeYuan
│ │ ├── Tatala
│ │ ├── executor
│ │ │ ├── LocalTarget.cs
│ │ │ ├── ServerExecutor.cs
│ │ │ ├── ServerTarget.cs
│ │ │ └── SocketServerTarget.cs
│ │ ├── proxy
│ │ │ └── DefaultProxy.cs
│ │ ├── socket
│ │ │ ├── client
│ │ │ │ ├── Future.cs
│ │ │ │ ├── LongClientSession.cs
│ │ │ │ ├── ShortClientSession.cs
│ │ │ │ ├── SocketConnection.cs
│ │ │ │ └── SocketController.cs
│ │ │ ├── io
│ │ │ │ ├── TransferInputStream.cs
│ │ │ │ └── TransferOutputStream.cs
│ │ │ ├── to
│ │ │ │ ├── NewTransferObject.cs
│ │ │ │ ├── StandardTransferObject.cs
│ │ │ │ ├── TransferObject.cs
│ │ │ │ ├── TransferObjectFactory.cs
│ │ │ │ ├── TransferObjectWrapper.cs
│ │ │ │ └── helper
│ │ │ │ │ ├── BooleanMapHelper.cs
│ │ │ │ │ ├── ByteArrayMapHelper.cs
│ │ │ │ │ ├── ByteMapHelper.cs
│ │ │ │ │ ├── CharMapHelper.cs
│ │ │ │ │ ├── DateMapHelper.cs
│ │ │ │ │ ├── DoubleArrayMapHelper.cs
│ │ │ │ │ ├── DoubleMapHelper.cs
│ │ │ │ │ ├── FloatArrayMapHelper.cs
│ │ │ │ │ ├── FloatMapHelper.cs
│ │ │ │ │ ├── IntArrayMapHelper.cs
│ │ │ │ │ ├── IntMapHelper.cs
│ │ │ │ │ ├── LongArrayMapHelper.cs
│ │ │ │ │ ├── LongMapHelper.cs
│ │ │ │ │ ├── ShortMapHelper.cs
│ │ │ │ │ ├── StringArrayMapHelper.cs
│ │ │ │ │ ├── StringMapHelper.cs
│ │ │ │ │ └── WrapperMapHelper.cs
│ │ │ └── util
│ │ │ │ └── TransferUtil.cs
│ │ └── util
│ │ │ └── BlockingQueue.cs
│ │ └── Tools
│ │ ├── ICSharpCode
│ │ └── SharpZipLib
│ │ │ ├── Checksums
│ │ │ ├── Adler32.cs
│ │ │ ├── CRC32.cs
│ │ │ ├── IChecksum.cs
│ │ │ └── StrangeCRC.cs
│ │ │ ├── Encryption
│ │ │ ├── PkzipClassic.cs
│ │ │ ├── ZipAESStream.cs
│ │ │ └── ZipAESTransform.cs
│ │ │ ├── Main.cs
│ │ │ ├── SharpZipBaseException.cs
│ │ │ └── Zip
│ │ │ ├── Compression
│ │ │ ├── Deflater.cs
│ │ │ ├── DeflaterConstants.cs
│ │ │ ├── DeflaterEngine.cs
│ │ │ ├── DeflaterHuffman.cs
│ │ │ ├── DeflaterPending.cs
│ │ │ ├── Inflater.cs
│ │ │ ├── InflaterDynHeader.cs
│ │ │ ├── InflaterHuffmanTree.cs
│ │ │ ├── PendingBuffer.cs
│ │ │ └── Streams
│ │ │ │ ├── DeflaterOutputStream.cs
│ │ │ │ ├── InflaterInputStream.cs
│ │ │ │ ├── OutputWindow.cs
│ │ │ │ └── StreamManipulator.cs
│ │ │ ├── ZipConstants.cs
│ │ │ ├── ZipEntry.cs
│ │ │ ├── ZipException.cs
│ │ │ ├── ZipExtraData.cs
│ │ │ └── ZipHelperStream.cs
│ │ └── Xstream
│ │ └── Core
│ │ ├── ConditionalConverter.cs
│ │ ├── ConversionException.cs
│ │ ├── Converters
│ │ ├── ArrayConverter.cs
│ │ ├── BooleanConverter.cs
│ │ ├── ByteConverter.cs
│ │ ├── CDataConverter.cs
│ │ ├── CharConverter.cs
│ │ ├── Complex
│ │ │ └── StringBuilderConverter.cs
│ │ ├── DateTimeConverter.cs
│ │ ├── DecimalConverter.cs
│ │ ├── DoubleConverter.cs
│ │ ├── EnumConverter.cs
│ │ ├── FloatConverter.cs
│ │ ├── GenericListConverter.cs
│ │ ├── GuidConverter.cs
│ │ ├── IntConverter.cs
│ │ ├── LongConverter.cs
│ │ ├── MethodInfoConverter.cs
│ │ ├── NoopConverter.cs
│ │ ├── NullConverter.cs
│ │ ├── ObjectConverter.cs
│ │ ├── PointerConverter.cs
│ │ ├── ShortConverter.cs
│ │ ├── StringConverter.cs
│ │ ├── TargetForceLoader.cs
│ │ ├── TimeSpanConverter.cs
│ │ └── TypeConverter.cs
│ │ ├── DynamicInstanceBuilder.cs
│ │ ├── FileXStream.cs
│ │ ├── IConverter.cs
│ │ ├── IMarshalContext.cs
│ │ ├── IXStream.cs
│ │ ├── IdFields.cs
│ │ ├── MarshalContext.cs
│ │ ├── NullType.cs
│ │ ├── ReferenceComparer.cs
│ │ ├── XStream.cs
│ │ ├── XStreamBase.cs
│ │ └── XStreamMarshaller.cs
└── tatala-client-csharp.csproj
├── tatala-java-example
├── build.xml
├── chatroom.bat
├── chatroomserver.bat
├── client.bat
├── clusterserver1.bat
├── clusterserver2.bat
├── easyclient.bat
├── lib
│ ├── log4j-1.2.17.jar
│ ├── protobuf-java-2.6.1.jar
│ └── tatala-0.3.0.jar
├── pom.xml
├── server.bat
├── src
│ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── qileyuan
│ │ │ └── tatala
│ │ │ └── example
│ │ │ ├── client
│ │ │ ├── ChatRoomClient.java
│ │ │ ├── ClusterClient.java
│ │ │ ├── EasyClient.java
│ │ │ ├── ExampleClient.java
│ │ │ └── PerformanceTestClient.java
│ │ │ ├── proxy
│ │ │ ├── ChatRoomClientDefaultProxy.java
│ │ │ ├── ChatRoomClientProxy.java
│ │ │ ├── ChatRoomServerProxy.java
│ │ │ ├── ExampleClientProxy.java
│ │ │ ├── ExampleDefaultProxy.java
│ │ │ └── ExampleServerProxy.java
│ │ │ ├── server
│ │ │ ├── ChatRoomServer.java
│ │ │ ├── ClusterServer.java
│ │ │ └── ExampleServer.java
│ │ │ └── service
│ │ │ ├── ChatRoomServerLogic.java
│ │ │ ├── ExampleManager.java
│ │ │ ├── ExampleManagerImpl.java
│ │ │ ├── ExampleReturnException.java
│ │ │ └── model
│ │ │ ├── Account.java
│ │ │ ├── AllTypeBean.java
│ │ │ ├── proto
│ │ │ ├── AccountProto.java
│ │ │ └── account.proto
│ │ │ └── wrapper
│ │ │ ├── AccountListWrapper.java
│ │ │ ├── AccountMapWrapper.java
│ │ │ ├── AccountWrapper.java
│ │ │ └── AllTypeBeanWrapper.java
│ │ └── resources
│ │ └── log4j.xml
└── target
│ └── tatala-java-example-0.3.0.jar
└── tatala-java
├── build.xml
├── lib
├── log4j-1.2.17.jar
└── zookeeper-3.5.0-alpha.jar
├── pom.xml
└── src
└── main
└── java
└── com
└── qileyuan
└── tatala
├── executor
└── ServerExecutor.java
├── proxy
├── ClientProxy.java
├── ClientProxyFactory.java
├── DefaultProxy.java
└── ServerProxy.java
├── socket
├── client
│ ├── AioClientReceiveHandler.java
│ ├── LongClientSession.java
│ ├── SocketConnection.java
│ └── SocketController.java
├── exception
│ ├── SocketExecuteException.java
│ └── TatalaRollbackException.java
├── io
│ ├── TransferInputStream.java
│ └── TransferOutputStream.java
├── server
│ ├── AioReceiveHandler.java
│ ├── AioSocketHandler.java
│ ├── AioSocketServer.java
│ ├── ServerSession.java
│ └── SessionFilter.java
├── to
│ ├── OrderedTransferObject.java
│ ├── TransferObject.java
│ ├── TransferObjectFactory.java
│ └── TransferObjectWrapper.java
└── util
│ ├── NetworkUtil.java
│ └── TransferUtil.java
└── zookeeper
├── ServiceDiscovery.java
└── ServiceRegistry.java
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 | *.sln merge=union
7 | *.csproj merge=union
8 | *.vbproj merge=union
9 | *.fsproj merge=union
10 | *.dbproj merge=union
11 |
12 | # Standard to msysgit
13 | *.doc diff=astextplain
14 | *.DOC diff=astextplain
15 | *.docx diff=astextplain
16 | *.DOCX diff=astextplain
17 | *.dot diff=astextplain
18 | *.DOT diff=astextplain
19 | *.pdf diff=astextplain
20 | *.PDF diff=astextplain
21 | *.rtf diff=astextplain
22 | *.RTF diff=astextplain
23 |
24 | *.cs linguist-language=Java
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/cfg/controller.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 127.0.0.1
4 | 10001
5 | 5000
6 | 3
7 | test1
8 |
9 |
10 | 127.0.0.1
11 | 10002
12 | 5000
13 | 3
14 | test2
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/Example/Tatala/model/TestAccount.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | /**
4 | * This class is a customization object.
5 | * @author JimT
6 | *
7 | */
8 | namespace Example.tatala.model {
9 |
10 | public class TestAccount {
11 |
12 | private int id;
13 | private String name;
14 | private String address;
15 |
16 | public int getId() {
17 | return id;
18 | }
19 | public void setId(int id) {
20 | this.id = id;
21 | }
22 | public String getName() {
23 | return name;
24 | }
25 | public void setName(String name) {
26 | this.name = name;
27 | }
28 | public String getAddress() {
29 | return address;
30 | }
31 | public void setAddress(String address) {
32 | this.address = address;
33 | }
34 |
35 | public override String ToString() {
36 | return "[id: " + id + "][name: " + name + "][address: " + address + "]";
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/Example/Tatala/proxy/ChatRoomClientDefaultProxy.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Example.tatala.client;
3 | using QiLeYuan.Tatala.proxy;
4 | using QiLeYuan.Tatala.socket.to;
5 |
6 | namespace Example.tatala.proxy {
7 | public class ChatRoomClientDefaultProxy : DefaultProxy {
8 |
9 | public override Object execute(TransferObject baseto) {
10 | StandardTransferObject to = (StandardTransferObject)baseto;
11 | String calleeMethod = to.getCalleeMethod();
12 | if (calleeMethod.Equals("receiveMessage")) {
13 | String message = to.getString("message");
14 | ChatRoomClient.getInstance().receiveMessage(message);
15 | }
16 |
17 | return null;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/executor/LocalTarget.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using QiLeYuan.Tatala.socket.to;
4 | using QiLeYuan.Tools.debug;
5 |
6 | /**
7 | * This class is local target, simply provider local-method-call.
8 | *
9 | * @author JimT
10 | *
11 | */
12 | namespace QiLeYuan.Tatala.executor {
13 |
14 | public class LocalTarget : ServerTarget {
15 | public Object execute(TransferObject to) {
16 |
17 | String calleeClass = to.getCalleeClass();
18 | String calleeMethod = to.getCalleeMethod();
19 |
20 | Object retobj = null;
21 | try {
22 | Type type = Type.GetType(calleeClass);
23 | Object instance = Activator.CreateInstance(type);
24 | MethodInfo method = type.GetMethod(calleeMethod);
25 | retobj = method.Invoke(instance, new object[] { to });
26 | } catch (Exception e) {
27 | Logging.LogError(e.ToString());
28 | }
29 |
30 | return retobj;
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/executor/ServerExecutor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using QiLeYuan.Tatala.util;
3 | using QiLeYuan.Tatala.socket.to;
4 |
5 | /**
6 | * This class is the distribution-method-call executor, which dispatches request to different target.
7 | * For now, it only supports local and socket distribution.
8 | *
9 | * @author JimT
10 | *
11 | */
12 | namespace QiLeYuan.Tatala.executor {
13 |
14 | public class ServerExecutor {
15 | private static ServerTarget target;
16 | public static Object execute(TransferObject to) {
17 | Object retObj = null;
18 | //for csharp client, server target is Socket.
19 | target = new SocketServerTarget();
20 | retObj = target.execute(to);
21 | return retObj;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/executor/ServerTarget.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using QiLeYuan.Tatala.socket.to;
3 |
4 | namespace QiLeYuan.Tatala.executor {
5 |
6 | public interface ServerTarget {
7 | Object execute(TransferObject to);
8 | }
9 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/executor/SocketServerTarget.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using QiLeYuan.Tatala.socket.client;
3 | using QiLeYuan.Tatala.socket.to;
4 |
5 | /**
6 | * This class is socket server target, provider socket distribution-method-call.
7 | * @author JimT
8 | *
9 | */
10 | namespace QiLeYuan.Tatala.executor {
11 |
12 | public class SocketServerTarget : ServerTarget {
13 |
14 | public Object execute(TransferObject to) {
15 | Object resultObject = null;
16 |
17 | resultObject = SocketController.execute(to);
18 |
19 | return resultObject;
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/proxy/DefaultProxy.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using QiLeYuan.Tatala.socket.to;
3 | using QiLeYuan.Tools.debug;
4 |
5 | namespace QiLeYuan.Tatala.proxy {
6 | public class DefaultProxy {
7 | public virtual Object execute(TransferObject to) {
8 | Logging.LogError("This is DefaultProxy. You need extend it by specific proxy.");
9 | return null;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/client/Future.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using QiLeYuan.Tatala.socket.client;
3 |
4 | namespace QiLeYuan.Tatala.socket.client {
5 | public class Future {
6 | private SocketController.ExecuteDelegate executeDelegate;
7 | private IAsyncResult asyncResult;
8 |
9 | public Future(SocketController.ExecuteDelegate executeDelegate, IAsyncResult asyncResult) {
10 | this.executeDelegate = executeDelegate;
11 | this.asyncResult = asyncResult;
12 | }
13 |
14 | public Object Get() {
15 | return executeDelegate.EndInvoke(asyncResult);
16 | }
17 |
18 | public bool IsDone() {
19 | return asyncResult.IsCompleted;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/TransferObjectWrapper.cs:
--------------------------------------------------------------------------------
1 | using QiLeYuan.Tatala.socket.io;
2 |
3 | /**
4 | * This is customization object wrapper interface.
5 | *
6 | * @author JimT
7 | *
8 | */
9 | namespace QiLeYuan.Tatala.socket.to {
10 | public interface TransferObjectWrapper {
11 | int getLength();
12 | void getByteArray(TransferOutputStream touts);
13 | TransferObjectWrapper getObjectWrapper(TransferInputStream tins);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/BooleanMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class BooleanMapHelper {
9 | public static int getByteArrayLength(Dictionary booleanMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in booleanMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfBoolean();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary booleanMap, TransferOutputStream touts) {
24 |
25 | foreach (KeyValuePair item in booleanMap) {
26 | // type
27 | touts.writeByte(TransferObject.DATATYPE_BOOLEAN);
28 | // key
29 | String key = item.Key;
30 | touts.writeString(key);
31 | // value
32 | bool value = item.Value;
33 | touts.writeBoolean(value);
34 | }
35 | }
36 | }
37 |
38 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/ByteArrayMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.util;
4 | using QiLeYuan.Tatala.socket.io;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 | public class ByteArrayMapHelper {
8 | public static int getByteArrayLength(Dictionary byteArrayMap) {
9 | int blength = 0;
10 | foreach (KeyValuePair item in byteArrayMap) {
11 | // type
12 | blength += TransferUtil.getLengthOfByte();
13 | // key
14 | String key = item.Key;
15 | blength += TransferUtil.getLengthOfString(key);
16 | // value
17 | byte[] values = item.Value;
18 | blength += TransferUtil.getLengthOfByteArray(values);
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary byteArrayMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in byteArrayMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_BYTEARRAY);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | byte[] values = item.Value;
32 | touts.writeByteArray(values);
33 | }
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/ByteMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class ByteMapHelper {
9 | public static int getByteArrayLength(Dictionary byteMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in byteMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfByte();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary byteMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in byteMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_BYTE);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | byte value = item.Value;
32 | touts.writeByte(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/CharMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class CharMapHelper {
9 | public static int getByteArrayLength(Dictionary charMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in charMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfChar();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary charMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in charMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_CHAR);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | char value = item.Value;
32 | touts.writeChar(value);
33 | }
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/DateMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class DateMapHelper {
9 | public static int getByteArrayLength(Dictionary dateMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in dateMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfDate();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary dateMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in dateMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_DATE);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | DateTime value = item.Value;
32 | touts.writeDate(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/DoubleMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.util;
4 | using QiLeYuan.Tatala.socket.io;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class DoubleMapHelper {
9 | public static int getByteArrayLength(Dictionary doubleMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in doubleMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfDouble();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary doubleMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in doubleMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_DOUBLE);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | double value = item.Value;
32 | touts.writeDouble(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/FloatMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class FloatMapHelper {
9 | public static int getByteArrayLength(Dictionary floatMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in floatMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfFloat();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary floatMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in floatMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_FLOAT);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | float value = item.Value;
32 | touts.writeFloat(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/IntArrayMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class IntArrayMapHelper {
9 | public static int getByteArrayLength(Dictionary intArrayMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in intArrayMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | int[] values = item.Value;
19 | blength += TransferUtil.getLengthOfIntArray(values);
20 | }
21 | return blength;
22 | }
23 |
24 | public static void getByteArray(Dictionary intArrayMap, TransferOutputStream touts) {
25 | foreach (KeyValuePair item in intArrayMap) {
26 | // type
27 | touts.writeByte(TransferObject.DATATYPE_INTARRAY);
28 | // key
29 | String key = item.Key;
30 | touts.writeString(key);
31 | // value
32 | int[] values = item.Value;
33 | touts.writeIntArray(values);
34 | }
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/IntMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class IntMapHelper {
9 | public static int getByteArrayLength(Dictionary intMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in intMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfInt();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary intMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in intMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_INT);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | int value = item.Value;
32 | touts.writeInt(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/LongArrayMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class LongArrayMapHelper {
9 | public static int getByteArrayLength(Dictionary longArrayMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in longArrayMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | long[] values = item.Value;
19 | blength += TransferUtil.getLengthOfLongArray(values);
20 | }
21 | return blength;
22 | }
23 |
24 | public static void getByteArray(Dictionary longArrayMap, TransferOutputStream touts) {
25 | foreach (KeyValuePair item in longArrayMap) {
26 | // type
27 | touts.writeByte(TransferObject.DATATYPE_LONGARRAY);
28 | // key
29 | String key = item.Key;
30 | touts.writeString(key);
31 | // value
32 | long[] values = item.Value;
33 | touts.writeLongArray(values);
34 | }
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/LongMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class LongMapHelper {
9 | public static int getByteArrayLength(Dictionary longMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in longMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfLong();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary longMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in longMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_LONG);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | long value = item.Value;
32 | touts.writeLong(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/ShortMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class ShortMapHelper {
9 | public static int getByteArrayLength(Dictionary shortMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in shortMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | blength += TransferUtil.getLengthOfShort();
19 | }
20 | return blength;
21 | }
22 |
23 | public static void getByteArray(Dictionary shortMap, TransferOutputStream touts) {
24 | foreach (KeyValuePair item in shortMap) {
25 | // type
26 | touts.writeByte(TransferObject.DATATYPE_SHORT);
27 | // key
28 | String key = item.Key;
29 | touts.writeString(key);
30 | // value
31 | short value = item.Value;
32 | touts.writeShort(value);
33 | }
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tatala/socket/to/helper/StringMapHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using QiLeYuan.Tatala.socket.io;
4 | using QiLeYuan.Tatala.socket.util;
5 |
6 | namespace QiLeYuan.Tatala.socket.to.helper {
7 |
8 | public class StringMapHelper {
9 | public static int getByteArrayLength(Dictionary stringMap) {
10 | int blength = 0;
11 | foreach (KeyValuePair item in stringMap) {
12 | // type
13 | blength += TransferUtil.getLengthOfByte();
14 | // key
15 | String key = item.Key;
16 | blength += TransferUtil.getLengthOfString(key);
17 | // value
18 | String value = item.Value;
19 | blength += TransferUtil.getLengthOfString(value);
20 | }
21 | return blength;
22 | }
23 |
24 | public static void getByteArray(Dictionary stringMap, TransferOutputStream touts) {
25 | foreach (KeyValuePair item in stringMap) {
26 | // type
27 | touts.writeByte(TransferObject.DATATYPE_STRING);
28 | // key
29 | String key = item.Key;
30 | touts.writeString(key);
31 | // value
32 | String value = item.Value;
33 | touts.writeString(value);
34 | }
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/ConditionalConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Xstream.Core
4 | {
5 | public interface ConditionalConverter : IConverter
6 | {
7 | bool Match(Type type);
8 | }
9 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/ConversionException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.Serialization;
3 |
4 | namespace Xstream.Core
5 | {
6 | ///
7 | /// Exception that occurs then (de)serialization of an object fails.
8 | ///
9 | [Serializable]
10 | public class ConversionException : Exception
11 | {
12 | internal ConversionException(SerializationInfo info, StreamingContext context) : base(info, context) {}
13 | internal ConversionException(string message) : base(message) {}
14 | internal ConversionException(string message, Exception innerException) : base(message, innerException) {}
15 | }
16 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/Converters/NoopConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using System.Xml;
4 |
5 | namespace Xstream.Core.Converters
6 | {
7 | public class NoopConverter : IConverter
8 | {
9 | private static NoopConverter instance = new NoopConverter();
10 | private NoopConverter() {}
11 |
12 | public static IConverter Instance
13 | {
14 | get { return instance; }
15 | }
16 |
17 | public void Register(IMarshalContext context)
18 | {
19 | }
20 |
21 | public void ToXml(object value, FieldInfo field, XmlTextWriter xml, IMarshalContext context)
22 | {
23 | }
24 |
25 | public object FromXml(object parent, FieldInfo field, Type type, XmlNode xml, IMarshalContext context)
26 | {
27 | throw new NotImplementedException();
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/Converters/NullConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using System.Xml;
4 |
5 | namespace Xstream.Core.Converters
6 | {
7 | ///
8 | /// Special converter to convert null values.
9 | ///
10 | internal class NullConverter : IConverter
11 | {
12 | private static readonly Type __type = typeof( NullType );
13 |
14 | ///
15 | /// Register is called by a MarshalContext to allow the
16 | /// converter instance to register itself in the context
17 | /// with all appropriate value types and interfaces.
18 | ///
19 | public void Register(IMarshalContext context)
20 | {
21 | context.RegisterConverter( __type, this );
22 | context.Alias( "null", __type );
23 | }
24 |
25 | ///
26 | /// Converts the object passed in to its XML representation.
27 | /// The XML string is written on the XmlTextWriter.
28 | ///
29 | public void ToXml(object value, FieldInfo field, XmlTextWriter xml, IMarshalContext context)
30 | {
31 | xml.WriteElementString( "null", string.Empty );
32 | }
33 |
34 | ///
35 | /// Converts the XmlNode data passed in back to an actual
36 | /// .NET instance object.
37 | ///
38 | /// Object created from the XML.
39 | public object FromXml(object parent, FieldInfo field, Type type, XmlNode xml, IMarshalContext context)
40 | {
41 | return null;
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/Converters/PointerConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 | using System.Xml;
4 |
5 | namespace Xstream.Core.Converters
6 | {
7 | ///
8 | /// Converts a pointer (System.Reflection.Pointer) to xml and back.
9 | ///
10 | ///
11 | /// Not implemented to convert pointer types.
12 | ///
13 | internal class PointerConverter : IConverter
14 | {
15 | private static readonly Type __type = typeof( Pointer );
16 |
17 | ///
18 | /// Register is called by a MarshalContext to allow the
19 | /// converter instance to register itself in the context
20 | /// with all appropriate value types and interfaces.
21 | ///
22 | public void Register(IMarshalContext context)
23 | {
24 | context.RegisterConverter( __type, this );
25 | }
26 |
27 | ///
28 | /// Converts the object passed in to its XML representation.
29 | /// The XML string is written on the XmlTextWriter.
30 | ///
31 | public void ToXml(object value, FieldInfo field, XmlTextWriter xml, IMarshalContext context)
32 | {
33 | }
34 |
35 | ///
36 | /// Converts the XmlNode data passed in, back to an actual
37 | /// .NET instance object.
38 | ///
39 | /// Object created from the XML.
40 | public object FromXml(object parent, FieldInfo field, Type type, XmlNode xml, IMarshalContext context)
41 | {
42 | return null;
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/Converters/TargetForceLoader.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | namespace Xstream.Core.Converters
4 | {
5 | internal class TargetForceLoader
6 | {
7 | public static object GetTargetValue(object value)
8 | {
9 | if (value == null) return value;
10 | ForceLoadTheEntityBecauseItIsLazy(value);
11 |
12 | FieldInfo interceptorField = value.GetType().GetField("__interceptor");
13 | if (interceptorField == null) return value;
14 |
15 | object interceptorValue = interceptorField.GetValue(value);
16 | FieldInfo targetField = interceptorValue.GetType().BaseType.GetField("_target", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
17 | return targetField.GetValue(interceptorValue);
18 | }
19 |
20 | private static void ForceLoadTheEntityBecauseItIsLazy(object value)
21 | {
22 | try
23 | {
24 | value.GetType().GetMethod("get_Version", BindingFlags.Public | BindingFlags.Instance).Invoke(value, new object[] {});
25 | }
26 | catch (TargetInvocationException e)
27 | {
28 | throw e.InnerException.InnerException;
29 | }
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/history/0.1.2/tatala-client-csharp/src/QiLeYuan/Tools/Xstream/Core/FileXStream.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace Xstream.Core
5 | {
6 | public class FileXStream : IXStream
7 | {
8 | // Fields
9 | private readonly string fileName;
10 | private readonly XStream xStream;
11 |
12 | // Methods
13 | public FileXStream(string fileName)
14 | {
15 | this.fileName = fileName;
16 | xStream = new XStream();
17 | }
18 |
19 | public void AddConverter(IConverter converter)
20 | {
21 | xStream.AddConverter(converter);
22 | }
23 |
24 | public void AddIgnoreAttribute(Type ignoredAttributeType)
25 | {
26 | xStream.AddIgnoreAttribute(ignoredAttributeType);
27 | }
28 |
29 | public object FromFile()
30 | {
31 | return xStream.FromXml