public virtual void EndRead() { AssertBeganRead(); #if AGNOS_TRANSPORT_DEBUG System.Console.WriteLine("Transport.EndRead"); #endif readStream.Close(); readStream = null; rlock.Release(); #if AGNOS_TRANSPORT_DEBUG System.Console.WriteLine(">> okay"); #endif }
// // read interface // public virtual int BeginRead() { if (rlock.IsHeldByCurrentThread()) { throw new IOException("BeginRead is not reentrant"); } #if AGNOS_TRANSPORT_DEBUG System.Console.WriteLine("TransportBegin.BeginRead"); #endif rlock.Acquire(); try { int seq = readSInt32(inStream); int packetLength = readSInt32(inStream); int uncompressedLength = readSInt32(inStream); #if AGNOS_TRANSPORT_DEBUG System.Console.WriteLine(">> seq={0}, len={1}, uncomp={2}", seq, packetLength, uncompressedLength); #endif if (readStream != null) { throw new InvalidOperationException("readStream must be null at this point"); } readStream = new BoundInputStream(inStream, packetLength, true, false); if (uncompressedLength > 0) { readStream = new BoundInputStream(new DeflateStream(readStream, CompressionMode.Decompress, false), packetLength, false, true); } return(seq); } catch (Exception) { readStream = null; rlock.Release(); throw; } }