Esempio n. 1
0
 internal void CloseFree()
 {
     ReceiveBuffer.Free();
     ReceiveBigBuffer.TryFree();
     FreeReceiveDeSerializer();
     Unmanaged.Free(ref commandData);
 }
Esempio n. 2
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     Unmanaged.Free(ref valueData);
     if (nextFilter != null)
     {
         nextFilter.Dispose();
     }
 }
Esempio n. 3
0
 public void Dispose()
 {
     searcher.State = null;
     Unmanaged.Free(ref data);
     lastLock.Enter();
     Unmanaged.Free(ref lastDomain);
     lastLock.Exit();
 }
Esempio n. 4
0
 /// <summary>
 /// 停止服务监听
 /// </summary>
 public virtual void StopListen()
 {
     if (Socket != null)
     {
         ShutdownServer(Socket);
         Socket = null;
     }
     Unmanaged.Free(ref commandData);
 }
Esempio n. 5
0
        /// <summary>
        /// 增加数据
        /// </summary>
        /// <param name="value">新增的数据</param>
        private void onInserted(valueType value)
        {
            int *intCounts = counts.Int;
            int  identity  = GetKey(value);

            if (identity >= size)
            {
                int newLength = int.MaxValue - 1, oldLength = size;
                if ((identity & 0x40000000) == 0 && oldLength != 0x40000000)
                {
                    for (newLength = oldLength << 1; newLength <= identity; newLength <<= 1)
                    {
                        ;
                    }
                }
                Array.ToSize(newLength);
                Pointer.Size newCounts = Unmanaged.GetSize64(newLength * sizeof(int), true);
                try
                {
                    Memory.CopyNotNull(intCounts, newCounts.Int, size * sizeof(int));
                    Unmanaged.Free(ref counts);
                    counts = newCounts;
                    size   = newLength;
                    newCounts.Null();

                    int index = oldLength, count = (intCounts = counts.Int)[--index];
                    for (int step = 1; (index -= step) != 0; step <<= 1)
                    {
                        count += intCounts[index];
                    }
                    intCounts[oldLength] = count;
                }
                catch (Exception error)
                {
                    SqlTable.Log.add(AutoCSer.Log.LogType.Error, error);
                }
                finally { Unmanaged.Free(ref newCounts); }
            }
            valueType newValue = AutoCSer.Emit.Constructor <valueType> .New();

            AutoCSer.MemberCopy.Copyer <modelType> .Copy(newValue, value, MemberMap);

            setMemberCacheAndValue(newValue);
            Array[identity] = newValue;
            for (uint index = (uint)identity, countStep = 1, length = (uint)size; index <= length; countStep <<= 1)
            {
                ++intCounts[index];
                while ((index & countStep) == 0)
                {
                    countStep <<= 1;
                }
                index += countStep;
            }
            ++Count;
            callOnInserted(newValue);
        }
Esempio n. 6
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     if (CharTypeData.Data != DefaultCharTypeData.Data)
     {
         Unmanaged.Free(ref CharTypeData);
         CharTypeData = new AutoCSer.Memory.Pointer {
             Data = DefaultCharTypeData.Data
         };
     }
 }
Esempio n. 7
0
        internal void CancelBuilder()
        {
            int *nodes = this.nodes;

            if (nodes != null)
            {
                this.nodes = null;
                Unmanaged.Free((byte *)nodes, (1 << 16) * sizeof(int));
            }
        }
Esempio n. 8
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     if (CharTypeData.Data != DefaultCharTypeData.Data)
     {
         Unmanaged.Free(ref CharTypeData);
         CharTypeData = new Pointer.Size {
             Data = DefaultCharTypeData.Data
         };
     }
 }
            protected void checkMatchMap()
            {
                int matchMapSize = (foramtLength + 7) >> 3, matchMapDataSize = Math.Max((int)((uint)matchMapSize).UpToPower2(), 8);

                if (matchMapData.ByteSize < matchMapDataSize)
                {
                    Unmanaged.Free(ref matchMapData);
                    matchMapData = Unmanaged.GetSizeUnsafe64(matchMapDataSize, false);
                }
                matchMap.Set(matchMapData.ULong, (matchMapSize + 7) >> 3);
            }
