You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/01/18 15:12:43 UTC

[38/50] ignite git commit: wip fixing dispose

wip fixing dispose


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/41ae0148
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/41ae0148
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/41ae0148

Branch: refs/heads/ignite-2324
Commit: 41ae01482bfe7533af5f63803af613dc412ba6ed
Parents: 04786dc
Author: Pavel Tupitsyn <pt...@gridgain.com>
Authored: Thu Jan 14 11:42:06 2016 +0300
Committer: Pavel Tupitsyn <pt...@gridgain.com>
Committed: Thu Jan 14 11:42:06 2016 +0300

----------------------------------------------------------------------
 .../Apache.Ignite.Core/Impl/Binary/Binary.cs    | 41 ++++++-----
 .../Impl/Binary/BinaryObject.cs                 | 45 ++++++------
 .../Impl/Binary/BinaryObjectBuilder.cs          | 75 ++++++++++----------
 .../Impl/Binary/Marshaller.cs                   | 19 +++--
 .../Impl/Binary/SerializableObjectHolder.cs     | 13 +++-
 5 files changed, 108 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/41ae0148/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Binary.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Binary.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Binary.cs
index e96720e..7163486 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Binary.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Binary.cs
@@ -48,25 +48,27 @@ namespace Apache.Ignite.Core.Impl.Binary
             if (obj is IBinaryObject)
                 return (T)obj;
 
-            IBinaryStream stream = new BinaryHeapStream(1024);
+            using (var stream = new BinaryHeapStream(1024))
+            {
 
-            // Serialize.
-            BinaryWriter writer = _marsh.StartMarshal(stream);
+                // Serialize.
+                BinaryWriter writer = _marsh.StartMarshal(stream);
 
-            try
-            {
-                writer.Write(obj);
-            }
-            finally
-            {
-                // Save metadata.
-                _marsh.FinishMarshal(writer);
-            }
+                try
+                {
+                    writer.Write(obj);
+                }
+                finally
+                {
+                    // Save metadata.
+                    _marsh.FinishMarshal(writer);
+                }
 
-            // Deserialize.
-            stream.Seek(0, SeekOrigin.Begin);
+                // Deserialize.
+                stream.Seek(0, SeekOrigin.Begin);
 
-            return _marsh.Unmarshal<T>(stream, BinaryMode.ForceBinary);
+                return _marsh.Unmarshal<T>(stream, BinaryMode.ForceBinary);
+            }
         }
 
         /** <inheritDoc /> */
@@ -192,11 +194,12 @@ namespace Apache.Ignite.Core.Impl.Binary
             var hdr = new BinaryObjectHeader(desc.TypeId, 0, len, 0, len,
                 desc.UserType ? BinaryObjectHeader.Flag.UserType : BinaryObjectHeader.Flag.None);
 
-            var stream = new BinaryHeapStream(len);
-
-            BinaryObjectHeader.Write(hdr, stream, 0);
+            using (var stream = new BinaryHeapStream(len))
+            {
+                BinaryObjectHeader.Write(hdr, stream, 0);
 
-            return new BinaryObject(_marsh, stream.InternalArray, 0, hdr);
+                return new BinaryObject(_marsh, stream.InternalArray, 0, hdr);
+            }
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/41ae0148/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
index 90607dd..2f68a0a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObject.cs
@@ -110,11 +110,12 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// <returns>Field value.</returns>
         public T GetField<T>(int pos, BinaryObjectBuilder builder)
         {
-            IBinaryStream stream = new BinaryHeapStream(_data);
-
-            stream.Seek(pos + _offset, SeekOrigin.Begin);
+            using (IBinaryStream stream = new BinaryHeapStream(_data))
+            {
+                stream.Seek(pos + _offset, SeekOrigin.Begin);
 
-            return _marsh.Unmarshal<T>(stream, BinaryMode.ForceBinary, builder);
+                return _marsh.Unmarshal<T>(stream, BinaryMode.ForceBinary, builder);
+            }
         }
 
         /** <inheritdoc /> */
