62,041
社区成员
发帖
与我相关
我的任务
分享
namespace A
{
using System;
using System.Collections.Generic;
public enum OrderUpdateStatus { Added, Removed, Modified }
public class OrderEntity { }
public class OrderUpdateItem
{
OrderUpdateStatus Status;
DateTime UpdateTime = DateTime.Now;
OrderEntity Order;
}
public class OrderBusiness
{
Queue<OrderUpdateItem> updates;
void AddOrder(OrderEntity entity)
{
//...insert into
OrderUpdateItem item = new OrderUpdateItem();
item.Status = OrderUpdateStatus.Added;
item.Order = entity;
updates.Enqueue(item);
}
void Updateorder(OrderEntity entity)
{
//....
}
void DeleteOrder(OrderEntity entity)
{
//....
}
Queue<OrderUpdateItem> GetUpdates(DateTime time)
{
Queue<OrderUpdateItem> result = new Queue<OrderUpdateItem>();
foreach (OrderUpdateItem item in updates)
{
if (item.UpdateTime > time) result.Add(item);
}
SessionManager.clientsUpdateTime = time;
CleanUpdates();
return result;
}
private void CleanUpdates()
{
DateTime t = SessionManager.GetFirstUpdateTime();
while (updates.Count > 0)
{
OrderUpdateItem item = updates.Peek();
if (item.UpdateTime < t) updates.Dequeue();
}
}
}
public class SessionManager
{
static Dictionary<Session, DateTime> clientsUpdateTime;
static void On_Session_Leave()
{
clientsUpdateTime.Remove(session);
}
static DateTime GetFirstUpdateTime()
{
DateTime result = DateTime.MaxValue;
foreach (KeyValuePair<Session, DateTime> kv in clientsUpdateTime)
{
if (kv.Value < result) result = kv.Value;
}
return result;
}
}
}