Esempio n. 10
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public override void Dispose()
 {
     base.Dispose();
     if (CharTypeData.Data != StringTrieGraph.DefaultCharTypeData.Data)
     {
         Unmanaged.Free(ref CharTypeData);
         CharTypeData = new AutoCSer.Memory.Pointer {
             Data = StringTrieGraph.DefaultCharTypeData.Data
         };
     }
 }
Esempio n. 11
0
        /// <summary>
        /// 停止服务监听
        /// </summary>
        public virtual void StopListen()
        {
            if (Socket != null)
            {
                ShutdownServer(Socket);
                Socket = null;
            }
            Unmanaged.Free(ref commandData);
#if !NOJIT
            extendServerSet.Free();
#endif
        }
Esempio n. 12
0
        /// <summary>
        /// 停止服务监听
        /// </summary>
        public virtual void StopListen()
        {
            if (Socket != null)
            {
#if DotNetStandard
                AutoCSer.Net.TcpServer.CommandBase.CloseServer(Socket);
#else
                Socket.Dispose();
#endif
                Socket = null;
            }
            Unmanaged.Free(ref commandData);
        }
Esempio n. 13
0
            /// <summary>
            /// 获取文本的匹配索引位置
            /// </summary>
            /// <param name="key">数据关键字</param>
            /// <param name="text">数据文本</param>
            /// <param name="maxLength">最大长度</param>
            /// <returns>匹配索引位置集合</returns>
            public unsafe KeyValue <int, int>[] FormatTextIndexs(ref keyType key, ref SubString text, int maxLength)
            {
                int size = ((text.Length + 63) >> 3) & (int.MaxValue - 7);

                if (getResultIndexsMapBuffer.ByteSize < size)
                {
                    Unmanaged.Free(ref getResultIndexsMapBuffer);
                    getResultIndexsMapBuffer = Unmanaged.GetPointer(size, true);
                }
                int count = searcher.FormatTextIndexs(ref key, ref text, ref queryResult, maxLength, ref resultIndexs, ref getResultIndexsMapBuffer);

                return(new LeftArray <KeyValue <int, int> >(count, resultIndexs).GetArray());
            }
Esempio n. 14
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     if (wordQuery != null)
     {
         wordQuery.Dispose();
         wordQuery = null;
     }
     if (queue != null)
     {
         queue.Dispose();
         queue = null;
     }
     Unmanaged.Free(ref getResultIndexsMapBuffer);
 }
Esempio n. 15
0
        /// <summary>
        /// 重新加载数据
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="query">查询信息</param>
        internal override void Reset(ref DbConnection connection, ref SelectQuery <modelType> query)
        {
            ReturnValue <LeftArray <valueType> > valueArray = SqlTable.SelectQueue(ref connection, ref query);

            if (valueArray.ReturnType == ReturnType.Success)
            {
                int maxIdentity = valueArray.Value.maxKey(value => GetKey(value), 0);
                if (memberGroup == 0)
                {
                    SqlTable.Identity64 = maxIdentity + baseIdentity;
                }
                int length = maxIdentity >= IdentityArray.ArraySize ? 1 << ((uint)maxIdentity).bits() : IdentityArray.ArraySize;
                IdentityArray <valueType> newValues = new IdentityArray <valueType>(length);
                AutoCSer.Memory.Pointer   newCounts = Unmanaged.GetPointer8(length * sizeof(int), true);
                try
                {
                    int *intCounts = newCounts.Int;
                    foreach (valueType value in valueArray.Value)
                    {
                        setMemberCacheAndValue(value);
                        int identity = GetKey(value);
                        newValues[identity] = value;
                        intCounts[identity] = 1;
                    }
                    for (int step = 2; step != length; step <<= 1)
                    {
                        for (int index = step, countStep = step >> 1; index != length; index += step)
                        {
                            intCounts[index] += intCounts[index - countStep];
                        }
                    }
                    Unmanaged.Free(ref counts);
                    this.Array = newValues;
                    counts     = newCounts;
                    size       = length;
                    Count      = valueArray.Value.Length;
                    newCounts.SetNull();
                }
                catch (Exception error)
                {
                    SqlTable.Log.Exception(error, null, LogLevel.Exception | LogLevel.AutoCSer);
                }
                finally { Unmanaged.Free(ref newCounts); }
            }
            else
            {
                SqlTable.Log.Fatal(typeof(valueType).fullName() + " 数据加载失败 " + valueArray.ReturnType.ToString(), LogLevel.Fatal | LogLevel.AutoCSer);
            }
        }
