http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs deleted file mode 100644 index 206df4b..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformPooledMemory.cs +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Memory -{ - /// <summary> - /// Platform pooled memory chunk. - /// </summary> - internal class PlatformPooledMemory : PlatformMemory - { - /** Pool. */ - private readonly PlatformMemoryPool _pool; - - /** Cached stream. */ - private PlatformMemoryStream _stream; - - /// <summary> - /// Constructor. - /// </summary> - /// <param name="pool">Pool.</param> - /// <param name="memPtr">Memory pointer.</param> - public PlatformPooledMemory(PlatformMemoryPool pool, long memPtr) : base(memPtr) - { - _pool = pool; - } - - /** <inheritdoc /> */ - public override PlatformMemoryStream Stream() - { - if (_stream == null) - _stream = base.Stream(); - else - _stream.Reuse(); - - return _stream; - } - - /** <inheritdoc /> */ - public override void Reallocate(int cap) - { - // Try doubling capacity to avoid excessive allocations. - int doubledCap = PlatformMemoryUtils.Capacity(MemPtr) << 1; - - if (doubledCap > cap) - cap = doubledCap; - - _pool.Reallocate(MemPtr, cap); - } - - /** <inheritdoc /> */ - public override void Release() - { - _pool.Release(MemPtr); // Return to the pool. - } - } -}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformRawMemory.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformRawMemory.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformRawMemory.cs deleted file mode 100644 index 59c915b..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformRawMemory.cs +++ /dev/null @@ -1,89 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Memory -{ - using System; - - /// <summary> - /// Non-resizeable raw memory chunk without metadata header. - /// </summary> - [CLSCompliant(false)] - public class PlatformRawMemory : IPlatformMemory - { - /** */ - private readonly long _memPtr; - - /** */ - private readonly int _size; - - /// <summary> - /// Initializes a new instance of the <see cref="PlatformRawMemory"/> class. - /// </summary> - /// <param name="memPtr">Heap pointer.</param> - /// <param name="size">Size.</param> - public unsafe PlatformRawMemory(void* memPtr, int size) - { - _memPtr = (long) memPtr; - _size = size; - } - - /** <inheritdoc /> */ - public PlatformMemoryStream Stream() - { - return BitConverter.IsLittleEndian ? new PlatformMemoryStream(this) : - new PlatformBigEndianMemoryStream(this); - } - - /** <inheritdoc /> */ - public long Pointer - { - get { throw new NotSupportedException(); } - } - - /** <inheritdoc /> */ - public long Data - { - get { return _memPtr; } - } - - /** <inheritdoc /> */ - public int Capacity - { - get { return _size; } - } - - /** <inheritdoc /> */ - public int Length - { - get { return _size; } - set { throw new NotSupportedException(); } - } - - /** <inheritdoc /> */ - public void Reallocate(int cap) - { - throw new NotSupportedException(); - } - - /** <inheritdoc /> */ - public void Release() - { - throw new NotSupportedException(); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs deleted file mode 100644 index 26c1bc1..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Memory/PlatformUnpooledMemory.cs +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Memory -{ - /// <summary> - /// Platform unpooled memory chunk. - /// </summary> - internal class PlatformUnpooledMemory : PlatformMemory - { - /// <summary> - /// Constructor. - /// </summary> - /// <param name="memPtr">Memory pointer.</param> - public PlatformUnpooledMemory(long memPtr) : base(memPtr) - { - // No-op. - } - - /** <inheritdoc /> */ - public override void Reallocate(int cap) - { - // Try doubling capacity to avoid excessive allocations. - int doubledCap = ((PlatformMemoryUtils.Capacity(MemPtr) + 16) << 1) - 16; - - if (doubledCap > cap) - cap = doubledCap; - - PlatformMemoryUtils.ReallocateUnpooled(MemPtr, cap); - } - - /** <inheritdoc /> */ - public override void Release() - { - PlatformMemoryUtils.ReleaseUnpooled(MemPtr); - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageFilterHolder.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageFilterHolder.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageFilterHolder.cs deleted file mode 100644 index 21c66bf..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessageFilterHolder.cs +++ /dev/null @@ -1,179 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Messaging -{ - using System; - using System.Diagnostics; - using Apache.Ignite.Core.Impl.Common; - using Apache.Ignite.Core.Impl.Handle; - using Apache.Ignite.Core.Impl.Portable; - using Apache.Ignite.Core.Impl.Portable.IO; - using Apache.Ignite.Core.Impl.Resource; - using Apache.Ignite.Core.Messaging; - using Apache.Ignite.Core.Portable; - - /// <summary> - /// Non-generic portable filter wrapper. - /// </summary> - internal class MessageFilterHolder : IPortableWriteAware, IHandle - { - /** Invoker function that takes key and value and invokes wrapped IMessageFilter */ - private readonly Func<Guid, object, bool> _invoker; - - /** Current Ignite instance. */ - private readonly Ignite _ignite; - - /** Underlying filter. */ - private readonly object _filter; - - /// <summary> - /// Initializes a new instance of the <see cref="MessageFilterHolder" /> class. - /// </summary> - /// <param name="grid">Grid.</param> - /// <param name="filter">The <see cref="IMessageFilter{T}" /> to wrap.</param> - /// <param name="invoker">The invoker func that takes key and value and invokes wrapped IMessageFilter.</param> - private MessageFilterHolder(Ignite grid, object filter, Func<Guid, object, bool> invoker) - { - Debug.Assert(filter != null); - Debug.Assert(invoker != null); - - _invoker = invoker; - - _filter = filter; - - // 1. Set fields. - Debug.Assert(grid != null); - - _ignite = grid; - _invoker = invoker; - - // 2. Perform injections. - ResourceProcessor.Inject(filter, grid); - } - - /// <summary> - /// Invoke the filter. - /// </summary> - /// <param name="input">Input.</param> - /// <returns></returns> - public int Invoke(IPortableStream input) - { - var rawReader = _ignite.Marshaller.StartUnmarshal(input).RawReader(); - - var nodeId = rawReader.ReadGuid(); - - Debug.Assert(nodeId != null); - - return _invoker(nodeId.Value, rawReader.ReadObject<object>()) ? 1 : 0; - } - - /// <summary> - /// Wrapped <see cref="IMessageFilter{T}" />. - /// </summary> - public object Filter - { - get { return _filter; } - } - - /// <summary> - /// Destroy callback. - /// </summary> - public Action DestroyAction { private get; set; } - - /** <inheritDoc /> */ - public void Release() - { - if (DestroyAction != null) - DestroyAction(); - } - - /** <inheritDoc /> */ - public bool Released - { - get { return false; } // Multiple releases are allowed. - } - - /// <summary> - /// Creates local holder instance. - /// </summary> - /// <param name="grid">Ignite instance.</param> - /// <param name="filter">Filter.</param> - /// <returns> - /// New instance of <see cref="MessageFilterHolder" /> - /// </returns> - public static MessageFilterHolder CreateLocal<T>(Ignite grid, IMessageFilter<T> filter) - { - Debug.Assert(filter != null); - - return new MessageFilterHolder(grid, filter, (id, msg) => filter.Invoke(id, (T)msg)); - } - - /// <summary> - /// Creates remote holder instance. - /// </summary> - /// <param name="grid">Grid.</param> - /// <param name="memPtr">Memory pointer.</param> - /// <returns>Deserialized instance of <see cref="MessageFilterHolder"/></returns> - public static MessageFilterHolder CreateRemote(Ignite grid, long memPtr) - { - Debug.Assert(grid != null); - - var stream = IgniteManager.Memory.Get(memPtr).Stream(); - - var holder = grid.Marshaller.Unmarshal<MessageFilterHolder>(stream); - - return holder; - } - - /// <summary> - /// Gets the invoker func. - /// </summary> - private static Func<Guid, object, bool> GetInvoker(object pred) - { - var func = DelegateTypeDescriptor.GetMessageFilter(pred.GetType()); - - return (id, msg) => func(pred, id, msg); - } - - /** <inheritdoc /> */ - public void WritePortable(IPortableWriter writer) - { - var writer0 = (PortableWriterImpl)writer.RawWriter(); - - writer0.DetachNext(); - PortableUtils.WritePortableOrSerializable(writer0, Filter); - } - - /// <summary> - /// Initializes a new instance of the <see cref="MessageFilterHolder"/> class. - /// </summary> - /// <param name="reader">The reader.</param> - public MessageFilterHolder(IPortableReader reader) - { - var reader0 = (PortableReaderImpl)reader.RawReader(); - - _filter = PortableUtils.ReadPortableOrSerializable<object>(reader0); - - _invoker = GetInvoker(_filter); - - _ignite = reader0.Marshaller.Ignite; - - ResourceProcessor.Inject(_filter, _ignite); - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/Messaging.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/Messaging.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/Messaging.cs deleted file mode 100644 index e8c4b4b..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/Messaging.cs +++ /dev/null @@ -1,262 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Messaging -{ - using System; - using System.Collections; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using Apache.Ignite.Core.Cluster; - using Apache.Ignite.Core.Common; - using Apache.Ignite.Core.Impl.Collections; - using Apache.Ignite.Core.Impl.Common; - using Apache.Ignite.Core.Impl.Portable; - using Apache.Ignite.Core.Impl.Resource; - using Apache.Ignite.Core.Impl.Unmanaged; - using Apache.Ignite.Core.Messaging; - using UU = Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils; - - /// <summary> - /// Messaging functionality. - /// </summary> - internal class Messaging : PlatformTarget, IMessaging - { - /// <summary> - /// Opcodes. - /// </summary> - private enum Op - { - LocalListen = 1, - RemoteListen = 2, - Send = 3, - SendMulti = 4, - SendOrdered = 5, - StopLocalListen = 6, - StopRemoteListen = 7 - } - - /** Map from user (func+topic) -> id, needed for unsubscription. */ - private readonly MultiValueDictionary<KeyValuePair<object, object>, long> _funcMap = - new MultiValueDictionary<KeyValuePair<object, object>, long>(); - - /** Grid */ - private readonly Ignite _ignite; - - /// <summary> - /// Initializes a new instance of the <see cref="Messaging" /> class. - /// </summary> - /// <param name="target">Target.</param> - /// <param name="marsh">Marshaller.</param> - /// <param name="prj">Cluster group.</param> - public Messaging(IUnmanagedTarget target, PortableMarshaller marsh, IClusterGroup prj) - : base(target, marsh) - { - Debug.Assert(prj != null); - - ClusterGroup = prj; - - _ignite = (Ignite) prj.Ignite; - } - - /** <inheritdoc /> */ - public IClusterGroup ClusterGroup { get; private set; } - - /** <inheritdoc /> */ - public void Send(object message, object topic = null) - { - IgniteArgumentCheck.NotNull(message, "message"); - - DoOutOp((int) Op.Send, topic, message); - } - - /** <inheritdoc /> */ - public void Send(IEnumerable messages, object topic = null) - { - IgniteArgumentCheck.NotNull(messages, "messages"); - - DoOutOp((int) Op.SendMulti, writer => - { - writer.Write(topic); - - WriteEnumerable(writer, messages.OfType<object>()); - }); - } - - /** <inheritdoc /> */ - public void SendOrdered(object message, object topic = null, TimeSpan? timeout = null) - { - IgniteArgumentCheck.NotNull(message, "message"); - - DoOutOp((int) Op.SendOrdered, writer => - { - writer.Write(topic); - writer.Write(message); - - writer.WriteLong((long)(timeout == null ? 0 : timeout.Value.TotalMilliseconds)); - }); - } - - /** <inheritdoc /> */ - public void LocalListen<T>(IMessageFilter<T> filter, object topic = null) - { - IgniteArgumentCheck.NotNull(filter, "filter"); - - ResourceProcessor.Inject(filter, _ignite); - - lock (_funcMap) - { - var key = GetKey(filter, topic); - - MessageFilterHolder filter0 = MessageFilterHolder.CreateLocal(_ignite, filter); - - var filterHnd = _ignite.HandleRegistry.Allocate(filter0); - - filter0.DestroyAction = () => - { - lock (_funcMap) - { - _funcMap.Remove(key, filterHnd); - } - }; - - try - { - DoOutOp((int) Op.LocalListen, writer => - { - writer.WriteLong(filterHnd); - writer.Write(topic); - }); - } - catch (Exception) - { - _ignite.HandleRegistry.Release(filterHnd); - - throw; - } - - _funcMap.Add(key, filterHnd); - } - } - - /** <inheritdoc /> */ - public void StopLocalListen<T>(IMessageFilter<T> filter, object topic = null) - { - IgniteArgumentCheck.NotNull(filter, "filter"); - - long filterHnd; - bool removed; - - lock (_funcMap) - { - removed = _funcMap.TryRemove(GetKey(filter, topic), out filterHnd); - } - - if (removed) - { - DoOutOp((int) Op.StopLocalListen, writer => - { - writer.WriteLong(filterHnd); - writer.Write(topic); - }); - } - } - - /** <inheritdoc /> */ - public Guid RemoteListen<T>(IMessageFilter<T> filter, object topic = null) - { - IgniteArgumentCheck.NotNull(filter, "filter"); - - var filter0 = MessageFilterHolder.CreateLocal(_ignite, filter); - var filterHnd = _ignite.HandleRegistry.AllocateSafe(filter0); - - try - { - Guid id = Guid.Empty; - - DoOutInOp((int) Op.RemoteListen, writer => - { - writer.Write(filter0); - writer.WriteLong(filterHnd); - writer.Write(topic); - }, - input => - { - var id0 = Marshaller.StartUnmarshal(input).RawReader().ReadGuid(); - - Debug.Assert(IsAsync || id0.HasValue); - - if (id0.HasValue) - id = id0.Value; - }); - - return id; - } - catch (Exception) - { - _ignite.HandleRegistry.Release(filterHnd); - - throw; - } - } - - /** <inheritdoc /> */ - public void StopRemoteListen(Guid opId) - { - DoOutOp((int) Op.StopRemoteListen, writer => - { - writer.WriteGuid(opId); - }); - } - - /** <inheritdoc /> */ - public virtual IMessaging WithAsync() - { - return new MessagingAsync(UU.MessagingWithASync(Target), Marshaller, ClusterGroup); - } - - /** <inheritdoc /> */ - public virtual bool IsAsync - { - get { return false; } - } - - /** <inheritdoc /> */ - public virtual IFuture GetFuture() - { - throw IgniteUtils.GetAsyncModeDisabledException(); - } - - /** <inheritdoc /> */ - public virtual IFuture<TResult> GetFuture<TResult>() - { - throw IgniteUtils.GetAsyncModeDisabledException(); - } - - /// <summary> - /// Gets the key for user-provided filter and topic. - /// </summary> - /// <param name="filter">Filter.</param> - /// <param name="topic">Topic.</param> - /// <returns>Compound dictionary key.</returns> - private static KeyValuePair<object, object> GetKey(object filter, object topic) - { - return new KeyValuePair<object, object>(filter, topic); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessagingAsync.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessagingAsync.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessagingAsync.cs deleted file mode 100644 index e899d4e..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Messaging/MessagingAsync.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Messaging -{ - using Apache.Ignite.Core.Cluster; - using Apache.Ignite.Core.Common; - using Apache.Ignite.Core.Impl.Portable; - using Apache.Ignite.Core.Impl.Unmanaged; - using Apache.Ignite.Core.Messaging; - using UU = Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils; - - /// <summary> - /// Async messaging implementation. - /// </summary> - internal class MessagingAsync : Messaging - { - /// <summary> - /// Initializes a new instance of the <see cref="MessagingAsync" /> class. - /// </summary> - /// <param name="target">Target.</param> - /// <param name="marsh">Marshaller.</param> - /// <param name="prj">Cluster group.</param> - public MessagingAsync(IUnmanagedTarget target, PortableMarshaller marsh, - IClusterGroup prj) : base(target, marsh, prj) - { - // No-op. - } - - /** <inheritdoc /> */ - public override IMessaging WithAsync() - { - return this; - } - - /** <inheritdoc /> */ - public override bool IsAsync - { - get { return true; } - } - - /** <inheritdoc /> */ - public override IFuture GetFuture() - { - return GetFuture<object>(); - } - - /** <inheritdoc /> */ - public override IFuture<T> GetFuture<T>() - { - return GetFuture<T>((futId, futTyp) => UU.TargetListenFuture(Target, futId, futTyp)); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/NativeMethods.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/NativeMethods.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/NativeMethods.cs deleted file mode 100644 index 6e25e7e..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/NativeMethods.cs +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl -{ - using System; - using System.Runtime.InteropServices; - - /// <summary> - /// Native methods. - /// </summary> - internal static class NativeMethods - { - /// <summary> - /// Load DLL with WinAPI. - /// </summary> - /// <param name="path">Path to dll.</param> - /// <returns></returns> - [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi, BestFitMapping = false, - ThrowOnUnmappableChar = true)] - internal static extern IntPtr LoadLibrary(string path); - - /// <summary> - /// Get procedure address with WinAPI. - /// </summary> - /// <param name="ptr">DLL pointer.</param> - /// <param name="name">Procedure name.</param> - /// <returns>Procedure address.</returns> - [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi, BestFitMapping = false, - ThrowOnUnmappableChar = true)] - internal static extern IntPtr GetProcAddress(IntPtr ptr, string name); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/PlatformTarget.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/PlatformTarget.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/PlatformTarget.cs deleted file mode 100644 index 67f631a..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/PlatformTarget.cs +++ /dev/null @@ -1,715 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl -{ - using System; - using System.Collections.Generic; - using System.Diagnostics.CodeAnalysis; - using System.IO; - using Apache.Ignite.Core.Common; - using Apache.Ignite.Core.Impl.Common; - using Apache.Ignite.Core.Impl.Memory; - using Apache.Ignite.Core.Impl.Portable; - using Apache.Ignite.Core.Impl.Portable.IO; - using Apache.Ignite.Core.Impl.Portable.Metadata; - using Apache.Ignite.Core.Impl.Unmanaged; - using Apache.Ignite.Core.Portable; - using UU = Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils; - - /// <summary> - /// Base class for interop targets. - /// </summary> - [SuppressMessage("ReSharper", "LocalVariableHidesMember")] - internal abstract class PlatformTarget - { - /** */ - protected const int True = 1; - - /** */ - private const int OpMeta = -1; - - /** */ - public const int OpNone = -2; - - /** */ - private static readonly Dictionary<Type, FutureType> IgniteFutureTypeMap - = new Dictionary<Type, FutureType> - { - {typeof(bool), FutureType.Bool}, - {typeof(byte), FutureType.Byte}, - {typeof(char), FutureType.Char}, - {typeof(double), FutureType.Double}, - {typeof(float), FutureType.Float}, - {typeof(int), FutureType.Int}, - {typeof(long), FutureType.Long}, - {typeof(short), FutureType.Short} - }; - - /** Unmanaged target. */ - private readonly IUnmanagedTarget _target; - - /** Marshaller. */ - private readonly PortableMarshaller _marsh; - - /// <summary> - /// Constructor. - /// </summary> - /// <param name="target">Target.</param> - /// <param name="marsh">Marshaller.</param> - protected PlatformTarget(IUnmanagedTarget target, PortableMarshaller marsh) - { - _target = target; - _marsh = marsh; - } - - /// <summary> - /// Unmanaged target. - /// </summary> - internal IUnmanagedTarget Target - { - get { return _target; } - } - - /// <summary> - /// Marshaller. - /// </summary> - internal PortableMarshaller Marshaller - { - get { return _marsh; } - } - - #region Static Helpers - - /// <summary> - /// Write collection. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="vals">Values.</param> - /// <returns>The same writer for chaining.</returns> - protected static PortableWriterImpl WriteCollection<T>(PortableWriterImpl writer, ICollection<T> vals) - { - return WriteCollection<T, T>(writer, vals, null); - } - - /// <summary> - /// Write nullable collection. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="vals">Values.</param> - /// <returns>The same writer for chaining.</returns> - protected static PortableWriterImpl WriteNullableCollection<T>(PortableWriterImpl writer, ICollection<T> vals) - { - return WriteNullable(writer, vals, WriteCollection); - } - - /// <summary> - /// Write collection. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="vals">Values.</param> - /// <param name="selector">A transform function to apply to each element.</param> - /// <returns>The same writer for chaining.</returns> - protected static PortableWriterImpl WriteCollection<T1, T2>(PortableWriterImpl writer, - ICollection<T1> vals, Func<T1, T2> selector) - { - writer.WriteInt(vals.Count); - - if (selector == null) - { - foreach (var val in vals) - writer.Write(val); - } - else - { - foreach (var val in vals) - writer.Write(selector(val)); - } - - return writer; - } - - /// <summary> - /// Write enumerable. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="vals">Values.</param> - /// <returns>The same writer for chaining.</returns> - protected static PortableWriterImpl WriteEnumerable<T>(PortableWriterImpl writer, IEnumerable<T> vals) - { - return WriteEnumerable<T, T>(writer, vals, null); - } - - /// <summary> - /// Write enumerable. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="vals">Values.</param> - /// <param name="selector">A transform function to apply to each element.</param> - /// <returns>The same writer for chaining.</returns> - protected static PortableWriterImpl WriteEnumerable<T1, T2>(PortableWriterImpl writer, - IEnumerable<T1> vals, Func<T1, T2> selector) - { - var col = vals as ICollection<T1>; - - if (col != null) - return WriteCollection(writer, col, selector); - - var stream = writer.Stream; - - var pos = stream.Position; - - stream.Seek(4, SeekOrigin.Current); - - var size = 0; - - if (selector == null) - { - foreach (var val in vals) - { - writer.Write(val); - - size++; - } - } - else - { - foreach (var val in vals) - { - writer.Write(selector(val)); - - size++; - } - } - - stream.WriteInt(pos, size); - - return writer; - } - - /// <summary> - /// Write dictionary. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="vals">Values.</param> - /// <returns>The same writer.</returns> - protected static PortableWriterImpl WriteDictionary<T1, T2>(PortableWriterImpl writer, - IDictionary<T1, T2> vals) - { - writer.WriteInt(vals.Count); - - foreach (KeyValuePair<T1, T2> pair in vals) - { - writer.Write(pair.Key); - writer.Write(pair.Value); - } - - return writer; - } - - /// <summary> - /// Write a nullable item. - /// </summary> - /// <param name="writer">Portable writer.</param> - /// <param name="item">Item.</param> - /// <param name="writeItem">Write action to perform on item when it is not null.</param> - /// <returns>The same writer for chaining.</returns> - protected static PortableWriterImpl WriteNullable<T>(PortableWriterImpl writer, T item, - Func<PortableWriterImpl, T, PortableWriterImpl> writeItem) - { - if (item == null) - { - writer.WriteBoolean(false); - - return writer; - } - - writer.WriteBoolean(true); - - return writeItem(writer, item); - } - - #endregion - - #region OUT operations - - /// <summary> - /// Perform out operation. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="action">Action to be performed on the stream.</param> - /// <returns></returns> - protected long DoOutOp(int type, Action<IPortableStream> action) - { - using (var stream = IgniteManager.Memory.Allocate().Stream()) - { - action(stream); - - return UU.TargetInStreamOutLong(_target, type, stream.SynchronizeOutput()); - } - } - - /// <summary> - /// Perform out operation. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="action">Action to be performed on the stream.</param> - /// <returns></returns> - protected long DoOutOp(int type, Action<PortableWriterImpl> action) - { - using (var stream = IgniteManager.Memory.Allocate().Stream()) - { - var writer = _marsh.StartMarshal(stream); - - action(writer); - - FinishMarshal(writer); - - return UU.TargetInStreamOutLong(_target, type, stream.SynchronizeOutput()); - } - } - - /// <summary> - /// Perform simple output operation accepting single argument. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="val1">Value.</param> - /// <returns>Result.</returns> - protected long DoOutOp<T1>(int type, T1 val1) - { - return DoOutOp(type, writer => - { - writer.Write(val1); - }); - } - - /// <summary> - /// Perform simple output operation accepting two arguments. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="val1">Value 1.</param> - /// <param name="val2">Value 2.</param> - /// <returns>Result.</returns> - protected long DoOutOp<T1, T2>(int type, T1 val1, T2 val2) - { - return DoOutOp(type, writer => - { - writer.Write(val1); - writer.Write(val2); - }); - } - - /// <summary> - /// Perform simple output operation accepting three arguments. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="val1">Value 1.</param> - /// <param name="val2">Value 2.</param> - /// <param name="val3">Value 3.</param> - /// <returns>Result.</returns> - protected long DoOutOp<T1, T2, T3>(int type, T1 val1, T2 val2, T3 val3) - { - return DoOutOp(type, writer => - { - writer.Write(val1); - writer.Write(val2); - writer.Write(val3); - }); - } - - #endregion - - #region IN operations - - /// <summary> - /// Perform in operation. - /// </summary> - /// <param name="type">Type.</param> - /// <param name="action">Action.</param> - protected void DoInOp(int type, Action<IPortableStream> action) - { - using (var stream = IgniteManager.Memory.Allocate().Stream()) - { - UU.TargetOutStream(_target, type, stream.MemoryPointer); - - stream.SynchronizeInput(); - - action(stream); - } - } - - /// <summary> - /// Perform in operation. - /// </summary> - /// <param name="type">Type.</param> - /// <param name="action">Action.</param> - /// <returns>Result.</returns> - protected T DoInOp<T>(int type, Func<IPortableStream, T> action) - { - using (var stream = IgniteManager.Memory.Allocate().Stream()) - { - UU.TargetOutStream(_target, type, stream.MemoryPointer); - - stream.SynchronizeInput(); - - return action(stream); - } - } - - /// <summary> - /// Perform simple in operation returning immediate result. - /// </summary> - /// <param name="type">Type.</param> - /// <returns>Result.</returns> - protected T DoInOp<T>(int type) - { - using (var stream = IgniteManager.Memory.Allocate().Stream()) - { - UU.TargetOutStream(_target, type, stream.MemoryPointer); - - stream.SynchronizeInput(); - - return Unmarshal<T>(stream); - } - } - - #endregion - - #region OUT-IN operations - - /// <summary> - /// Perform out-in operation. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="outAction">Out action.</param> - /// <param name="inAction">In action.</param> - protected void DoOutInOp(int type, Action<PortableWriterImpl> outAction, Action<IPortableStream> inAction) - { - using (PlatformMemoryStream outStream = IgniteManager.Memory.Allocate().Stream()) - { - using (PlatformMemoryStream inStream = IgniteManager.Memory.Allocate().Stream()) - { - PortableWriterImpl writer = _marsh.StartMarshal(outStream); - - outAction(writer); - - FinishMarshal(writer); - - UU.TargetInStreamOutStream(_target, type, outStream.SynchronizeOutput(), inStream.MemoryPointer); - - inStream.SynchronizeInput(); - - inAction(inStream); - } - } - } - - /// <summary> - /// Perform out-in operation. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="outAction">Out action.</param> - /// <param name="inAction">In action.</param> - /// <returns>Result.</returns> - protected TR DoOutInOp<TR>(int type, Action<PortableWriterImpl> outAction, Func<IPortableStream, TR> inAction) - { - using (PlatformMemoryStream outStream = IgniteManager.Memory.Allocate().Stream()) - { - using (PlatformMemoryStream inStream = IgniteManager.Memory.Allocate().Stream()) - { - PortableWriterImpl writer = _marsh.StartMarshal(outStream); - - outAction(writer); - - FinishMarshal(writer); - - UU.TargetInStreamOutStream(_target, type, outStream.SynchronizeOutput(), inStream.MemoryPointer); - - inStream.SynchronizeInput(); - - return inAction(inStream); - } - } - } - - /// <summary> - /// Perform out-in operation. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="outAction">Out action.</param> - /// <param name="inAction">In action.</param> - /// <param name="arg">Argument.</param> - /// <returns>Result.</returns> - protected unsafe TR DoOutInOp<TR>(int type, Action<PortableWriterImpl> outAction, Func<IPortableStream, TR> inAction, void* arg) - { - using (PlatformMemoryStream outStream = IgniteManager.Memory.Allocate().Stream()) - { - using (PlatformMemoryStream inStream = IgniteManager.Memory.Allocate().Stream()) - { - PortableWriterImpl writer = _marsh.StartMarshal(outStream); - - outAction(writer); - - FinishMarshal(writer); - - UU.TargetInObjectStreamOutStream(_target, type, arg, outStream.SynchronizeOutput(), inStream.MemoryPointer); - - inStream.SynchronizeInput(); - - return inAction(inStream); - } - } - } - - /// <summary> - /// Perform out-in operation. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="outAction">Out action.</param> - /// <returns>Result.</returns> - protected TR DoOutInOp<TR>(int type, Action<PortableWriterImpl> outAction) - { - using (PlatformMemoryStream outStream = IgniteManager.Memory.Allocate().Stream()) - { - using (PlatformMemoryStream inStream = IgniteManager.Memory.Allocate().Stream()) - { - PortableWriterImpl writer = _marsh.StartMarshal(outStream); - - outAction(writer); - - FinishMarshal(writer); - - UU.TargetInStreamOutStream(_target, type, outStream.SynchronizeOutput(), inStream.MemoryPointer); - - inStream.SynchronizeInput(); - - return Unmarshal<TR>(inStream); - } - } - } - - /// <summary> - /// Perform simple out-in operation accepting single argument. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="val">Value.</param> - /// <returns>Result.</returns> - protected TR DoOutInOp<T1, TR>(int type, T1 val) - { - using (PlatformMemoryStream outStream = IgniteManager.Memory.Allocate().Stream()) - { - using (PlatformMemoryStream inStream = IgniteManager.Memory.Allocate().Stream()) - { - PortableWriterImpl writer = _marsh.StartMarshal(outStream); - - writer.WriteObject(val); - - FinishMarshal(writer); - - UU.TargetInStreamOutStream(_target, type, outStream.SynchronizeOutput(), inStream.MemoryPointer); - - inStream.SynchronizeInput(); - - return Unmarshal<TR>(inStream); - } - } - } - - /// <summary> - /// Perform simple out-in operation accepting two arguments. - /// </summary> - /// <param name="type">Operation type.</param> - /// <param name="val1">Value.</param> - /// <param name="val2">Value.</param> - /// <returns>Result.</returns> - protected TR DoOutInOp<T1, T2, TR>(int type, T1 val1, T2 val2) - { - using (PlatformMemoryStream outStream = IgniteManager.Memory.Allocate().Stream()) - { - using (PlatformMemoryStream inStream = IgniteManager.Memory.Allocate().Stream()) - { - PortableWriterImpl writer = _marsh.StartMarshal(outStream); - - writer.WriteObject(val1); - writer.WriteObject(val2); - - FinishMarshal(writer); - - UU.TargetInStreamOutStream(_target, type, outStream.SynchronizeOutput(), inStream.MemoryPointer); - - inStream.SynchronizeInput(); - - return Unmarshal<TR>(inStream); - } - } - } - - #endregion - - #region Miscelanneous - - /// <summary> - /// Finish marshaling. - /// </summary> - /// <param name="writer">Portable writer.</param> - internal void FinishMarshal(PortableWriterImpl writer) - { - _marsh.FinishMarshal(writer); - } - - /// <summary> - /// Put metadata to Grid. - /// </summary> - /// <param name="metas">Metadatas.</param> - internal void PutMetadata(IDictionary<int, IPortableMetadata> metas) - { - DoOutOp(OpMeta, stream => - { - PortableWriterImpl metaWriter = _marsh.StartMarshal(stream); - - metaWriter.WriteInt(metas.Count); - - foreach (var meta in metas.Values) - { - PortableMetadataImpl meta0 = (PortableMetadataImpl)meta; - - metaWriter.WriteInt(meta0.TypeId); - metaWriter.WriteString(meta0.TypeName); - metaWriter.WriteString(meta0.AffinityKeyFieldName); - - IDictionary<string, int> fields = meta0.FieldsMap(); - - metaWriter.WriteInt(fields.Count); - - foreach (var field in fields) - { - metaWriter.WriteString(field.Key); - metaWriter.WriteInt(field.Value); - } - } - - _marsh.FinishMarshal(metaWriter); - }); - - _marsh.OnMetadataSent(metas); - } - - /// <summary> - /// Unmarshal object using the given stream. - /// </summary> - /// <param name="stream">Stream.</param> - /// <returns>Unmarshalled object.</returns> - protected virtual T Unmarshal<T>(IPortableStream stream) - { - return _marsh.Unmarshal<T>(stream); - } - - /// <summary> - /// Creates a future and starts listening. - /// </summary> - /// <typeparam name="T">Future result type</typeparam> - /// <param name="listenAction">The listen action.</param> - /// <param name="keepPortable">Keep portable flag, only applicable to object futures. False by default.</param> - /// <param name="convertFunc">The function to read future result from stream.</param> - /// <returns>Created future.</returns> - protected IFuture<T> GetFuture<T>(Action<long, int> listenAction, bool keepPortable = false, - Func<PortableReaderImpl, T> convertFunc = null) - { - var futType = FutureType.Object; - - var type = typeof(T); - - if (type.IsPrimitive) - IgniteFutureTypeMap.TryGetValue(type, out futType); - - var fut = convertFunc == null && futType != FutureType.Object - ? new Future<T>() - : new Future<T>(new FutureConverter<T>(_marsh, keepPortable, convertFunc)); - - var futHnd = _marsh.Ignite.HandleRegistry.Allocate(fut); - - listenAction(futHnd, (int)futType); - - return fut; - } - - #endregion - } - - /// <summary> - /// PlatformTarget with IDisposable pattern. - /// </summary> - internal abstract class PlatformDisposableTarget : PlatformTarget, IDisposable - { - /** Disposed flag. */ - private volatile bool _disposed; - - /// <summary> - /// Constructor. - /// </summary> - /// <param name="target">Target.</param> - /// <param name="marsh">Marshaller.</param> - protected PlatformDisposableTarget(IUnmanagedTarget target, PortableMarshaller marsh) : base(target, marsh) - { - // No-op. - } - - /** <inheritdoc /> */ - public void Dispose() - { - lock (this) - { - if (_disposed) - return; - - Dispose(true); - - GC.SuppressFinalize(this); - - _disposed = true; - } - } - - /// <summary> - /// Releases unmanaged and - optionally - managed resources. - /// </summary> - /// <param name="disposing"> - /// <c>true</c> when called from Dispose; <c>false</c> when called from finalizer. - /// </param> - protected virtual void Dispose(bool disposing) - { - Target.Dispose(); - } - - /// <summary> - /// Throws <see cref="ObjectDisposedException"/> if this instance has been disposed. - /// </summary> - protected void ThrowIfDisposed() - { - if (_disposed) - throw new ObjectDisposedException(GetType().Name, "Object has been disposed."); - } - - /// <summary> - /// Gets a value indicating whether this instance is disposed. - /// </summary> - protected bool IsDisposed - { - get { return _disposed; } - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableSystemTypeSerializer.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableSystemTypeSerializer.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableSystemTypeSerializer.cs deleted file mode 100644 index 3fee3ca..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableSystemTypeSerializer.cs +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Portable -{ - using Apache.Ignite.Core.Portable; - - /// <summary> - /// Serializer for system types that can create instances directly from a stream and does not support handles. - /// </summary> - internal interface IPortableSystemTypeSerializer : IPortableSerializer - { - /// <summary> - /// Reads the instance from a reader. - /// </summary> - /// <param name="reader">The reader.</param> - /// <returns>Deserialized instance.</returns> - object ReadInstance(PortableReaderImpl reader); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableTypeDescriptor.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableTypeDescriptor.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableTypeDescriptor.cs deleted file mode 100644 index 4a4f0dc..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableTypeDescriptor.cs +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Portable -{ - using System; - using Apache.Ignite.Core.Portable; - - /// <summary> - /// Type descriptor. - /// </summary> - internal interface IPortableTypeDescriptor - { - /// <summary> - /// Type. - /// </summary> - Type Type - { - get; - } - - /// <summary> - /// Type ID. - /// </summary> - int TypeId - { - get; - } - - /// <summary> - /// Type name. - /// </summary> - string TypeName - { - get; - } - - /// <summary> - /// User type flag. - /// </summary> - bool UserType - { - get; - } - - /// <summary> - /// Metadata enabled flag. - /// </summary> - bool MetadataEnabled - { - get; - } - - /// <summary> - /// Whether to cache deserialized value in IPortableObject - /// </summary> - bool KeepDeserialized - { - get; - } - - /// <summary> - /// Name converter. - /// </summary> - IPortableNameMapper NameConverter - { - get; - } - - /// <summary> - /// Mapper. - /// </summary> - IPortableIdMapper Mapper - { - get; - } - - /// <summary> - /// Serializer. - /// </summary> - IPortableSerializer Serializer - { - get; - } - - /// <summary> - /// Affinity key field name. - /// </summary> - string AffinityKeyFieldName - { - get; - } - - /// <summary> - /// Typed handler. - /// </summary> - object TypedHandler - { - get; - } - - /// <summary> - /// Untyped handler. - /// </summary> - PortableSystemWriteDelegate UntypedHandler - { - get; - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableWriteAware.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableWriteAware.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableWriteAware.cs deleted file mode 100644 index d3c1521..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/IPortableWriteAware.cs +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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. - */ - -namespace Apache.Ignite.Core.Impl.Portable -{ - using Apache.Ignite.Core.Portable; - - /// <summary> - /// Represents an object that can write itself to a portable writer. - /// </summary> - internal interface IPortableWriteAware - { - /// <summary> - /// Writes this object to the given writer. - /// </summary> - /// <param name="writer">Writer.</param> - /// <exception cref="System.IO.IOException">If write failed.</exception> - void WritePortable(IPortableWriter writer); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs deleted file mode 100644 index 8111117..0000000 --- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Impl/Portable/Io/IPortableStream.cs +++ /dev/null @@ -1,320 +0,0 @@ -/* - * 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. - */ - - -namespace Apache.Ignite.Core.Impl.Portable.IO -{ - using System; - using System.IO; - using System.Text; - - /// <summary> - /// Stream capable of working with portable objects. - /// </summary> - [CLSCompliant(false)] - public unsafe interface IPortableStream : IDisposable - { - /// <summary> - /// Write bool. - /// </summary> - /// <param name="val">Bool value.</param> - void WriteBool(bool val); - - /// <summary> - /// Read bool. - /// </summary> - /// <returns>Bool value.</returns> - bool ReadBool(); - - /// <summary> - /// Write bool array. - /// </summary> - /// <param name="val">Bool array.</param> - void WriteBoolArray(bool[] val); - - /// <summary> - /// Read bool array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Bool array.</returns> - bool[] ReadBoolArray(int cnt); - - /// <summary> - /// Write byte. - /// </summary> - /// <param name="val">Byte value.</param> - void WriteByte(byte val); - - /// <summary> - /// Read byte. - /// </summary> - /// <returns>Byte value.</returns> - byte ReadByte(); - - /// <summary> - /// Write byte array. - /// </summary> - /// <param name="val">Byte array.</param> - void WriteByteArray(byte[] val); - - /// <summary> - /// Read byte array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Byte array.</returns> - byte[] ReadByteArray(int cnt); - - /// <summary> - /// Write short. - /// </summary> - /// <param name="val">Short value.</param> - void WriteShort(short val); - - /// <summary> - /// Read short. - /// </summary> - /// <returns>Short value.</returns> - short ReadShort(); - - /// <summary> - /// Write short array. - /// </summary> - /// <param name="val">Short array.</param> - void WriteShortArray(short[] val); - - /// <summary> - /// Read short array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Short array.</returns> - short[] ReadShortArray(int cnt); - - /// <summary> - /// Write char. - /// </summary> - /// <param name="val">Char value.</param> - void WriteChar(char val); - - /// <summary> - /// Read char. - /// </summary> - /// <returns>Char value.</returns> - char ReadChar(); - - /// <summary> - /// Write char array. - /// </summary> - /// <param name="val">Char array.</param> - void WriteCharArray(char[] val); - - /// <summary> - /// Read char array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Char array.</returns> - char[] ReadCharArray(int cnt); - - /// <summary> - /// Write int. - /// </summary> - /// <param name="val">Int value.</param> - void WriteInt(int val); - - /// <summary> - /// Write int to specific position. - /// </summary> - /// <param name="writePos">Position.</param> - /// <param name="val">Value.</param> - void WriteInt(int writePos, int val); - - /// <summary> - /// Read int. - /// </summary> - /// <returns>Int value.</returns> - int ReadInt(); - - /// <summary> - /// Write int array. - /// </summary> - /// <param name="val">Int array.</param> - void WriteIntArray(int[] val); - - /// <summary> - /// Read int array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Int array.</returns> - int[] ReadIntArray(int cnt); - - /// <summary> - /// Write long. - /// </summary> - /// <param name="val">Long value.</param> - void WriteLong(long val); - - /// <summary> - /// Read long. - /// </summary> - /// <returns>Long value.</returns> - long ReadLong(); - - /// <summary> - /// Write long array. - /// </summary> - /// <param name="val">Long array.</param> - void WriteLongArray(long[] val); - - /// <summary> - /// Read long array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Long array.</returns> - long[] ReadLongArray(int cnt); - - /// <summary> - /// Write float. - /// </summary> - /// <param name="val">Float value.</param> - void WriteFloat(float val); - - /// <summary> - /// Read float. - /// </summary> - /// <returns>Float value.</returns> - float ReadFloat(); - - /// <summary> - /// Write float array. - /// </summary> - /// <param name="val">Float array.</param> - void WriteFloatArray(float[] val); - - /// <summary> - /// Read float array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Float array.</returns> - float[] ReadFloatArray(int cnt); - - /// <summary> - /// Write double. - /// </summary> - /// <param name="val">Double value.</param> - void WriteDouble(double val); - - /// <summary> - /// Read double. - /// </summary> - /// <returns>Double value.</returns> - double ReadDouble(); - - /// <summary> - /// Write double array. - /// </summary> - /// <param name="val">Double array.</param> - void WriteDoubleArray(double[] val); - - /// <summary> - /// Read double array. - /// </summary> - /// <param name="cnt">Count.</param> - /// <returns>Double array.</returns> - double[] ReadDoubleArray(int cnt); - - /// <summary> - /// Write string. - /// </summary> - /// <param name="chars">Characters.</param> - /// <param name="charCnt">Char count.</param> - /// <param name="byteCnt">Byte count.</param> - /// <param name="encoding">Encoding.</param> - /// <returns>Amounts of bytes written.</returns> - int WriteString(char* chars, int charCnt, int byteCnt, Encoding encoding); - - /// <summary> - /// Write arbitrary data. - /// </summary> - /// <param name="src">Source array.</param> - /// <param name="off">Offset</param> - /// <param name="cnt">Count.</param> - void Write(byte[] src, int off, int cnt); - - /// <summary> - /// Read arbitrary data. - /// </summary> - /// <param name="dest">Destination array.</param> - /// <param name="off">Offset.</param> - /// <param name="cnt">Count.</param> - /// <returns>Amount of bytes read.</returns> - void Read(byte[] dest, int off, int cnt); - - /// <summary> - /// Write arbitrary data. - /// </summary> - /// <param name="src">Source.</param> - /// <param name="cnt">Count.</param> - void Write(byte* src, int cnt); - - /// <summary> - /// Read arbitrary data. - /// </summary> - /// <param name="dest">Destination.</param> - /// <param name="cnt">Count.</param> - void Read(byte* dest, int cnt); - - /// <summary> - /// Position. - /// </summary> - int Position - { - get; - } - - /// <summary> - /// Gets remaining bytes in the stream. - /// </summary> - /// <returns>Remaining bytes.</returns> - int Remaining(); - - /// <summary> - /// Gets underlying array, avoiding copying if possible. - /// </summary> - /// <returns>Underlying array.</returns> - byte[] Array(); - - /// <summary> - /// Gets underlying data in a new array. - /// </summary> - /// <returns>New array with data.</returns> - byte[] ArrayCopy(); - - /// <summary> - /// Check whether array passed as argument is the same as the stream hosts. - /// </summary> - /// <param name="arr">Array.</param> - /// <returns><c>True</c> if they are same.</returns> - bool IsSameArray(byte[] arr); - - /// <summary> - /// Seek to the given positoin. - /// </summary> - /// <param name="offset">Offset.</param> - /// <param name="origin">Seek origin.</param> - /// <returns>Position.</returns> - int Seek(int offset, SeekOrigin origin); - } -}