@@ -144,13 +145,15 @@ namespace Apache.Ignite.Core.Impl.Binary
         {
             if (_deserialized == null)
             {
-                IBinaryStream stream = new BinaryHeapStream(_data);
-
-                stream.Seek(_offset, SeekOrigin.Begin);
+                T res;
+                using (IBinaryStream stream = new BinaryHeapStream(_data))
+                {
+                    stream.Seek(_offset, SeekOrigin.Begin);
 
-                T res = _marsh.Unmarshal<T>(stream, mode);
+                    res = _marsh.Unmarshal<T>(stream, mode);
+                }
 
-                IBinaryTypeDescriptor desc = _marsh.GetDescriptor(true, _header.TypeId);
+                var desc = _marsh.GetDescriptor(true, _header.TypeId);
 
                 if (!desc.KeepDeserialized)
                     return res;
@@ -202,11 +205,12 @@ namespace Apache.Ignite.Core.Impl.Binary
             if (_fields != null) 
                 return;
 
-            var stream = new BinaryHeapStream(_data);
-
-            var hdr = BinaryObjectHeader.Read(stream, _offset);
+            using (var stream = new BinaryHeapStream(_data))
+            {
+                var hdr = BinaryObjectHeader.Read(stream, _offset);
 
-            _fields = hdr.ReadSchemaAsDictionary(stream, _offset) ?? EmptyFields;
+                _fields = hdr.ReadSchemaAsDictionary(stream, _offset) ?? EmptyFields;
+            }
         }
 
         /** <inheritdoc /> */
@@ -256,15 +260,16 @@ namespace Apache.Ignite.Core.Impl.Binary
 
                     // 4. Check if objects have the same raw data.
                     // ReSharper disable ImpureMethodCallOnReadonlyValueField (method is not impure)
-                    var stream = new BinaryHeapStream(_data);
-                    var rawOffset = _header.GetRawOffset(stream, _offset);
+                    using (var stream = new BinaryHeapStream(_data))
+                    using (var thatStream = new BinaryHeapStream(that._data))
+                    {
+                        var rawOffset = _header.GetRawOffset(stream, _offset);
+                        var thatRawOffset = that._header.GetRawOffset(thatStream, that._offset);
 
-                    var thatStream = new BinaryHeapStream(that._data);
-                    var thatRawOffset = that._header.GetRawOffset(thatStream, that._offset);
+                        return BinaryUtils.CompareArrays(_data, _offset + rawOffset, _header.Length - rawOffset,
+                            that._data, that._offset + thatRawOffset, that._header.Length - thatRawOffset);
+                    }
                     // ReSharper restore ImpureMethodCallOnReadonlyValueField
-
-                    return BinaryUtils.CompareArrays(_data, _offset + rawOffset, _header.Length - rawOffset, 
-                        that._data, that._offset + thatRawOffset, that._header.Length - thatRawOffset);
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/41ae0148/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObjectBuilder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObjectBuilder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObjectBuilder.cs
index f41514f..0f1c0bd 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObjectBuilder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryObjectBuilder.cs
@@ -352,38 +352,35 @@ namespace Apache.Ignite.Core.Impl.Binary
         /** <inheritDoc /> */
         public IBinaryObject Build()
         {
-            BinaryHeapStream inStream = new BinaryHeapStream(_obj.Data);
-
-            inStream.Seek(_obj.Offset, SeekOrigin.Begin);
-
             // Assume that resulting length will be no less than header + [fields_cnt] * 12;
             int estimatedCapacity = BinaryObjectHeader.Size + (_vals == null ? 0 : _vals.Count*12);
 
-            BinaryHeapStream outStream = new BinaryHeapStream(estimatedCapacity);
-
-            BinaryWriter writer = _binary.Marshaller.StartMarshal(outStream);
+            using (var outStream = new BinaryHeapStream(estimatedCapacity))
+            {
+                BinaryWriter writer = _binary.Marshaller.StartMarshal(outStream);
 
-            writer.SetBuilder(this);
+                writer.SetBuilder(this);
 
-            // All related builders will work in this context with this writer.
-            _parent._ctx = new Context(writer);
+                // All related builders will work in this context with this writer.
+                _parent._ctx = new Context(writer);
             
-            try
-            {
-                // Write.
-                writer.Write(this);
+                try
+                {
+                    // Write.
+                    writer.Write(this);
                 
-                // Process metadata.
-                _binary.Marshaller.FinishMarshal(writer);
+                    // Process metadata.
+                    _binary.Marshaller.FinishMarshal(writer);
 
-                // Create binary object once metadata is processed.
-                return new BinaryObject(_binary.Marshaller, outStream.InternalArray, 0, 
-                    BinaryObjectHeader.Read(outStream, 0));
-            }
-            finally
-            {
-                // Cleanup.
-                _parent._ctx.Closed = true;
+                    // Create binary object once metadata is processed.
+                    return new BinaryObject(_binary.Marshaller, outStream.InternalArray, 0, 
+                        BinaryObjectHeader.Read(outStream, 0));
+                }
+                finally
+                {
+                    // Cleanup.
+                    _parent._ctx.Closed = true;
+                }
             }
         }
 
@@ -783,12 +780,13 @@ namespace Apache.Ignite.Core.Impl.Binary
         internal void ProcessBinary(IBinaryStream outStream, BinaryObject port)
         {
             // Special case: writing binary object with correct inversions.
-            BinaryHeapStream inStream = new BinaryHeapStream(port.Data);
-
-            inStream.Seek(port.Offset, SeekOrigin.Begin);
+            using (var inStream = new BinaryHeapStream(port.Data))
+            {
+                inStream.Seek(port.Offset, SeekOrigin.Begin);
 
-            // Use fresh context to ensure correct binary inversion.
-            Mutate0(new Context(), inStream, outStream, false, 0, EmptyVals);
+                // Use fresh context to ensure correct binary inversion.
+                Mutate0(new Context(), inStream, outStream, false, 0, EmptyVals);
+            }
         }
 
         /// <summary>
@@ -798,18 +796,19 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// <param name="builder">Builder.</param>
         internal void ProcessBuilder(IBinaryStream outStream, BinaryObjectBuilder builder)
         {
-            BinaryHeapStream inStream = new BinaryHeapStream(builder._obj.Data);
-
-            inStream.Seek(builder._obj.Offset, SeekOrigin.Begin);
+            using (var inStream = new BinaryHeapStream(builder._obj.Data))
+            {
+                inStream.Seek(builder._obj.Offset, SeekOrigin.Begin);
 
-            // Builder parent context might be null only in one case: if we never met this group of
-            // builders before. In this case we set context to their parent and track it. Context
-            // cleanup will be performed at the very end of build process.
-            if (builder._parent._ctx == null || builder._parent._ctx.Closed)
-                builder._parent._ctx = new Context(_parent._ctx);
+                // Builder parent context might be null only in one case: if we never met this group of
+                // builders before. In this case we set context to their parent and track it. Context
+                // cleanup will be performed at the very end of build process.
+                if (builder._parent._ctx == null || builder._parent._ctx.Closed)
+                    builder._parent._ctx = new Context(_parent._ctx);
 
-            builder.Mutate(inStream, outStream as BinaryHeapStream, builder._desc,
+                builder.Mutate(inStream, (BinaryHeapStream) outStream, builder._desc,
                     builder._hashCode, builder._vals);
+            }
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/41ae0148/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs
index 457830f..4274744 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs
@@ -112,11 +112,12 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// <returns>Serialized data as byte array.</returns>
         public byte[] Marshal<T>(T val)
         {
-            BinaryHeapStream stream = new BinaryHeapStream(128);
-
-            Marshal(val, stream);
+            using (var stream = new BinaryHeapStream(128))
+            {
+                Marshal(val, stream);
 
-            return stream.GetArrayCopy();
+                return stream.GetArrayCopy();
+            }
         }
 
         /// <summary>
@@ -170,7 +171,10 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </returns>
         public T Unmarshal<T>(byte[] data, bool keepBinary)
         {
-            return Unmarshal<T>(new BinaryHeapStream(data), keepBinary);
+            using (var stream = new BinaryHeapStream(data))
+            {
+                return Unmarshal<T>(stream, keepBinary);
+            }
         }
 
         /// <summary>
@@ -183,7 +187,10 @@ namespace Apache.Ignite.Core.Impl.Binary
         /// </returns>
         public T Unmarshal<T>(byte[] data, BinaryMode mode = BinaryMode.Deserialize)
         {
-            return Unmarshal<T>(new BinaryHeapStream(data), mode);
+            using (var stream = new BinaryHeapStream(data))
+            {
+                return Unmarshal<T>(stream, mode);
+            }
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/ignite/blob/41ae0148/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/SerializableObjectHolder.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/SerializableObjectHolder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/SerializableObjectHolder.cs
index 2da854f..08b44df 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/SerializableObjectHolder.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/SerializableObjectHolder.cs
@@ -54,7 +54,13 @@ namespace Apache.Ignite.Core.Impl.Binary
 
             var writer0 = (BinaryWriter)writer.GetRawWriter();
 
-            writer0.WithDetach(w => new BinaryFormatter().Serialize(new BinaryStreamAdapter(w.Stream), Item));
+            writer0.WithDetach(w =>
+            {
+                using (var streamAdapter = new BinaryStreamAdapter(w.Stream))
+                {
+                    new BinaryFormatter().Serialize(streamAdapter, Item);
+                }
+            });
         }
 
         /// <summary>
@@ -67,7 +73,10 @@ namespace Apache.Ignite.Core.Impl.Binary
 
             var reader0 = (BinaryReader) reader.GetRawReader();
 
-            _item = new BinaryFormatter().Deserialize(new BinaryStreamAdapter(reader0.Stream), null);
+            using (var streamAdapter = new BinaryStreamAdapter(reader0.Stream))
+            {
+                _item = new BinaryFormatter().Deserialize(streamAdapter, null);
+            }
         }
     }
 }
\ No newline at end of file