http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs deleted file mode 100644 index 8a738c2..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Portable/TypeResolver.cs +++ /dev/null @@ -1,231 +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 System.Collections.Generic; - using System.Diagnostics; - using System.Diagnostics.CodeAnalysis; - using System.Globalization; - using System.Linq; - using System.Reflection; - using System.Text.RegularExpressions; - - /// <summary> - /// Resolves types by name. - /// </summary> - internal class TypeResolver - { - /** Regex to parse generic types from portable configuration. Allows nested generics in type arguments. */ - private static readonly Regex GenericTypeRegex = - new Regex(@"([^`,\[\]]*)(?:`[0-9]+)?(?:\[((?:(?<br>\[)|(?<-br>\])|[^\[\]]*)+)\])?", RegexOptions.Compiled); - - /** Assemblies loaded in ReflectionOnly mode. */ - private readonly Dictionary<string, Assembly> _reflectionOnlyAssemblies = new Dictionary<string, Assembly>(); - - /// <summary> - /// Resolve type by name. - /// </summary> - /// <param name="typeName">Name of the type.</param> - /// <param name="assemblyName">Optional, name of the assembly.</param> - /// <returns> - /// Resolved type. - /// </returns> - public Type ResolveType(string typeName, string assemblyName = null) - { - Debug.Assert(!string.IsNullOrEmpty(typeName)); - - return ResolveType(assemblyName, typeName, AppDomain.CurrentDomain.GetAssemblies()) - ?? ResolveTypeInReferencedAssemblies(assemblyName, typeName); - } - - /// <summary> - /// Resolve type by name in specified assembly set. - /// </summary> - /// <param name="assemblyName">Name of the assembly.</param> - /// <param name="typeName">Name of the type.</param> - /// <param name="assemblies">Assemblies to look in.</param> - /// <returns> - /// Resolved type. - /// </returns> - private static Type ResolveType(string assemblyName, string typeName, ICollection<Assembly> assemblies) - { - return ResolveGenericType(assemblyName, typeName, assemblies) ?? - ResolveNonGenericType(assemblyName, typeName, assemblies); - } - - /// <summary> - /// Resolves non-generic type by searching provided assemblies. - /// </summary> - /// <param name="assemblyName">Name of the assembly.</param> - /// <param name="typeName">Name of the type.</param> - /// <param name="assemblies">The assemblies.</param> - /// <returns>Resolved type, or null.</returns> - private static Type ResolveNonGenericType(string assemblyName, string typeName, ICollection<Assembly> assemblies) - { - if (!string.IsNullOrEmpty(assemblyName)) - assemblies = assemblies - .Where(x => x.FullName == assemblyName || x.GetName().Name == assemblyName).ToArray(); - - if (!assemblies.Any()) - return null; - - // Trim assembly qualification - var commaIdx = typeName.IndexOf(','); - - if (commaIdx > 0) - typeName = typeName.Substring(0, commaIdx); - - return assemblies.Select(a => a.GetType(typeName, false, false)).FirstOrDefault(type => type != null); - } - - /// <summary> - /// Resolves the name of the generic type by resolving each generic arg separately - /// and substituting it's fully qualified name. - /// (Assembly.GetType finds generic types only when arguments are fully qualified). - /// </summary> - /// <param name="assemblyName">Name of the assembly.</param> - /// <param name="typeName">Name of the type.</param> - /// <param name="assemblies">Assemblies</param> - /// <returns>Fully qualified generic type name, or null if argument(s) could not be resolved.</returns> - private static Type ResolveGenericType(string assemblyName, string typeName, ICollection<Assembly> assemblies) - { - var match = GenericTypeRegex.Match(typeName); - - if (!match.Success || !match.Groups[2].Success) - return null; - - // Try to construct generic type; each generic arg can also be a generic type. - var genericArgs = GenericTypeRegex.Matches(match.Groups[2].Value) - .OfType<Match>().Select(m => m.Value).Where(v => !string.IsNullOrWhiteSpace(v)) - .Select(v => ResolveType(null, TrimBrackets(v), assemblies)).ToArray(); - - if (genericArgs.Any(x => x == null)) - return null; - - var genericType = ResolveNonGenericType(assemblyName, - string.Format(CultureInfo.InvariantCulture, "{0}`{1}", match.Groups[1].Value, genericArgs.Length), - assemblies); - - if (genericType == null) - return null; - - return genericType.MakeGenericType(genericArgs); - } - - /// <summary> - /// Trims the brackets from generic type arg. - /// </summary> - private static string TrimBrackets(string s) - { - return s.StartsWith("[", StringComparison.Ordinal) && s.EndsWith("]", StringComparison.Ordinal) - ? s.Substring(1, s.Length - 2) - : s; - } - - /// <summary> - /// Resolve type by name in non-loaded referenced assemblies. - /// </summary> - /// <param name="assemblyName">Name of the assembly.</param> - /// <param name="typeName">Name of the type.</param> - /// <returns> - /// Resolved type. - /// </returns> - private Type ResolveTypeInReferencedAssemblies(string assemblyName, string typeName) - { - ResolveEventHandler resolver = (sender, args) => GetReflectionOnlyAssembly(args.Name); - - AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += resolver; - - try - { - var result = ResolveType(assemblyName, typeName, GetNotLoadedReferencedAssemblies().ToArray()); - - if (result == null) - return null; - - // result is from ReflectionOnly assembly, load it properly into current domain - var asm = AppDomain.CurrentDomain.Load(result.Assembly.GetName()); - - return asm.GetType(result.FullName); - } - finally - { - AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= resolver; - } - } - - /// <summary> - /// Gets the reflection only assembly. - /// </summary> - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - private Assembly GetReflectionOnlyAssembly(string fullName) - { - Assembly result; - - if (!_reflectionOnlyAssemblies.TryGetValue(fullName, out result)) - { - try - { - result = Assembly.ReflectionOnlyLoad(fullName); - } - catch (Exception) - { - // Some assemblies may fail to load - result = null; - } - - _reflectionOnlyAssemblies[fullName] = result; - } - - return result; - } - - /// <summary> - /// Recursively gets all referenced assemblies for current app domain, excluding those that are loaded. - /// </summary> - private IEnumerable<Assembly> GetNotLoadedReferencedAssemblies() - { - var roots = new Stack<Assembly>(AppDomain.CurrentDomain.GetAssemblies()); - - var visited = new HashSet<string>(); - - var loaded = new HashSet<string>(roots.Select(x => x.FullName)); - - while (roots.Any()) - { - var asm = roots.Pop(); - - if (visited.Contains(asm.FullName)) - continue; - - if (!loaded.Contains(asm.FullName)) - yield return asm; - - visited.Add(asm.FullName); - - foreach (var refAsm in asm.GetReferencedAssemblies() - .Where(x => !visited.Contains(x.FullName)) - .Where(x => !loaded.Contains(x.FullName)) - .Select(x => GetReflectionOnlyAssembly(x.FullName)) - .Where(x => x != null)) - roots.Push(refAsm); - } - } - } -} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceContext.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceContext.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceContext.cs index f5674f3..2532b70 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceContext.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceContext.cs @@ -19,7 +19,7 @@ namespace Apache.Ignite.Core.Impl.Services { using System; using System.Diagnostics; - using Apache.Ignite.Core.Portable; + using Apache.Ignite.Core.Binary; using Apache.Ignite.Core.Services; /// <summary> @@ -31,7 +31,7 @@ namespace Apache.Ignite.Core.Impl.Services /// Initializes a new instance of the <see cref="ServiceContext"/> class. /// </summary> /// <param name="reader">The reader.</param> - public ServiceContext(IPortableRawReader reader) + public ServiceContext(IBinaryRawReader reader) { Debug.Assert(reader != null); http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceDescriptor.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceDescriptor.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceDescriptor.cs index 9bd9814..f2806ff 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceDescriptor.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceDescriptor.cs @@ -20,8 +20,8 @@ namespace Apache.Ignite.Core.Impl.Services using System; using System.Collections.Generic; using System.Diagnostics; + using Apache.Ignite.Core.Impl.Binary; using Apache.Ignite.Core.Impl.Collections; - using Apache.Ignite.Core.Impl.Portable; using Apache.Ignite.Core.Services; /// <summary> @@ -41,7 +41,7 @@ namespace Apache.Ignite.Core.Impl.Services /// <param name="name">Name.</param> /// <param name="reader">Reader.</param> /// <param name="services">Services.</param> - public ServiceDescriptor(string name, PortableReaderImpl reader, IServices services) + public ServiceDescriptor(string name, BinaryReader reader, IServices services) { Debug.Assert(reader != null); Debug.Assert(services != null); http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxySerializer.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxySerializer.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxySerializer.cs index e7af8da..e49fbf1 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxySerializer.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/ServiceProxySerializer.cs @@ -20,9 +20,9 @@ namespace Apache.Ignite.Core.Impl.Services using System; using System.Diagnostics; using System.Reflection; - using Apache.Ignite.Core.Impl.Portable; - using Apache.Ignite.Core.Impl.Portable.IO; - using Apache.Ignite.Core.Portable; + using Apache.Ignite.Core.Binary; + using Apache.Ignite.Core.Impl.Binary; + using Apache.Ignite.Core.Impl.Binary.IO; using Apache.Ignite.Core.Services; /// <summary> @@ -36,7 +36,7 @@ namespace Apache.Ignite.Core.Impl.Services /// <param name="writer">Writer.</param> /// <param name="method">Method.</param> /// <param name="arguments">Arguments.</param> - public static void WriteProxyMethod(PortableWriterImpl writer, MethodBase method, object[] arguments) + public static void WriteProxyMethod(BinaryWriter writer, MethodBase method, object[] arguments) { Debug.Assert(writer != null); Debug.Assert(method != null); @@ -62,12 +62,12 @@ namespace Apache.Ignite.Core.Impl.Services /// <param name="marsh">Marshaller.</param> /// <param name="mthdName">Method name.</param> /// <param name="mthdArgs">Method arguments.</param> - public static void ReadProxyMethod(IPortableStream stream, PortableMarshaller marsh, + public static void ReadProxyMethod(IBinaryStream stream, Marshaller marsh, out string mthdName, out object[] mthdArgs) { var reader = marsh.StartUnmarshal(stream); - var srvKeepPortable = reader.ReadBoolean(); + var srvKeepBinary = reader.ReadBoolean(); mthdName = reader.ReadString(); @@ -75,7 +75,7 @@ namespace Apache.Ignite.Core.Impl.Services { mthdArgs = new object[reader.ReadInt()]; - if (srvKeepPortable) + if (srvKeepBinary) reader = marsh.StartUnmarshal(stream, true); for (var i = 0; i < mthdArgs.Length; i++) @@ -92,7 +92,7 @@ namespace Apache.Ignite.Core.Impl.Services /// <param name="marsh">Marshaller.</param> /// <param name="methodResult">Method result.</param> /// <param name="invocationError">Method invocation error.</param> - public static void WriteInvocationResult(IPortableStream stream, PortableMarshaller marsh, object methodResult, + public static void WriteInvocationResult(IBinaryStream stream, Marshaller marsh, object methodResult, Exception invocationError) { Debug.Assert(stream != null); @@ -100,7 +100,7 @@ namespace Apache.Ignite.Core.Impl.Services var writer = marsh.StartMarshal(stream); - PortableUtils.WriteInvocationResult(writer, invocationError == null, invocationError ?? methodResult); + BinaryUtils.WriteInvocationResult(writer, invocationError == null, invocationError ?? methodResult); } /// <summary> @@ -108,31 +108,31 @@ namespace Apache.Ignite.Core.Impl.Services /// </summary> /// <param name="stream">Stream.</param> /// <param name="marsh">Marshaller.</param> - /// <param name="keepPortable">Portable flag.</param> + /// <param name="keepBinary">Binary flag.</param> /// <returns> /// Method invocation result, or exception in case of error. /// </returns> - public static object ReadInvocationResult(IPortableStream stream, PortableMarshaller marsh, bool keepPortable) + public static object ReadInvocationResult(IBinaryStream stream, Marshaller marsh, bool keepBinary) { Debug.Assert(stream != null); Debug.Assert(marsh != null); - var mode = keepPortable ? PortableMode.ForcePortable : PortableMode.Deserialize; + var mode = keepBinary ? BinaryMode.ForceBinary : BinaryMode.Deserialize; var reader = marsh.StartUnmarshal(stream, mode); object err; - var res = PortableUtils.ReadInvocationResult(reader, out err); + var res = BinaryUtils.ReadInvocationResult(reader, out err); if (err == null) return res; - var portErr = err as IPortableObject; + var binErr = err as IBinaryObject; - throw portErr != null - ? new ServiceInvocationException("Proxy method invocation failed with a portable error. " + - "Examine PortableCause for details.", portErr) + throw binErr != null + ? new ServiceInvocationException("Proxy method invocation failed with a binary error. " + + "Examine BinaryCause for details.", binErr) : new ServiceInvocationException("Proxy method invocation failed with an exception. " + "Examine InnerException for details.", (Exception) err); } http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/Services.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/Services.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/Services.cs index fe1a146..2360558 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/Services.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Services/Services.cs @@ -24,8 +24,8 @@ namespace Apache.Ignite.Core.Impl.Services using System.Reflection; using System.Threading.Tasks; using Apache.Ignite.Core.Cluster; + using Apache.Ignite.Core.Impl.Binary; using Apache.Ignite.Core.Impl.Common; - using Apache.Ignite.Core.Impl.Portable; using Apache.Ignite.Core.Impl.Unmanaged; using Apache.Ignite.Core.Services; using UU = Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils; @@ -53,11 +53,11 @@ namespace Apache.Ignite.Core.Impl.Services /** */ private readonly IClusterGroup _clusterGroup; - /** Invoker portable flag. */ - private readonly bool _keepPortable; + /** Invoker binary flag. */ + private readonly bool _keepBinary; - /** Server portable flag. */ - private readonly bool _srvKeepPortable; + /** Server binary flag. */ + private readonly bool _srvKeepBinary; /** Async instance. */ private readonly Lazy<Services> _asyncInstance; @@ -68,17 +68,17 @@ namespace Apache.Ignite.Core.Impl.Services /// <param name="target">Target.</param> /// <param name="marsh">Marshaller.</param> /// <param name="clusterGroup">Cluster group.</param> - /// <param name="keepPortable">Invoker portable flag.</param> - /// <param name="srvKeepPortable">Server portable flag.</param> - public Services(IUnmanagedTarget target, PortableMarshaller marsh, IClusterGroup clusterGroup, - bool keepPortable, bool srvKeepPortable) + /// <param name="keepBinary">Invoker binary flag.</param> + /// <param name="srvKeepBinary">Server binary flag.</param> + public Services(IUnmanagedTarget target, Marshaller marsh, IClusterGroup clusterGroup, + bool keepBinary, bool srvKeepBinary) : base(target, marsh) { Debug.Assert(clusterGroup != null); _clusterGroup = clusterGroup; - _keepPortable = keepPortable; - _srvKeepPortable = srvKeepPortable; + _keepBinary = keepBinary; + _srvKeepBinary = srvKeepBinary; _asyncInstance = new Lazy<Services>(() => new Services(this)); } @@ -90,26 +90,26 @@ namespace Apache.Ignite.Core.Impl.Services private Services(Services services) : base(UU.ServicesWithAsync(services.Target), services.Marshaller) { _clusterGroup = services.ClusterGroup; - _keepPortable = services._keepPortable; - _srvKeepPortable = services._srvKeepPortable; + _keepBinary = services._keepBinary; + _srvKeepBinary = services._srvKeepBinary; } /** <inheritDoc /> */ - public IServices WithKeepPortable() + public IServices WithKeepBinary() { - if (_keepPortable) + if (_keepBinary) return this; - return new Services(Target, Marshaller, _clusterGroup, true, _srvKeepPortable); + return new Services(Target, Marshaller, _clusterGroup, true, _srvKeepBinary); } /** <inheritDoc /> */ - public IServices WithServerKeepPortable() + public IServices WithServerKeepBinary() { - if (_srvKeepPortable) + if (_srvKeepBinary) return this; - return new Services(UU.ServicesWithServerKeepPortable(Target), Marshaller, _clusterGroup, _keepPortable, true); + return new Services(UU.ServicesWithServerKeepBinary(Target), Marshaller, _clusterGroup, _keepBinary, true); } /** <inheritDoc /> */ @@ -273,7 +273,7 @@ namespace Apache.Ignite.Core.Impl.Services { return DoInOp(OpDescriptors, stream => { - var reader = Marshaller.StartUnmarshal(stream, _keepPortable); + var reader = Marshaller.StartUnmarshal(stream, _keepBinary); var size = reader.ReadInt(); @@ -366,7 +366,7 @@ namespace Apache.Ignite.Core.Impl.Services { return DoOutInOp(OpInvokeMethod, writer => ServiceProxySerializer.WriteProxyMethod(writer, method, args), - stream => ServiceProxySerializer.ReadInvocationResult(stream, Marshaller, _keepPortable), proxy.Target); + stream => ServiceProxySerializer.ReadInvocationResult(stream, Marshaller, _keepBinary), proxy.Target); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionMetricsImpl.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionMetricsImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionMetricsImpl.cs index 8afc36b..524bc6b 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionMetricsImpl.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionMetricsImpl.cs @@ -19,7 +19,7 @@ namespace Apache.Ignite.Core.Impl.Transactions { using System; using System.Diagnostics; - using Apache.Ignite.Core.Portable; + using Apache.Ignite.Core.Binary; using Apache.Ignite.Core.Transactions; /// <summary> @@ -31,7 +31,7 @@ namespace Apache.Ignite.Core.Impl.Transactions /// Initializes a new instance of the <see cref="TransactionMetricsImpl"/> class. /// </summary> /// <param name="reader">The reader.</param> - public TransactionMetricsImpl(IPortableRawReader reader) + public TransactionMetricsImpl(IBinaryRawReader reader) { var commitTime = reader.ReadTimestamp(); Debug.Assert(commitTime.HasValue); http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs index 3305ba1..a27bffe 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs @@ -19,9 +19,9 @@ namespace Apache.Ignite.Core.Impl.Transactions { using System; using System.Threading.Tasks; - using Apache.Ignite.Core.Impl.Portable; + using Apache.Ignite.Core.Binary; + using Apache.Ignite.Core.Impl.Binary; using Apache.Ignite.Core.Impl.Unmanaged; - using Apache.Ignite.Core.Portable; using Apache.Ignite.Core.Transactions; using UU = Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils; @@ -54,7 +54,7 @@ namespace Apache.Ignite.Core.Impl.Transactions /// <param name="target">Target.</param> /// <param name="marsh">Marshaller.</param> /// <param name="localNodeId">Local node id.</param> - public TransactionsImpl(IUnmanagedTarget target, PortableMarshaller marsh, + public TransactionsImpl(IUnmanagedTarget target, Marshaller marsh, Guid localNodeId) : base(target, marsh) { _localNodeId = localNodeId; @@ -112,7 +112,7 @@ namespace Apache.Ignite.Core.Impl.Transactions { return DoInOp(OpMetrics, stream => { - IPortableRawReader reader = Marshaller.StartUnmarshal(stream, false); + IBinaryRawReader reader = Marshaller.StartUnmarshal(stream, false); return new TransactionMetricsImpl(reader); }); http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs index 54cfe28..12abefb 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedCallbacks.cs @@ -26,6 +26,8 @@ namespace Apache.Ignite.Core.Impl.Unmanaged using Apache.Ignite.Core.Cluster; using Apache.Ignite.Core.Common; + using Apache.Ignite.Core.Impl.Binary; + using Apache.Ignite.Core.Impl.Binary.IO; using Apache.Ignite.Core.Impl.Cache; using Apache.Ignite.Core.Impl.Cache.Query.Continuous; using Apache.Ignite.Core.Impl.Cache.Store; @@ -36,8 +38,6 @@ namespace Apache.Ignite.Core.Impl.Unmanaged using Apache.Ignite.Core.Impl.Handle; using Apache.Ignite.Core.Impl.Memory; using Apache.Ignite.Core.Impl.Messaging; - using Apache.Ignite.Core.Impl.Portable; - using Apache.Ignite.Core.Impl.Portable.IO; using Apache.Ignite.Core.Impl.Resource; using Apache.Ignite.Core.Impl.Services; using Apache.Ignite.Core.Lifecycle; @@ -358,7 +358,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged /// <param name="inOutStream">Stream.</param> /// <param name="grid">Grid.</param> /// <returns>CacheEntryProcessor result.</returns> - private CacheEntryProcessorResultHolder ReadAndRunCacheEntryProcessor(IPortableStream inOutStream, + private CacheEntryProcessorResultHolder ReadAndRunCacheEntryProcessor(IBinaryStream inOutStream, Ignite grid) { var marsh = grid.Marshaller; @@ -547,7 +547,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged // 2. Create real filter from it's holder. var filter = (IContinuousQueryFilter) DelegateTypeDescriptor.GetContinuousQueryFilterCtor( - filterHolder.Filter.GetType())(filterHolder.Filter, filterHolder.KeepPortable); + filterHolder.Filter.GetType())(filterHolder.Filter, filterHolder.KeepBinary); // 3. Inject grid. filter.Inject(_ignite); @@ -610,9 +610,9 @@ namespace Apache.Ignite.Core.Impl.Unmanaged { using (var stream = IgniteManager.Memory.Get(memPtr).GetStream()) { - var reader = _ignite.Marshaller.StartUnmarshal(stream, PortableMode.ForcePortable); + var reader = _ignite.Marshaller.StartUnmarshal(stream, BinaryMode.ForceBinary); - var portableReceiver = reader.ReadObject<PortableUserObject>(); + var portableReceiver = reader.ReadObject<BinaryObject>(); var receiver = _handleRegistry.Get<StreamReceiverHolder>(rcvPtr) ?? portableReceiver.Deserialize<StreamReceiverHolder>(); http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs index 7a19ac4..9a49fae 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Unmanaged/UnmanagedUtils.cs @@ -71,7 +71,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private const string ProcCacheWithNoRetries = "IgniteCacheWithNoRetries"; private const string ProcCacheWithExpiryPolicy = "IgniteCacheWithExpiryPolicy"; private const string ProcCacheWithAsync = "IgniteCacheWithAsync"; - private const string ProcCacheWithKeepPortable = "IgniteCacheWithKeepPortable"; + private const string ProcCacheWithKeepBinary = "IgniteCacheWithKeepPortable"; private const string ProcCacheClear = "IgniteCacheClear"; private const string ProcCacheRemoveAll = "IgniteCacheRemoveAll"; private const string ProcCacheOutOpQueryCursor = "IgniteCacheOutOpQueryCursor"; @@ -147,7 +147,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private const string ProcDeleteContext = "IgniteDeleteContext"; private const string ProcServicesWithAsync = "IgniteServicesWithAsync"; - private const string ProcServicesWithServerKeepPortable = "IgniteServicesWithServerKeepPortable"; + private const string ProcServicesWithServerKeepBinary = "IgniteServicesWithServerKeepPortable"; private const string ProcServicesCancel = "IgniteServicesCancel"; private const string ProcServicesCancelAll = "IgniteServicesCancelAll"; private const string ProcServicesGetServiceProxy = "IgniteServicesGetServiceProxy"; @@ -177,7 +177,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private delegate void* ProcessorCreateCacheDelegate(void* ctx, void* obj, sbyte* name); private delegate void* ProcessorGetOrCreateCacheDelegate(void* ctx, void* obj, sbyte* name); private delegate void* ProcessorAffinityDelegate(void* ctx, void* obj, sbyte* name); - private delegate void* ProcessorDataStreamerDelegate(void* ctx, void* obj, sbyte* name, bool keepPortable); + private delegate void* ProcessorDataStreamerDelegate(void* ctx, void* obj, sbyte* name, bool keepBinary); private delegate void* ProcessorTransactionsDelegate(void* ctx, void* obj); private delegate void* ProcessorComputeDelegate(void* ctx, void* obj, void* prj); private delegate void* ProcessorMessageDelegate(void* ctx, void* obj, void* prj); @@ -202,7 +202,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private delegate void* CacheNoRetriesDelegate(void* ctx, void* obj); private delegate void* CacheWithExpiryPolicyDelegate(void* ctx, void* obj, long create, long update, long access); private delegate void* CacheWithAsyncDelegate(void* ctx, void* obj); - private delegate void* CacheWithKeepPortableDelegate(void* ctx, void* obj); + private delegate void* CacheWithKeepBinaryDelegate(void* ctx, void* obj); private delegate void CacheClearDelegate(void* ctx, void* obj); private delegate void CacheRemoveAllDelegate(void* ctx, void* obj); private delegate void* CacheOutOpQueryCursorDelegate(void* ctx, void* obj, int type, long memPtr); @@ -278,7 +278,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private delegate void DeleteContextDelegate(void* ptr); private delegate void* ServicesWithAsyncDelegate(void* ctx, void* target); - private delegate void* ServicesWithServerKeepPortableDelegate(void* ctx, void* target); + private delegate void* ServicesWithServerKeepBinaryDelegate(void* ctx, void* target); private delegate long ServicesCancelDelegate(void* ctx, void* target, char* name); private delegate long ServicesCancelAllDelegate(void* ctx, void* target); private delegate void* ServicesGetServiceProxyDelegate(void* ctx, void* target, char* name, bool sticky); @@ -334,7 +334,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private static readonly CacheNoRetriesDelegate CACHE_WITH_NO_RETRIES; private static readonly CacheWithExpiryPolicyDelegate CACHE_WITH_EXPIRY_POLICY; private static readonly CacheWithAsyncDelegate CACHE_WITH_ASYNC; - private static readonly CacheWithKeepPortableDelegate CACHE_WITH_KEEP_PORTABLE; + private static readonly CacheWithKeepBinaryDelegate CACHE_WITH_KEEP_BINARY; private static readonly CacheClearDelegate CACHE_CLEAR; private static readonly CacheRemoveAllDelegate CACHE_REMOVE_ALL; private static readonly CacheOutOpQueryCursorDelegate CACHE_OUT_OP_QUERY_CURSOR; @@ -410,7 +410,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged private static readonly DeleteContextDelegate DELETE_CONTEXT; private static readonly ServicesWithAsyncDelegate SERVICES_WITH_ASYNC; - private static readonly ServicesWithServerKeepPortableDelegate SERVICES_WITH_SERVER_KEEP_PORTABLE; + private static readonly ServicesWithServerKeepBinaryDelegate SERVICES_WITH_SERVER_KEEP_BINARY; private static readonly ServicesCancelDelegate SERVICES_CANCEL; private static readonly ServicesCancelAllDelegate SERVICES_CANCEL_ALL; private static readonly ServicesGetServiceProxyDelegate SERVICES_GET_SERVICE_PROXY; @@ -482,7 +482,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged CACHE_WITH_NO_RETRIES = CreateDelegate<CacheNoRetriesDelegate>(ProcCacheWithNoRetries); CACHE_WITH_EXPIRY_POLICY = CreateDelegate<CacheWithExpiryPolicyDelegate>(ProcCacheWithExpiryPolicy); CACHE_WITH_ASYNC = CreateDelegate<CacheWithAsyncDelegate>(ProcCacheWithAsync); - CACHE_WITH_KEEP_PORTABLE = CreateDelegate<CacheWithKeepPortableDelegate>(ProcCacheWithKeepPortable); + CACHE_WITH_KEEP_BINARY = CreateDelegate<CacheWithKeepBinaryDelegate>(ProcCacheWithKeepBinary); CACHE_CLEAR = CreateDelegate<CacheClearDelegate>(ProcCacheClear); CACHE_REMOVE_ALL = CreateDelegate<CacheRemoveAllDelegate>(ProcCacheRemoveAll); CACHE_OUT_OP_QUERY_CURSOR = CreateDelegate<CacheOutOpQueryCursorDelegate>(ProcCacheOutOpQueryCursor); @@ -557,7 +557,7 @@ namespace Apache.Ignite.Core.Impl.Unmanaged EVENTS_IS_ENABLED = CreateDelegate<EventsIsEnabledDelegate>(ProcEventsIsEnabled); SERVICES_WITH_ASYNC = CreateDelegate<ServicesWithAsyncDelegate>(ProcServicesWithAsync); - SERVICES_WITH_SERVER_KEEP_PORTABLE = CreateDelegate<ServicesWithServerKeepPortableDelegate>(ProcServicesWithServerKeepPortable); + SERVICES_WITH_SERVER_KEEP_BINARY = CreateDelegate<ServicesWithServerKeepBinaryDelegate>(ProcServicesWithServerKeepBinary); SERVICES_CANCEL = CreateDelegate<ServicesCancelDelegate>(ProcServicesCancel); SERVICES_CANCEL_ALL = CreateDelegate<ServicesCancelAllDelegate>(ProcServicesCancelAll); SERVICES_GET_SERVICE_PROXY = CreateDelegate<ServicesGetServiceProxyDelegate>(ProcServicesGetServiceProxy); @@ -694,13 +694,13 @@ namespace Apache.Ignite.Core.Impl.Unmanaged } } - internal static IUnmanagedTarget ProcessorDataStreamer(IUnmanagedTarget target, string name, bool keepPortable) + internal static IUnmanagedTarget ProcessorDataStreamer(IUnmanagedTarget target, string name, bool keepBinary) { sbyte* name0 = IgniteUtils.StringToUtf8Unmanaged(name); try { - void* res = PROCESSOR_DATA_STREAMER(target.Context, target.Target, name0, keepPortable); + void* res = PROCESSOR_DATA_STREAMER(target.Context, target.Target, name0, keepBinary); return target.ChangeTarget(res); } @@ -863,9 +863,9 @@ namespace Apache.Ignite.Core.Impl.Unmanaged return target.ChangeTarget(res); } - internal static IUnmanagedTarget CacheWithKeepPortable(IUnmanagedTarget target) + internal static IUnmanagedTarget CacheWithKeepBinary(IUnmanagedTarget target) { - void* res = CACHE_WITH_KEEP_PORTABLE(target.Context, target.Target); + void* res = CACHE_WITH_KEEP_BINARY(target.Context, target.Target); return target.ChangeTarget(res); } @@ -1253,9 +1253,9 @@ namespace Apache.Ignite.Core.Impl.Unmanaged return target.ChangeTarget(SERVICES_WITH_ASYNC(target.Context, target.Target)); } - internal static IUnmanagedTarget ServicesWithServerKeepPortable(IUnmanagedTarget target) + internal static IUnmanagedTarget ServicesWithServerKeepBinary(IUnmanagedTarget target) { - return target.ChangeTarget(SERVICES_WITH_SERVER_KEEP_PORTABLE(target.Context, target.Target)); + return target.ChangeTarget(SERVICES_WITH_SERVER_KEEP_BINARY(target.Context, target.Target)); } internal static void ServicesCancel(IUnmanagedTarget target, string name) http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableBuilder.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableBuilder.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableBuilder.cs deleted file mode 100644 index ad92223..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableBuilder.cs +++ /dev/null @@ -1,310 +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.Portable -{ - using System; - using System.Collections; - - /// <summary> - /// Portable object builder. Provides ability to build portable objects dynamically - /// without having class definitions. - /// <para /> - /// Note that type ID is required in order to build portable object. Usually it is - /// enough to provide a simple type name and Ignite will generate the type ID - /// automatically. - /// </summary> - public interface IPortableBuilder - { - /// <summary> - /// Get object field value. If value is another portable object, then - /// builder for this object will be returned. If value is a container - /// for other objects (array, ICollection, IDictionary), then container - /// will be returned with primitive types in deserialized form and - /// portable objects as builders. Any change in builder or collection - /// returned through this method will be reflected in the resulting - /// portable object after build. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Field value.</returns> - T GetField<T>(string fieldName); - - /// <summary> - /// Set object field value. Value can be of any type including other - /// <see cref="IPortableObject"/> and other builders. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <param name="val">Field value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetField<T>(string fieldName, T val); - - /// <summary> - /// Remove object field. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder RemoveField(string fieldName); - - /// <summary> - /// Set explicit hash code. If builder creating object from scratch, - /// then hash code initially set to 0. If builder is created from - /// exising portable object, then hash code of that object is used - /// as initial value. - /// </summary> - /// <param name="hashCode">Hash code.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetHashCode(int hashCode); - - /// <summary> - /// Build the object. - /// </summary> - /// <returns>Resulting portable object.</returns> - IPortableObject Build(); - - /// <summary> - /// Sets the array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetArrayField<T>(string fieldName, T[] val); - - /// <summary> - /// Sets the boolean field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetBooleanField(string fieldName, bool val); - - /// <summary> - /// Sets the boolean array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetBooleanArrayField(string fieldName, bool[] val); - - /// <summary> - /// Sets the byte field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetByteField(string fieldName, byte val); - - /// <summary> - /// Sets the byte array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetByteArrayField(string fieldName, byte[] val); - - /// <summary> - /// Sets the char field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetCharField(string fieldName, char val); - - /// <summary> - /// Sets the char array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetCharArrayField(string fieldName, char[] val); - - /// <summary> - /// Sets the collection field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetCollectionField(string fieldName, ICollection val); - - /// <summary> - /// Sets the decimal field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetDecimalField(string fieldName, decimal? val); - - /// <summary> - /// Sets the decimal array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetDecimalArrayField(string fieldName, decimal?[] val); - - /// <summary> - /// Sets the dictionary field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetDictionaryField(string fieldName, IDictionary val); - - /// <summary> - /// Sets the double field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetDoubleField(string fieldName, double val); - - /// <summary> - /// Sets the double array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetDoubleArrayField(string fieldName, double[] val); - - /// <summary> - /// Sets the enum field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetEnumField<T>(string fieldName, T val); - - /// <summary> - /// Sets the enum array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetEnumArrayField<T>(string fieldName, T[] val); - - /// <summary> - /// Sets the float field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetFloatField(string fieldName, float val); - - /// <summary> - /// Sets the float array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetFloatArrayField(string fieldName, float[] val); - - /// <summary> - /// Sets the guid field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetGuidField(string fieldName, Guid? val); - - /// <summary> - /// Sets the guid array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetGuidArrayField(string fieldName, Guid?[] val); - - /// <summary> - /// Sets the int field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetIntField(string fieldName, int val); - - /// <summary> - /// Sets the int array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetIntArrayField(string fieldName, int[] val); - - /// <summary> - /// Sets the long field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetLongField(string fieldName, long val); - - /// <summary> - /// Sets the long array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetLongArrayField(string fieldName, long[] val); - - /// <summary> - /// Sets the short field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetShortField(string fieldName, short val); - - /// <summary> - /// Sets the short array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetShortArrayField(string fieldName, short[] val); - - /// <summary> - /// Sets the string field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetStringField(string fieldName, string val); - - /// <summary> - /// Sets the string array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetStringArrayField(string fieldName, string[] val); - - /// <summary> - /// Sets the timestamp field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetTimestampField(string fieldName, DateTime? val); - - /// <summary> - /// Sets the timestamp array field. - /// </summary> - /// <param name="fieldName">Name of the field.</param> - /// <param name="val">The value.</param> - /// <returns>Current builder instance.</returns> - IPortableBuilder SetTimestampArrayField(string fieldName, DateTime?[] val); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableIdMapper.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableIdMapper.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableIdMapper.cs deleted file mode 100644 index 0c18eb9..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableIdMapper.cs +++ /dev/null @@ -1,40 +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.Portable -{ - /// <summary> - /// Maps class name and class field names to integer identifiers. - /// </summary> - public interface IPortableIdMapper - { - /// <summary> - /// Gets type ID for the given type. - /// </summary> - /// <param name="typeName">Full type name.</param> - /// <returns>ID of the class or 0 in case hash code is to be used.</returns> - int GetTypeId(string typeName); - - /// <summary> - /// Gets field ID for the given field of the given class. - /// </summary> - /// <param name="typeId">Type ID.</param> - /// <param name="fieldName">Field name.</param> - /// <returns>ID of the field or null in case hash code is to be used.</returns> - int GetFieldId(int typeId, string fieldName); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMarshalAware.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMarshalAware.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMarshalAware.cs deleted file mode 100644 index 2795db4..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMarshalAware.cs +++ /dev/null @@ -1,39 +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.Portable -{ - /// <summary> - /// Interface to implement custom portable serialization logic. - /// </summary> - public interface IPortableMarshalAware - { - /// <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); - - /// <summary> - /// Reads this object from the given reader. - /// </summary> - /// <param name="reader">Reader.</param> - /// <exception cref="System.IO.IOException">If read failed.</exception> - void ReadPortable(IPortableReader reader); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMetadata.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMetadata.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMetadata.cs deleted file mode 100644 index 5bfa340..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableMetadata.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.Portable -{ - using System.Collections.Generic; - - /// <summary> - /// Portable type metadata. - /// </summary> - public interface IPortableMetadata - { - /// <summary> - /// Gets type name. - /// </summary> - /// <returns>Type name.</returns> - string TypeName { get; } - - /// <summary> - /// Gets field names for that type. - /// </summary> - /// <returns>Field names.</returns> - ICollection<string> Fields { get; } - - /// <summary> - /// Gets field type for the given field name. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Field type.</returns> - string GetFieldTypeName(string fieldName); - - /// <summary> - /// Gets optional affinity key field name. - /// </summary> - /// <returns>Affinity key field name or null in case it is not provided.</returns> - string AffinityKeyFieldName { get; } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableNameMapper.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableNameMapper.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableNameMapper.cs deleted file mode 100644 index 96a9d38..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableNameMapper.cs +++ /dev/null @@ -1,39 +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.Portable -{ - /// <summary> - /// Maps type and field names to different names. - /// </summary> - public interface IPortableNameMapper - { - /// <summary> - /// Gets the type name. - /// </summary> - /// <param name="name">The name.</param> - /// <returns>Type name.</returns> - string GetTypeName(string name); - - /// <summary> - /// Gets the field name. - /// </summary> - /// <param name="name">The name.</param> - /// <returns>Field name.</returns> - string GetFieldName(string name); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs deleted file mode 100644 index 9855d84..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableObject.cs +++ /dev/null @@ -1,60 +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.Portable -{ - using System.Diagnostics.CodeAnalysis; - - /// <summary> - /// Wrapper for serialized portable objects. - /// </summary> - public interface IPortableObject - { - /// <summary> - /// Gets portable object type ID. - /// </summary> - /// <value> - /// Type ID. - /// </value> - int TypeId { get; } - - /// <summary> - /// Gets object metadata. - /// </summary> - /// <returns>Metadata.</returns> - [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", - Justification = "Expensive operation.")] - IPortableMetadata GetMetadata(); - - /// <summary> - /// Gets field value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns> - /// Field value. - /// </returns> - TF GetField<TF>(string fieldName); - - /// <summary> - /// Gets fully deserialized instance of portable object. - /// </summary> - /// <returns> - /// Fully deserialized instance of portable object. - /// </returns> - T Deserialize<T>(); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawReader.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawReader.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawReader.cs deleted file mode 100644 index 1c30aad..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawReader.cs +++ /dev/null @@ -1,223 +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.Portable -{ - using System; - using System.Collections; - - /// <summary> - /// Raw reader for portable objects. - /// </summary> - public interface IPortableRawReader - { - /// <summary> - /// Read byte value. - /// </summary> - /// <returns>Byte value.</returns> - byte ReadByte(); - - /// <summary> - /// Read byte array. - /// </summary> - /// <returns>Byte array.</returns> - byte[] ReadByteArray(); - - /// <summary> - /// Read char value. - /// </summary> - /// <returns>Char value.</returns> - char ReadChar(); - - /// <summary> - /// Read char array. - /// </summary> - /// <returns>Char array.</returns> - char[] ReadCharArray(); - - /// <summary> - /// Read short value. - /// </summary> - /// <returns>Short value.</returns> - short ReadShort(); - - /// <summary> - /// Read short array. - /// </summary> - /// <returns>Short array.</returns> - short[] ReadShortArray(); - - /// <summary> - /// Read int value. - /// </summary> - /// <returns>Int value.</returns> - int ReadInt(); - - /// <summary> - /// Read int array. - /// </summary> - /// <returns>Int array.</returns> - int[] ReadIntArray(); - - /// <summary> - /// Read long value. - /// </summary> - /// <returns>Long value.</returns> - long ReadLong(); - - /// <summary> - /// Read long array. - /// </summary> - /// <returns>Long array.</returns> - long[] ReadLongArray(); - - /// <summary> - /// Read boolean value. - /// </summary> - /// <returns>Boolean value.</returns> - bool ReadBoolean(); - - /// <summary> - /// Read boolean array. - /// </summary> - /// <returns>Boolean array.</returns> - bool[] ReadBooleanArray(); - - /// <summary> - /// Read float value. - /// </summary> - /// <returns>Float value.</returns> - float ReadFloat(); - - /// <summary> - /// Read float array. - /// </summary> - /// <returns>Float array.</returns> - float[] ReadFloatArray(); - - /// <summary> - /// Read double value. - /// </summary> - /// <returns>Double value.</returns> - double ReadDouble(); - - /// <summary> - /// Read double array. - /// </summary> - /// <returns>Double array.</returns> - double[] ReadDoubleArray(); - - /// <summary> - /// Read decimal value. - /// </summary> - /// <returns>Decimal value.</returns> - decimal? ReadDecimal(); - - /// <summary> - /// Read decimal array. - /// </summary> - /// <returns>Decimal array.</returns> - decimal?[] ReadDecimalArray(); - - /// <summary> - /// Read date value in UTC form. Shortcut for <c>ReadTimestamp(false)</c>. - /// </summary> - /// <returns>Date value.</returns> - DateTime? ReadTimestamp(); - - /// <summary> - /// Read date array in UTC form. Shortcut for <c>ReadTimestampArray(false)</c>. - /// </summary> - /// <returns>Date array.</returns> - DateTime?[] ReadTimestampArray(); - - /// <summary> - /// Read string value. - /// </summary> - /// <returns>String value.</returns> - string ReadString(); - - /// <summary> - /// Read string array. - /// </summary> - /// <returns>String array.</returns> - string[] ReadStringArray(); - - /// <summary> - /// Read GUID value. - /// </summary> - /// <returns>GUID value.</returns> - Guid? ReadGuid(); - - /// <summary> - /// Read GUID array. - /// </summary> - /// <returns>GUID array.</returns> - Guid?[] ReadGuidArray(); - - /// <summary> - /// Read enum value. - /// </summary> - /// <returns>Enum value.</returns> - T ReadEnum<T>(); - - /// <summary> - /// Read enum array. - /// </summary> - /// <returns>Enum array.</returns> - T[] ReadEnumArray<T>(); - - /// <summary> - /// Read object. - /// </summary> - /// <returns>Object.</returns> - T ReadObject<T>(); - - /// <summary> - /// Read object array. - /// </summary> - /// <returns>Object array.</returns> - T[] ReadArray<T>(); - - /// <summary> - /// Read collection. - /// </summary> - /// <returns>Collection.</returns> - ICollection ReadCollection(); - - /// <summary> - /// Read collection. - /// </summary> - /// <param name="factory">Factory.</param> - /// <param name="adder">Adder.</param> - /// <returns>Collection.</returns> - ICollection ReadCollection(PortableCollectionFactory factory, PortableCollectionAdder adder); - - /// <summary> - /// Read dictionary. - /// </summary> - /// <returns>Dictionary.</returns> - IDictionary ReadDictionary(); - - /// <summary> - /// Read dictionary. - /// </summary> - /// <param name="factory">Factory.</param> - /// <returns>Dictionary.</returns> - IDictionary ReadDictionary(PortableDictionaryFactory factory); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawWriter.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawWriter.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawWriter.cs deleted file mode 100644 index fcd449c..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableRawWriter.cs +++ /dev/null @@ -1,220 +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.Portable -{ - using System; - using System.Collections; - - /// <summary> - /// Raw writer for portable objects. - /// </summary> - public interface IPortableRawWriter - { - /// <summary> - /// Write byte value. - /// </summary> - /// <param name="val">Byte value.</param> - void WriteByte(byte val); - - /// <summary> - /// Write byte array. - /// </summary> - /// <param name="val">Byte array.</param> - void WriteByteArray(byte[] val); - - /// <summary> - /// Write char value. - /// </summary> - /// <param name="val">Char value.</param> - void WriteChar(char val); - - /// <summary> - /// Write char array. - /// </summary> - /// <param name="val">Char array.</param> - void WriteCharArray(char[] val); - - /// <summary> - /// Write short value. - /// </summary> - /// <param name="val">Short value.</param> - void WriteShort(short val); - - /// <summary> - /// Write short array. - /// </summary> - /// <param name="val">Short array.</param> - void WriteShortArray(short[] val); - - /// <summary> - /// Write int value. - /// </summary> - /// <param name="val">Int value.</param> - void WriteInt(int val); - - /// <summary> - /// Write int array. - /// </summary> - /// <param name="val">Int array.</param> - void WriteIntArray(int[] val); - - /// <summary> - /// Write long value. - /// </summary> - /// <param name="val">Long value.</param> - void WriteLong(long val); - - /// <summary> - /// Write long array. - /// </summary> - /// <param name="val">Long array.</param> - void WriteLongArray(long[] val); - - /// <summary> - /// Write boolean value. - /// </summary> - /// <param name="val">Boolean value.</param> - void WriteBoolean(bool val); - - /// <summary> - /// Write boolean array. - /// </summary> - /// <param name="val">Boolean array.</param> - void WriteBooleanArray(bool[] val); - - /// <summary> - /// Write float value. - /// </summary> - /// <param name="val">Float value.</param> - void WriteFloat(float val); - - /// <summary> - /// Write float array. - /// </summary> - /// <param name="val">Float array.</param> - void WriteFloatArray(float[] val); - - /// <summary> - /// Write double value. - /// </summary> - /// <param name="val">Double value.</param> - void WriteDouble(double val); - - /// <summary> - /// Write double array. - /// </summary> - /// <param name="val">Double array.</param> - void WriteDoubleArray(double[] val); - - /// <summary> - /// Write decimal value. - /// </summary> - /// <param name="val">Decimal value.</param> - void WriteDecimal(decimal? val); - - /// <summary> - /// Write decimal array. - /// </summary> - /// <param name="val">Decimal array.</param> - void WriteDecimalArray(decimal?[] val); - - /// <summary> - /// Write date value. - /// </summary> - /// <param name="val">Date value.</param> - void WriteTimestamp(DateTime? val); - - /// <summary> - /// Write date array. - /// </summary> - /// <param name="val">Date array.</param> - void WriteTimestampArray(DateTime?[] val); - - /// <summary> - /// Write string value. - /// </summary> - /// <param name="val">String value.</param> - void WriteString(string val); - - /// <summary> - /// Write string array. - /// </summary> - /// <param name="val">String array.</param> - void WriteStringArray(string[] val); - - /// <summary> - /// Write GUID value. - /// </summary> - /// <param name="val">GUID value.</param> - void WriteGuid(Guid? val); - - /// <summary> - /// Write GUID array. - /// </summary> - /// <param name="val">GUID array.</param> - void WriteGuidArray(Guid?[] val); - - /// <summary> - /// Write enum value. - /// </summary> - /// <param name="val">Enum value.</param> - void WriteEnum<T>(T val); - - /// <summary> - /// Write enum array. - /// </summary> - /// <param name="val">Enum array.</param> - void WriteEnumArray<T>(T[] val); - - /// <summary> - /// Write object value. - /// </summary> - /// <param name="val">Object value.</param> - void WriteObject<T>(T val); - - /// <summary> - /// Write object array. - /// </summary> - /// <param name="val">Object array.</param> - void WriteArray<T>(T[] val); - - /// <summary> - /// Writes a collection in interoperable form. - /// - /// Use this method to communicate with other platforms - /// or with nodes that need to read collection elements in portable form. - /// - /// When there is no need for portables or interoperability, please use <see cref="WriteObject{T}" />, - /// which will properly preserve generic collection type. - /// </summary> - /// <param name="val">Collection.</param> - void WriteCollection(ICollection val); - - /// <summary> - /// Writes a dictionary in interoperable form. - /// - /// Use this method to communicate with other platforms - /// or with nodes that need to read dictionary elements in portable form. - /// - /// When there is no need for portables or interoperability, please use <see cref="WriteObject{T}" />, - /// which will properly preserve generic dictionary type. - /// </summary> - /// <param name="val">Dictionary.</param> - void WriteDictionary(IDictionary val); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/894057e5/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableReader.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableReader.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableReader.cs deleted file mode 100644 index 7797ba2..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Portable/IPortableReader.cs +++ /dev/null @@ -1,279 +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.Portable -{ - using System; - using System.Collections; - - /// <summary> - /// Delegate for collection creation. - /// </summary> - /// <param name="size">Collection size.</param> - /// <returns>Collection.</returns> - public delegate ICollection PortableCollectionFactory(int size); - - /// <summary> - /// Delegate for adding element to collection. - /// </summary> - /// <param name="col">Collection.</param> - /// <param name="elem">Element to add.</param> - public delegate void PortableCollectionAdder(ICollection col, object elem); - - /// <summary> - /// Delegate for dictionary creation. - /// </summary> - /// <param name="size">Dictionary size.</param> - /// <returns>Dictionary.</returns> - public delegate IDictionary PortableDictionaryFactory(int size); - - /// <summary> - /// Reader for portable objects. - /// </summary> - public interface IPortableReader - { - /// <summary> - /// Read named byte value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Byte value.</returns> - byte ReadByte(string fieldName); - - /// <summary> - /// Read named byte array. - /// </summary> - /// <returns>Byte array.</returns> - byte[] ReadByteArray(string fieldName); - - /// <summary> - /// Read named char value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Char value.</returns> - char ReadChar(string fieldName); - - /// <summary> - /// Read named char array. - /// </summary> - /// <returns>Char array.</returns> - char[] ReadCharArray(string fieldName); - - /// <summary> - /// Read named short value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Short value.</returns> - short ReadShort(string fieldName); - - /// <summary> - /// Read named short array. - /// </summary> - /// <returns>Short array.</returns> - short[] ReadShortArray(string fieldName); - - /// <summary> - /// Read named int value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Int value.</returns> - int ReadInt(string fieldName); - - /// <summary> - /// Read named int array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Int array.</returns> - int[] ReadIntArray(string fieldName); - - /// <summary> - /// Read named long value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Long value.</returns> - long ReadLong(string fieldName); - - /// <summary> - /// Read named long array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Long array.</returns> - long[] ReadLongArray(string fieldName); - - /// <summary> - /// Read named boolean value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Boolean value.</returns> - bool ReadBoolean(string fieldName); - - /// <summary> - /// Read named boolean array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Boolean array.</returns> - bool[] ReadBooleanArray(string fieldName); - - /// <summary> - /// Read named float value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Float value.</returns> - float ReadFloat(string fieldName); - - /// <summary> - /// Read named float array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Float array.</returns> - float[] ReadFloatArray(string fieldName); - - /// <summary> - /// Read named double value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Double value.</returns> - double ReadDouble(string fieldName); - - /// <summary> - /// Read named double array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Double array.</returns> - double[] ReadDoubleArray(string fieldName); - - /// <summary> - /// Read named decimal value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Decimal value.</returns> - decimal? ReadDecimal(string fieldName); - - /// <summary> - /// Read named decimal array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Decimal array.</returns> - decimal?[] ReadDecimalArray(string fieldName); - - /// <summary> - /// Read named date value in UTC form. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Date value.</returns> - DateTime? ReadTimestamp(string fieldName); - - /// <summary> - /// Read named date array in UTC form. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Date array.</returns> - DateTime?[] ReadTimestampArray(string fieldName); - - /// <summary> - /// Read named string value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>String value.</returns> - string ReadString(string fieldName); - - /// <summary> - /// Read named string array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>String array.</returns> - string[] ReadStringArray(string fieldName); - - /// <summary> - /// Read named GUID value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>GUID value.</returns> - Guid? ReadGuid(string fieldName); - - /// <summary> - /// Read named GUID array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>GUID array.</returns> - Guid?[] ReadGuidArray(string fieldName); - - /// <summary> - /// Read named enum value. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Enum value.</returns> - T ReadEnum<T>(string fieldName); - - /// <summary> - /// Read named enum array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Enum array.</returns> - T[] ReadEnumArray<T>(string fieldName); - - /// <summary> - /// Read named object. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Object.</returns> - T ReadObject<T>(string fieldName); - - /// <summary> - /// Read named object array. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Object array.</returns> - T[] ReadArray<T>(string fieldName); - - /// <summary> - /// Read named collection. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Collection.</returns> - ICollection ReadCollection(string fieldName); - - /// <summary> - /// Read named collection. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <param name="factory">Factory.</param> - /// <param name="adder">Adder.</param> - /// <returns>Collection.</returns> - ICollection ReadCollection(string fieldName, PortableCollectionFactory factory, PortableCollectionAdder adder); - - /// <summary> - /// Read named dictionary. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <returns>Dictionary.</returns> - IDictionary ReadDictionary(string fieldName); - - /// <summary> - /// Read named dictionary. - /// </summary> - /// <param name="fieldName">Field name.</param> - /// <param name="factory">Factory.</param> - /// <returns>Dictionary.</returns> - IDictionary ReadDictionary(string fieldName, PortableDictionaryFactory factory); - - /// <summary> - /// Get raw reader. - /// </summary> - /// <returns>Raw reader.</returns> - IPortableRawReader GetRawReader(); - } -} \ No newline at end of file
