Пример #1
0
 public void RegisterTask(RpcTask task)
 {
     lock (lck)
     {
         UncompleteSet.Add(task);
         UncompleteTasks[task.Id] = task;
     }
 }
Пример #2
0
 private void ProcessCompleteTask(RpcTask task)
 {
     lock (lck)
     {
         UncompleteSet.Remove(task);
         UncompleteTasks.Remove(task.Id);
         task.CompleteWaiter.Set();
     }
 }
Пример #3
0
        public RpcTask Send(uint packetId, RpcTask task)
        {
            if (task.ExpireDate < DateTime.Now)
            {
                ProcessCompleteTask(task);
                return(task);
            }
            var container = new RpcContainer(task.Rpc.Argument);

            container.Id = (uint)task.Id;

            lock (lck)
            {
                RpcIds.Add(packetId);
            }
            RegisterTask(task);

            Session.Send(packetId, container);
            return(task);
        }