internal void CloseFree() { ReceiveBuffer.Free(); ReceiveBigBuffer.TryFree(); FreeReceiveDeSerializer(); Unmanaged.Free(ref commandData); }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { Unmanaged.Free(ref valueData); if (nextFilter != null) { nextFilter.Dispose(); } }
public void Dispose() { searcher.State = null; Unmanaged.Free(ref data); lastLock.Enter(); Unmanaged.Free(ref lastDomain); lastLock.Exit(); }
/// <summary> /// 停止服务监听 /// </summary> public virtual void StopListen() { if (Socket != null) { ShutdownServer(Socket); Socket = null; } Unmanaged.Free(ref commandData); }
/// <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); }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { if (CharTypeData.Data != DefaultCharTypeData.Data) { Unmanaged.Free(ref CharTypeData); CharTypeData = new AutoCSer.Memory.Pointer { Data = DefaultCharTypeData.Data }; } }
internal void CancelBuilder() { int *nodes = this.nodes; if (nodes != null) { this.nodes = null; Unmanaged.Free((byte *)nodes, (1 << 16) * sizeof(int)); } }
/// <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); }
/// <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 }; } }
/// <summary> /// 停止服务监听 /// </summary> public virtual void StopListen() { if (Socket != null) { ShutdownServer(Socket); Socket = null; } Unmanaged.Free(ref commandData); #if !NOJIT extendServerSet.Free(); #endif }
/// <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); }
/// <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()); }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { if (wordQuery != null) { wordQuery.Dispose(); wordQuery = null; } if (queue != null) { queue.Dispose(); queue = null; } Unmanaged.Free(ref getResultIndexsMapBuffer); }
/// <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); } }
/// <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()); }
/// <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); } }
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); }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { Unmanaged.Free(ref Map); }
/// <summary> /// 释放资源 /// </summary> public override void Dispose() { base.Dispose(); Unmanaged.Free(ref counts); size = 0; }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { Unmanaged.Free(ref valueData); }
internal void Free() { Unmanaged.Free(ref commandData); }
/// <summary> /// 释放资源 /// </summary> public void Dispose() { Unmanaged.Free(ref matchMapData); }
internal void CancelBuilder() { Unmanaged.Free(ref nodes); }