private void btnAdd_Click(object sender, RoutedEventArgs e) { try { if (this._firstAdd) { MemoryCacheEx.Add(1, TimeEx.GetTimestamp()); this._firstAdd = false; } MemoryCacheEx.Add(2, TimeEx.GetTimestamp(), this._expiration, this.CacheItemRemovedCallback); MemoryCacheEx.Add(3, TimeEx.GetTimestamp(), TimeSpan.FromMilliseconds(this._expiration), this.CacheItemRemovedCallback); MemoryCacheEx.Add(4, TimeEx.GetTimestamp(), (t) => { return((DateTimeOffset.Now - t.AddTime).TotalMilliseconds > this._expiration * 2); }, this.CacheItemRemovedCallback); CacheItem cacheItem = new CacheItem(5, TimeEx.GetTimestamp()); cacheItem.AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds(this._expiration); //cacheItem.SlidingExpiration = slidingExpiration; //cacheItem.CustomerExpiration = customerExpiration; cacheItem.RemovedCallback = this.CacheItemRemovedCallback; //cacheItem.InnerRemovedCallback = true; MemoryCacheEx.Add(cacheItem); } catch (Exception ex) { Loger.Error(ex); } }
public void Update(int mtu, int rto, bool isTimeout) { Timestamp = TimeEx.GetTimestamp(); HasValue = true; this.IsTimeout = isTimeout; Mtu = mtu; Rto = rto; }
/// <summary> /// 创建 /// </summary> /// <param name="rid"></param> /// <param name="position"></param> /// <param name="size"></param> public ResourceRequestMessage(Int32 rid, Int64 position, Int32 size) : base(new CommonHeader(TransferCommands.ResourceRequest, TimeEx.GetTimestamp(), rid)) { this.ContextId = GUIDEx.GetGUIDHashCode(); this.Position = position; this.Size = size; }
private void SetValue(DotnetWinFormApp.DB.IStu stu, long id = -1) { if (id == -1) { id = TimeEx.GetTimestamp(); } stu.ID = id; stu.Age = _rnd.Next(0, 120); stu.Name = "yf" + id; //stu.Bir = new DateTime(1988, 11, 30, 2, 22, 45); stu.Bir = DateTime.Now; }
internal void ProResourceResponse(ResourceResponseMessage message, byte[] revData) { try { if (message.Size == ResourceResponseMessage.RESOURCE_NOT_EXIST) { //资源不存在,发送超时,将接收数据移除 Loger.Warn("请求资源不存在"); } else { int mtu = message.Size + ResourceResponseMessage.HEAD_SIZE; int rto = (int)(TimeEx.GetTimestamp() - message.Header.Timestamp); TransferParaManager.RecordMtuAndRto(message.SrcEndPoint, mtu, rto, false); ReceiveDataItem receiveDataItem; if (this._revItemDic.TryGetValue(message.Header.Rid, out receiveDataItem)) { //发送收到响应数据通知 EventWaitHandle eventHandle = AutoEventWaitHandleManager.GetEventWaitHandle(message.ContextId); if (eventHandle != null) { try { receiveDataItem.UpdateLastAccessTimestamp(); if (message.Size == ResourceResponseMessage.RESOURCE_NOT_EXIST) { return; } receiveDataItem.Write(message.Position, revData, ResourceResponseMessage.HEAD_SIZE, message.Size); eventHandle.Set(); } catch (ObjectDisposedException) { } } } else { //var tt = TimeEx.GetTimestamp(); //Loger.Warn($"未知的资源ID:{message.Header.Rid},[ContextId:{message.ContextId}],[请求响应时长:{tt - message.Header.Timestamp}],[请求数据Position:{message.Position},Size:{message.Size}],[线程:{Thread.CurrentThread.Name}]"); } } } catch (Exception ex) { Loger.Error(ex, "ProResourceResponse发生异常"); } }
private void btnSet_Click(object sender, RoutedEventArgs e) { MemoryCacheEx.Set(1, TimeEx.GetTimestamp()); MemoryCacheEx.Set(2, TimeEx.GetTimestamp(), this._expiration, this.CacheItemRemovedCallback); MemoryCacheEx.Set(3, TimeEx.GetTimestamp(), TimeSpan.FromMilliseconds(this._expiration), this.CacheItemRemovedCallback); MemoryCacheEx.Set(4, TimeEx.GetTimestamp(), (t) => { return((DateTimeOffset.Now - t.AddTime).TotalMilliseconds > this._expiration * 2); }, this.CacheItemRemovedCallback); CacheItem cacheItem = new CacheItem(5, TimeEx.GetTimestamp()); cacheItem.AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds(this._expiration); //cacheItem.SlidingExpiration = slidingExpiration; //cacheItem.CustomerExpiration = customerExpiration; cacheItem.RemovedCallback = this.CacheItemRemovedCallback; //cacheItem.InnerRemovedCallback = true; MemoryCacheEx.Set(cacheItem); }
private void SendTransferCompletedMessage(SendDataNotifyMessage notifyMessage) { var transferCompletedMessage = new TransferCompletedMessage(notifyMessage); var buffer = transferCompletedMessage.GenerateBuffer(); var id = CacheKeyGenerator.GenerateWaitTransferCompletedAckMessageEventWaitHandleId(notifyMessage.Header.Rid); var eventHandleInfo = AutoEventWaitHandleManager.CreateEventWaitHandle(id); try { long beginTs = TimeEx.GetTimestamp(); long endTs = beginTs; while (!notifyMessage.IsTimeout(beginTs, endTs)) { try { int rto = TransferParaManager.GetRto(notifyMessage.SrcEndPoint); this._net.Send(buffer, notifyMessage.SrcEndPoint); if (eventHandleInfo.EventWaitHandle.WaitOne(rto)) { break; } else { TransferParaManager.AdjustUpRto(notifyMessage.SrcEndPoint); } } catch (SendDataException) { break; } catch (Exception ex) { Loger.Error(ex, "发送传输完成消息异常"); } endTs = TimeEx.GetTimestamp(); } } finally { AutoEventWaitHandleManager.RemoveEventWaitHandle(id); eventHandleInfo.EventWaitHandle.Dispose(); } //注:如果一直都没有收到确认消息,则超时线程处理 }
/// <summary> /// 初始化文件流 /// </summary> /// <param name="dir"></param> /// <param name="fileName"></param> protected void InitFileStream(string dir, string fileName) { if (string.IsNullOrWhiteSpace(fileName)) { fileName = $"{TimeEx.GetTimestamp()}.dat"; } string filePath = Path.Combine(dir, fileName); this._filePath = filePath; this._flag = false; for (int i = 0; i < this._streamArr.Length; i++) { this._streamArr[i] = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write); this._streams.Add(this._streamArr[i]); } }
/// <summary> /// 创建 /// </summary> /// <param name="resoucesInfo"></param> public SendDataNotifyMessage(ResoucesInfo resoucesInfo) : base(new CommonHeader(TransferCommands.SendNotify, TimeEx.GetTimestamp(), resoucesInfo.Rid)) { this.Priority = resoucesInfo.Policy.Priority; byte sendMode; if (resoucesInfo.Length <= TransferConstant.MESSAGE_MAX_SIZE) { var data = new byte[resoucesInfo.Length]; Array.Copy(resoucesInfo.Data, resoucesInfo.Postion, data, 0, data.Length); this.Data = data; sendMode = ResourceTypeConstant.Message; } else { switch (resoucesInfo.ResoucesType) { case TransferDataType.Data: sendMode = ResourceTypeConstant.ResourceData; break; case TransferDataType.Stream: sendMode = ResourceTypeConstant.ResourceStream; break; case TransferDataType.File: sendMode = ResourceTypeConstant.ResourceFile; this.FileName = Path.GetFileName(resoucesInfo.FilePath); break; default: throw new NotImplementedException($"未实现的资源类型:{resoucesInfo.ResoucesType.ToString()}"); } } this.ResourceType = sendMode; this.Timeout = resoucesInfo.Policy.MillisecondsTimeout; this.Size = resoucesInfo.Length; }
public ConfigChildItem2(bool flag) { this.ID = TimeEx.GetTimestamp(); this.Bir = DateTime.Now; }
/// <summary> /// 创建 /// </summary> /// <param name="sendDataNotifyMessage"></param> public TransferCompletedMessage(SendDataNotifyMessage sendDataNotifyMessage) : base(new CommonHeader(TransferCommands.TransferCompleted, TimeEx.GetTimestamp(), sendDataNotifyMessage.Header.Rid)) { }