Как отследить длительные операции на моем idHTTPServer? - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу отслеживать длительные операции на idHTTPServer из idHTTPClient с помощью ping.Как бы я сделал это лучше?Мне нужно что-то уникальное для этого.Я пытался с bind.id, но безуспешно.

Допустим, я даю что-то уникальное, когда поток запускается, его работа

procedure TRPTests.SomeServerJob;
var
  jo: ISuperObject;
begin
  TThread.CreateAnonymousThread(
    procedure()
    begin
      Sleep(3000);
    end).Start();

  jo := SO();
  jo.S['BindId'] := Context.Binding.ID.ToString;
  FResponses.OkWithJson(jo.AsJSon(false, false));
end;

Через некоторое время я хочу проверить, выполнена ли работаили что такое прогресс?Допустим, я пытался сделать это таким образом

procedure TRPSystem.PingContext(aId: string);
var
  jo: ISuperObject;
  i: integer;
  r: boolean;
  someProgress: string;
begin
  with GetMain.Server.Contexts.LockList() do
  try
    for i := 0 to Count - 1 do
      if TIdContext(Items[i]).Binding.ID = aId.ToInteger then
      begin
        someProgress := '10 %';  // take progress param from my thread
        r := true;
        Break;
      end;
  finally
    GetMain.Server.Contexts.UnlockList();
  end;
  if r then
  begin
    jo := SO;
    jo.I['progress'] := someProgress;
    FResponses.OkWithJson(jo.AsJSon(false, false));
  end;
end;

Это правильный подход или лучше использовать другой?

...