Exemplo n.º 1
0
 void ExecuteRequest(IPathCallback request)
 {
     if (request.KeepInPathScheduler())
     {
         if (request.WantsToRecalculatePath())
         {
             request.CleanupCurrentPath();
             request.OnPathComplete(request.PlotPath());
         }
         requests.Push(request);
     }
 }
Exemplo n.º 2
0
    public void RemoveFromScheduler(IPathCallback callback)
    {
        int size = requests.Size();

        for (int i = 0; i < size; i++)
        {
            IPathCallback request = requests.Pop();
            if (request == callback)
            {
                return;
            }
            requests.Push(request);
        }
    }
Exemplo n.º 3
0
        public void RequestPathInfo(string path)
        {
            IPathCallback callback = OperationContext.Current.GetCallbackChannel <IPathCallback>();

            try
            {
                DirectoryInfo dir  = new DirectoryInfo(path);
                string[]      info = dir.GetDirectories().Select(d => d.Name).Concat(dir.GetFiles().Select(f => f.Name)).ToArray();
                callback.ReceivePathInfo(info);
            }
            catch (Exception ex)
            {
                callback.OnError("Ошибка получения содержимого папки.");
            }
        }
Exemplo n.º 4
0
    void ExecuteRequests(int millis)
    {
        long start = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond;
        int  size  = requests.Size();

        for (int i = 0; i < size; i++)
        {
            IPathCallback request = requests.Pop();
            ExecuteRequest(request);
            long current = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond;
            if (current > (start + millis))
            {
                //Debug.Log("Requests executed: " + i);
                return;
            }
        }
    }
Exemplo n.º 5
0
 public void AddToPathScheduler(IPathCallback callback)
 {
     ExecuteRequest(callback);
 }