Esempio n. 16
0
            /// <summary>
            /// 获取文本的匹配索引位置
            /// </summary>
            /// <param name="key">数据关键字</param>
            /// <param name="textLength">数据文本长度</param>
            /// <returns>文本的匹配索引位置</returns>
            public unsafe KeyValue <int, int>[] GetResultIndexs(ref keyType key, int textLength)
            {
                int size = ((textLength + 63) >> 3) & (int.MaxValue - 7);

                if (getResultIndexsMapBuffer.ByteSize < size)
                {
                    Unmanaged.Free(ref getResultIndexsMapBuffer);
                    getResultIndexsMapBuffer = Unmanaged.GetPointer(size, true);
                }
                else
                {
                    AutoCSer.Memory.Common.Clear(getResultIndexsMapBuffer.ULong, size >> 3);
                }
                int count = searcher.GetResultIndexs(ref key, textLength, ref queryResult, ref resultIndexs, getResultIndexsMapBuffer.Data);

                return(new LeftArray <KeyValue <int, int> >(count, resultIndexs).GetArray());
            }
Esempio n. 17
0
        /// <summary>
        /// 重新加载数据
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="query">查询信息</param>
        internal override void Reset(ref DbConnection connection, ref SelectQuery <modelType> query)
        {
            LeftArray <valueType> array = SqlTable.Select(ref connection, ref query);
            int maxIdentity             = array.maxKey(value => GetKey(value), 0);

            if (memberGroup == 0)
            {
                SqlTable.Identity64 = maxIdentity + baseIdentity;
            }
            int length = maxIdentity >= IdentityArray.ArraySize ? 1 << ((uint)maxIdentity).bits() : IdentityArray.ArraySize;
            IdentityArray <valueType> newValues = new IdentityArray <valueType>(length);

            Pointer.Size newCounts = Unmanaged.GetSize64(length * sizeof(int), true);
            try
            {
                int *intCounts = newCounts.Int;
                foreach (valueType value in array)
                {
                    setMemberCacheAndValue(value);
                    int identity = GetKey(value);
                    newValues[identity] = value;
                    intCounts[identity] = 1;
                }
                for (int step = 2; step != length; step <<= 1)
                {
                    for (int index = step, countStep = step >> 1; index != length; index += step)
                    {
                        intCounts[index] += intCounts[index - countStep];
                    }
                }
                Unmanaged.Free(ref counts);
                this.Array = newValues;
                counts     = newCounts;
                size       = length;
                Count      = array.Length;
                newCounts.Null();
            }
            catch (Exception error)
            {
                SqlTable.Log.add(AutoCSer.Log.LogType.Error, error);
            }
            finally { Unmanaged.Free(ref newCounts); }
        }
Esempio n. 18
0
 protected new unsafe bool dispose()
 {
     if (base.dispose())
     {
         if (rewritePaths != null)
         {
             rewritePaths.Dispose();
         }
         viewSearcher.State = callSearcher.State = rewriteSearcher.State = webSocketSearcher.State = null;
         Unmanaged.Free(ref viewIndexs);
         Unmanaged.Free(ref callIndexs);
         Unmanaged.Free(ref rewriteIndexs);
         Unmanaged.Free(ref webSocketIndexs);
         if (WebConfig.IsHtmlLinkVersion)
         {
             VersionFileWatcher.Remove(this);
         }
         return(true);
     }
     return(false);
 }
Esempio n. 19
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     Unmanaged.Free(ref Map);
 }
Esempio n. 20
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public override void Dispose()
 {
     base.Dispose();
     Unmanaged.Free(ref counts);
     size = 0;
 }
Esempio n. 21
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     Unmanaged.Free(ref valueData);
 }
Esempio n. 22
0
 internal void Free()
 {
     Unmanaged.Free(ref commandData);
 }
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     Unmanaged.Free(ref matchMapData);
 }
Esempio n. 24
0
 internal void CancelBuilder()
 {
     Unmanaged.Free(ref nodes);
 }