/// <summary>
        /// Initializes a new instance of the <see cref="ContinuousQueryFilterHolder"/> class.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public ContinuousQueryFilterHolder(IBinaryReader reader)
        {
            var rawReader = (BinaryReader) reader.GetRawReader();

            _filter = rawReader.ReadObject<object>();
            _keepBinary = rawReader.ReadBoolean();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ComputeFuncJob"/> class.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public ComputeFuncJob(IBinaryReader reader)
        {
            var reader0 = (BinaryReader) reader.GetRawReader();

            _clo = reader0.ReadObject<IComputeFunc>();
            _arg = reader0.ReadObject<object>();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SerializableObjectHolder"/> class.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public SerializableObjectHolder(IBinaryReader reader)
        {
            Debug.Assert(reader != null);

            var reader0 = (BinaryReader) reader.GetRawReader();

            _item = new BinaryFormatter().Deserialize(new BinaryStreamAdapter(reader0.Stream), null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Default ctor for marshalling.
        /// </summary>
        /// <param name="reader"></param>
        public ComputeJobHolder(IBinaryReader reader)
        {
            Debug.Assert(reader != null);

            var reader0 = (BinaryReader) reader.GetRawReader();

            _ignite = reader0.Marshaller.Ignite;

            _job = reader0.ReadObject<IComputeJob>();
        }
Ejemplo n.º 5
0
 public void ReadBinary(IBinaryReader reader)
 {
     member.FromBinary(reader.GetRawReader());
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="CacheEntryProcessorHolder"/> class.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public CacheEntryProcessorHolder(IBinaryReader reader)
        {
            var reader0 = (BinaryReader) reader.GetRawReader();

            _proc = reader0.ReadObject<object>();
            _arg = reader0.ReadObject<object>();

            _processFunc = GetProcessFunc(_proc);

            var kvTypes = DelegateTypeDescriptor.GetCacheEntryProcessorTypes(_proc.GetType());

            _entryCtor = MutableCacheEntry.GetCtor(kvTypes.Item1, kvTypes.Item2);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CacheEntryFilterHolder"/> class.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public CacheEntryFilterHolder(IBinaryReader reader)
        {
            var reader0 = (BinaryReader)reader.GetRawReader();

            _pred = reader0.ReadObject<object>();

            _keepBinary = reader0.ReadBoolean();

            _marsh = reader0.Marshaller;

            _invoker = GetInvoker(_pred);
        }
Ejemplo n.º 8
0
        /** <inheritdoc /> */
        public void ReadBinary(IBinaryReader reader)
        {
            var r = reader.GetRawReader();

            ThrowErr = r.ReadBoolean();
        }
Ejemplo n.º 9
0
 /** <inheritDoc /> */
 public void ReadBinary(IBinaryReader reader)
 {
     A = reader.ReadInt("a");
     B = reader.GetRawReader().ReadString();
 }
Ejemplo n.º 10
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public DateTimeHolder(IBinaryReader reader)
        {
            Debug.Assert(reader != null);

            _item = DateTime.FromBinary(reader.GetRawReader().ReadLong());
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ComputeActionJob"/> class.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public ComputeActionJob(IBinaryReader reader)
        {
            var reader0 = (BinaryReader)reader.GetRawReader();

            _action = reader0.ReadObject<IComputeAction>();
        }
Ejemplo n.º 12
0
            public void ReadBinary(IBinaryReader reader)
            {
                Assert.AreEqual(1, reader.ReadByte("Byte"));
                Assert.AreEqual(new byte[] { 1 }, reader.ReadByteArray("ByteArray"));
                Assert.AreEqual('1', reader.ReadChar("Char"));
                Assert.AreEqual(new[] { '1' }, reader.ReadCharArray("CharArray"));
                Assert.AreEqual(1, reader.ReadShort("Short"));
                Assert.AreEqual(new short[] { 1 }, reader.ReadShortArray("ShortArray"));
                Assert.AreEqual(1, reader.ReadInt("Int"));
                Assert.AreEqual(new[] { 1 }, reader.ReadIntArray("IntArray"));
                Assert.AreEqual(1, reader.ReadLong("Long"));
                Assert.AreEqual(new long[] { 1 }, reader.ReadLongArray("LongArray"));
                Assert.AreEqual(true, reader.ReadBoolean("Boolean"));
                Assert.AreEqual(new[] { true }, reader.ReadBooleanArray("BooleanArray"));
                Assert.AreEqual(1, reader.ReadFloat("Float"));
                Assert.AreEqual(new float[] { 1 }, reader.ReadFloatArray("FloatArray"));
                Assert.AreEqual(1, reader.ReadDouble("Double"));
                Assert.AreEqual(new double[] { 1 }, reader.ReadDoubleArray("DoubleArray"));
                Assert.AreEqual(1, reader.ReadDecimal("Decimal"));
                Assert.AreEqual(null, reader.ReadDecimal("DecimalN"));
                Assert.AreEqual(new decimal?[] { 1 }, reader.ReadDecimalArray("DecimalArray"));
                Assert.AreEqual(Date, reader.ReadTimestamp("Timestamp"));
                Assert.AreEqual(new DateTime?[] { Date }, reader.ReadTimestampArray("TimestampArray"));
                Assert.AreEqual("1", reader.ReadString("String"));
                Assert.AreEqual(new[] { "1" }, reader.ReadStringArray("StringArray"));
                Assert.AreEqual(Guid, reader.ReadGuid("Guid"));
                Assert.AreEqual(null, reader.ReadGuid("GuidN"));
                Assert.AreEqual(new Guid?[] { Guid }, reader.ReadGuidArray("GuidArray"));
                Assert.AreEqual(MyEnum.Bar, reader.ReadEnum <MyEnum>("Enum"));
                Assert.AreEqual(new[] { MyEnum.Bar }, reader.ReadEnumArray <MyEnum>("EnumArray"));

                var raw = reader.GetRawReader();

                Assert.AreEqual(1, raw.ReadByte());
                Assert.AreEqual(new byte[] { 1 }, raw.ReadByteArray());
                Assert.AreEqual('1', raw.ReadChar());
                Assert.AreEqual(new[] { '1' }, raw.ReadCharArray());
                Assert.AreEqual(1, raw.ReadShort());
                Assert.AreEqual(new short[] { 1 }, raw.ReadShortArray());
                Assert.AreEqual(1, raw.ReadInt());
                Assert.AreEqual(new[] { 1 }, raw.ReadIntArray());
                Assert.AreEqual(1, raw.ReadLong());
                Assert.AreEqual(new long[] { 1 }, raw.ReadLongArray());
                Assert.AreEqual(true, raw.ReadBoolean());
                Assert.AreEqual(new[] { true }, raw.ReadBooleanArray());
                Assert.AreEqual(1, raw.ReadFloat());
                Assert.AreEqual(new float[] { 1 }, raw.ReadFloatArray());
                Assert.AreEqual(1, raw.ReadDouble());
                Assert.AreEqual(new double[] { 1 }, raw.ReadDoubleArray());
                Assert.AreEqual(1, raw.ReadDecimal());
                Assert.AreEqual(null, raw.ReadDecimal());
                Assert.AreEqual(new decimal?[] { 1 }, raw.ReadDecimalArray());
                Assert.AreEqual(Date, raw.ReadTimestamp());
                Assert.AreEqual(new DateTime?[] { Date }, raw.ReadTimestampArray());
                Assert.AreEqual("1", raw.ReadString());
                Assert.AreEqual(new[] { "1" }, raw.ReadStringArray());
                Assert.AreEqual(Guid, raw.ReadGuid());
                Assert.AreEqual(null, raw.ReadGuid());
                Assert.AreEqual(new Guid?[] { Guid }, raw.ReadGuidArray());
                Assert.AreEqual(MyEnum.Bar, raw.ReadEnum <MyEnum>());
                Assert.AreEqual(new[] { MyEnum.Bar }, raw.ReadEnumArray <MyEnum>());
            }
Ejemplo n.º 13
0
        public ComputeOutFuncJob(IBinaryReader reader)
        {
            var reader0 = (BinaryReader)reader.GetRawReader();

            _clo = reader0.ReadObject <IComputeOutFunc>();
        }
Ejemplo n.º 14
0
 public void ReadBinary(IBinaryReader reader)
 {
     (member ?? (member = new T())).FromBinary(reader.GetRawReader());
 }
Ejemplo n.º 15
0
 public void ReadBinary(IBinaryReader reader)
 {
     Int = reader.ReadInt("Int");
     Str = reader.GetRawReader().ReadString();
 }
 /** <inheritDoc /> */
 public void ReadBinary(IBinaryReader reader)
 {
     Msg = reader.GetRawReader().ReadString();
 }
Ejemplo n.º 17
0
 public void ReadBinary(IBinaryReader reader) => FromBinary(reader.GetRawReader());
Ejemplo n.º 18
0
        /// <summary>
        /// Invokes a store operation.
        /// </summary>
        /// <param name="input">Input stream.</param>
        /// <param name="cb">Callback.</param>
        /// <param name="grid">Grid.</param>
        /// <returns>Invocation result.</returns>
        /// <exception cref="IgniteException">Invalid operation type:  + opType</exception>
        public int Invoke(IBinaryStream input, IUnmanagedTarget cb, Ignite grid)
        {
            IBinaryReader reader = grid.Marshaller.StartUnmarshal(input,
                                                                  _convertBinary ? BinaryMode.Deserialize : BinaryMode.ForceBinary);

            IBinaryRawReader rawReader = reader.GetRawReader();

            int opType = rawReader.ReadByte();

            // Setup cache sessoin for this invocation.
            long sesId = rawReader.ReadLong();

            CacheStoreSession ses = grid.HandleRegistry.Get <CacheStoreSession>(sesId, true);

            ses.CacheName = rawReader.ReadString();

            _sesProxy.SetSession(ses);

            try
            {
                // Perform operation.
                switch (opType)
                {
                case OpLoadCache:
                    _store.LoadCache((k, v) => WriteObjects(cb, grid, k, v), rawReader.ReadArray <object>());

                    break;

                case OpLoad:
                    object val = _store.Load(rawReader.ReadObject <object>());

                    if (val != null)
                    {
                        WriteObjects(cb, grid, val);
                    }

                    break;

                case OpLoadAll:
                    var keys = rawReader.ReadCollection();

                    var result = _store.LoadAll(keys);

                    foreach (DictionaryEntry entry in result)
                    {
                        WriteObjects(cb, grid, entry.Key, entry.Value);
                    }

                    break;

                case OpPut:
                    _store.Write(rawReader.ReadObject <object>(), rawReader.ReadObject <object>());

                    break;

                case OpPutAll:
                    var size = rawReader.ReadInt();

                    var dict = new Hashtable(size);

                    for (int i = 0; i < size; i++)
                    {
                        dict[rawReader.ReadObject <object>()] = rawReader.ReadObject <object>();
                    }

                    _store.WriteAll(dict);

                    break;

                case OpRmv:
                    _store.Delete(rawReader.ReadObject <object>());

                    break;

                case OpRmvAll:
                    _store.DeleteAll(rawReader.ReadCollection());

                    break;

                case OpSesEnd:
                    grid.HandleRegistry.Release(sesId);

                    _store.SessionEnd(rawReader.ReadBoolean());

                    break;

                default:
                    throw new IgniteException("Invalid operation type: " + opType);
                }

                return(0);
            }
            finally
            {
                _sesProxy.ClearSession();
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="reader">The reader.</param>
        public DateTimeHolder(IBinaryReader reader)
        {
            Debug.Assert(reader != null);

            _item = DateTime.FromBinary(reader.GetRawReader().ReadLong());
        }
Ejemplo n.º 20
0
 /** <inheritdoc /> */
 public void ReadBinary(IBinaryReader reader)
 {
     _type = reader.GetRawReader().ReadInt();
 }
Ejemplo n.º 21
0
        /// <summary>
        /// Invokes a store operation.
        /// </summary>
        /// <param name="stream">Input stream.</param>
        /// <param name="grid">Grid.</param>
        /// <returns>Invocation result.</returns>
        /// <exception cref="IgniteException">Invalid operation type:  + opType</exception>
        public int Invoke(IBinaryStream stream, Ignite grid)
        {
            IBinaryReader reader = grid.Marshaller.StartUnmarshal(stream,
                                                                  _convertBinary ? BinaryMode.Deserialize : BinaryMode.ForceBinary);

            IBinaryRawReader rawReader = reader.GetRawReader();

            int opType = rawReader.ReadByte();

            // Setup cache session for this invocation.
            long sesId = rawReader.ReadLong();

            CacheStoreSession ses = grid.HandleRegistry.Get <CacheStoreSession>(sesId, true);

            // Session cache name may change in cross-cache transaction.
            // Single session is used for all stores in cross-cache transactions.
            ses.CacheName = rawReader.ReadString();

            _sesProxy.SetSession(ses);

            try
            {
                // Perform operation.
                switch (opType)
                {
                case OpLoadCache:
                {
                    var args = rawReader.ReadArray <object>();

                    stream.Seek(0, SeekOrigin.Begin);

                    int cnt = 0;
                    stream.WriteInt(cnt);     // Reserve space for count.

                    var writer = grid.Marshaller.StartMarshal(stream);

                    _store.LoadCache((k, v) =>
                        {
                            lock (writer) // User-defined store can be multithreaded.
                            {
                                writer.WriteObjectDetached(k);
                                writer.WriteObjectDetached(v);

                                cnt++;
                            }
                        }, args);

                    stream.WriteInt(0, cnt);

                    grid.Marshaller.FinishMarshal(writer);

                    break;
                }

                case OpLoad:
                {
                    var val = _store.Load(rawReader.ReadObject <TK>());

                    stream.Seek(0, SeekOrigin.Begin);

                    var writer = grid.Marshaller.StartMarshal(stream);

                    writer.WriteObject(val);

                    grid.Marshaller.FinishMarshal(writer);

                    break;
                }

                case OpLoadAll:
                {
                    // We can't do both read and write lazily because stream is reused.
                    // Read keys non-lazily, write result lazily.
                    var keys = ReadAllKeys(rawReader);

                    var result = _store.LoadAll(keys);

                    stream.Seek(0, SeekOrigin.Begin);

                    int cnt = 0;
                    stream.WriteInt(cnt);     // Reserve space for count.

                    var writer = grid.Marshaller.StartMarshal(stream);

                    foreach (var entry in result)
                    {
                        var entry0 = entry;     // Copy modified closure.

                        writer.WriteObjectDetached(entry0.Key);
                        writer.WriteObjectDetached(entry0.Value);

                        cnt++;
                    }

                    stream.WriteInt(0, cnt);

                    grid.Marshaller.FinishMarshal(writer);

                    break;
                }

                case OpPut:
                    _store.Write(rawReader.ReadObject <TK>(), rawReader.ReadObject <TV>());

                    break;

                case OpPutAll:
                    _store.WriteAll(ReadPairs(rawReader));

                    break;

                case OpRmv:
                    _store.Delete(rawReader.ReadObject <TK>());

                    break;

                case OpRmvAll:
                    _store.DeleteAll(ReadKeys(rawReader));

                    break;

                case OpSesEnd:
                {
                    var commit = rawReader.ReadBoolean();
                    var last   = rawReader.ReadBoolean();

                    if (last)
                    {
                        grid.HandleRegistry.Release(sesId);
                    }

                    _store.SessionEnd(commit);

                    break;
                }

                default:
                    throw new IgniteException("Invalid operation type: " + opType);
                }

                return(0);
            }
            finally
            {
                _sesProxy.ClearSession();
            }
        }
Ejemplo n.º 22
0
            public void ReadBinary(IBinaryReader reader)
            {
                Assert.AreEqual(1, reader.ReadByte("Byte"));
                Assert.AreEqual(new byte[] {1}, reader.ReadByteArray("ByteArray"));
                Assert.AreEqual('1', reader.ReadChar("Char"));
                Assert.AreEqual(new[] {'1'}, reader.ReadCharArray("CharArray"));
                Assert.AreEqual(1, reader.ReadShort("Short"));
                Assert.AreEqual(new short[] {1}, reader.ReadShortArray("ShortArray"));
                Assert.AreEqual(1, reader.ReadInt("Int"));
                Assert.AreEqual(new[] {1}, reader.ReadIntArray("IntArray"));
                Assert.AreEqual(1, reader.ReadLong("Long"));
                Assert.AreEqual(new long[] {1}, reader.ReadLongArray("LongArray"));
                Assert.AreEqual(true, reader.ReadBoolean("Boolean"));
                Assert.AreEqual(new[] {true}, reader.ReadBooleanArray("BooleanArray"));
                Assert.AreEqual(1, reader.ReadFloat("Float"));
                Assert.AreEqual(new float[] {1}, reader.ReadFloatArray("FloatArray"));
                Assert.AreEqual(1, reader.ReadDouble("Double"));
                Assert.AreEqual(new double[] {1}, reader.ReadDoubleArray("DoubleArray"));
                Assert.AreEqual(1, reader.ReadDecimal("Decimal"));
                Assert.AreEqual(new decimal?[] {1}, reader.ReadDecimalArray("DecimalArray"));
                Assert.AreEqual(Date, reader.ReadTimestamp("Timestamp"));
                Assert.AreEqual(new DateTime?[] {Date}, reader.ReadTimestampArray("TimestampArray"));
                Assert.AreEqual("1", reader.ReadString("String"));
                Assert.AreEqual(new[] {"1"}, reader.ReadStringArray("StringArray"));
                Assert.AreEqual(Guid, reader.ReadGuid("Guid"));
                Assert.AreEqual(new Guid?[] {Guid}, reader.ReadGuidArray("GuidArray"));
                Assert.AreEqual(MyEnum.Bar, reader.ReadEnum<MyEnum>("Enum"));
                Assert.AreEqual(new[] {MyEnum.Bar}, reader.ReadEnumArray<MyEnum>("EnumArray"));

                var raw = reader.GetRawReader();

                Assert.AreEqual(1, raw.ReadByte());
                Assert.AreEqual(new byte[] { 1 }, raw.ReadByteArray());
                Assert.AreEqual('1', raw.ReadChar());
                Assert.AreEqual(new[] { '1' }, raw.ReadCharArray());
                Assert.AreEqual(1, raw.ReadShort());
                Assert.AreEqual(new short[] { 1 }, raw.ReadShortArray());
                Assert.AreEqual(1, raw.ReadInt());
                Assert.AreEqual(new[] { 1 }, raw.ReadIntArray());
                Assert.AreEqual(1, raw.ReadLong());
                Assert.AreEqual(new long[] { 1 }, raw.ReadLongArray());
                Assert.AreEqual(true, raw.ReadBoolean());
                Assert.AreEqual(new[] { true }, raw.ReadBooleanArray());
                Assert.AreEqual(1, raw.ReadFloat());
                Assert.AreEqual(new float[] { 1 }, raw.ReadFloatArray());
                Assert.AreEqual(1, raw.ReadDouble());
                Assert.AreEqual(new double[] { 1 }, raw.ReadDoubleArray());
                Assert.AreEqual(1, raw.ReadDecimal());
                Assert.AreEqual(new decimal?[] { 1 }, raw.ReadDecimalArray());
                Assert.AreEqual(Date, raw.ReadTimestamp());
                Assert.AreEqual(new DateTime?[] { Date }, raw.ReadTimestampArray());
                Assert.AreEqual("1", raw.ReadString());
                Assert.AreEqual(new[] { "1" }, raw.ReadStringArray());
                Assert.AreEqual(Guid, raw.ReadGuid());
                Assert.AreEqual(new Guid?[] { Guid }, raw.ReadGuidArray());
                Assert.AreEqual(MyEnum.Bar, raw.ReadEnum<MyEnum>());
                Assert.AreEqual(new[] { MyEnum.Bar }, raw.ReadEnumArray<MyEnum>());
            }
Ejemplo n.º 23
0
        public void ReadBinary(IBinaryReader reader)
        {
            var method = typeof(FromToBinary).GetMethod("FromBinary", new[] { typeof(T), typeof(IBinaryRawReader) });

            method.Invoke(null, new object[] { member ?? (member = new T()), reader.GetRawReader() });
        }
Ejemplo n.º 24
0
 /** <inheritDoc /> */
 public void ReadBinary(IBinaryReader reader)
 {
     A = reader.ReadInt("a");
     B = reader.GetRawReader().ReadInt();
 }
Ejemplo n.º 25
0
        /// <summary>
        /// Invokes a store operation.
        /// </summary>
        /// <param name="stream">Input stream.</param>
        /// <param name="grid">Grid.</param>
        /// <returns>Invocation result.</returns>
        /// <exception cref="IgniteException">Invalid operation type:  + opType</exception>
        public int Invoke(IBinaryStream stream, Ignite grid)
        {
            IBinaryReader reader = grid.Marshaller.StartUnmarshal(stream,
                                                                  _convertBinary ? BinaryMode.Deserialize : BinaryMode.ForceBinary);

            IBinaryRawReader rawReader = reader.GetRawReader();

            int opType = rawReader.ReadByte();

            // Setup cache session for this invocation.
            long sesId = rawReader.ReadLong();

            CacheStoreSession ses = grid.HandleRegistry.Get <CacheStoreSession>(sesId, true);

            ses.CacheName = rawReader.ReadString();

            _sesProxy.SetSession(ses);

            try
            {
                // Perform operation.
                switch (opType)
                {
                case OpLoadCache:
                {
                    var args = rawReader.ReadArray <object>();

                    stream.Seek(0, SeekOrigin.Begin);

                    int cnt = 0;
                    stream.WriteInt(cnt);     // Reserve space for count.

                    var writer = grid.Marshaller.StartMarshal(stream);

                    _store.LoadCache((k, v) =>
                        {
                            lock (writer) // User-defined store can be multithreaded.
                            {
                                writer.WithDetach(w =>
                                {
                                    w.WriteObject(k);
                                    w.WriteObject(v);
                                });

                                cnt++;
                            }
                        }, args);

                    stream.WriteInt(0, cnt);

                    grid.Marshaller.FinishMarshal(writer);

                    break;
                }

                case OpLoad:
                {
                    var val = _store.Load(rawReader.ReadObject <object>());

                    stream.Seek(0, SeekOrigin.Begin);

                    var writer = grid.Marshaller.StartMarshal(stream);

                    writer.WriteObject(val);

                    grid.Marshaller.FinishMarshal(writer);

                    break;
                }

                case OpLoadAll:
                {
                    var keys = rawReader.ReadCollection();

                    var result = _store.LoadAll(keys);

                    stream.Seek(0, SeekOrigin.Begin);

                    stream.WriteInt(result.Count);

                    var writer = grid.Marshaller.StartMarshal(stream);

                    foreach (DictionaryEntry entry in result)
                    {
                        var entry0 = entry;      // Copy modified closure.

                        writer.WithDetach(w =>
                            {
                                w.WriteObject(entry0.Key);
                                w.WriteObject(entry0.Value);
                            });
                    }

                    grid.Marshaller.FinishMarshal(writer);

                    break;
                }

                case OpPut:
                    _store.Write(rawReader.ReadObject <object>(), rawReader.ReadObject <object>());

                    break;

                case OpPutAll:
                    var size = rawReader.ReadInt();

                    var dict = new Hashtable(size);

                    for (int i = 0; i < size; i++)
                    {
                        dict[rawReader.ReadObject <object>()] = rawReader.ReadObject <object>();
                    }

                    _store.WriteAll(dict);

                    break;

                case OpRmv:
                    _store.Delete(rawReader.ReadObject <object>());

                    break;

                case OpRmvAll:
                    _store.DeleteAll(rawReader.ReadCollection());

                    break;

                case OpSesEnd:
                    grid.HandleRegistry.Release(sesId);

                    _store.SessionEnd(rawReader.ReadBoolean());

                    break;

                default:
                    throw new IgniteException("Invalid operation type: " + opType);
                }

                return(0);
            }
            finally
            {
                _sesProxy.ClearSession();
            }
        }