I have a Delphi client talking( let’s call it APP1) to a .net server (APP2), which itself is a client of another Delphi server (APP3). I’m trying to get an event from APP3 to APP1 via APP2. The events are being triggered fine from APP1. They are being received by APP2 and then triggered for APP3, but then I only get the last few events in APP3. In one example I have 46 events in quick succession. However, APP3 only receives the last 7. Not sure what’s happening. I am using HTTP in both cases. Polling is set to the default max of 10 messages, but changing it doesn’t seem to change anything.
can you add some logging and confirm that all events from APP1 are received by APP2 and they are prepared for APP3?
I have logged everything in APP2 and can see all events being received correctly, and subsequently fired off. However they do not all arrive to APP1. I have also made a small experiment. I triggered 30 events in APP2. Simple loop:
for (int i = 0; i < 30; i++)
_consoleEvents.HandleProgressText(sessionID, i.ToString(), true);
I get the last 10.
If I then change the MaximumMessagesPerPoll in the TEventReciever from 10 to 15, I get the last 15 events. I had said in my original post that this doesn’t make a difference, but it apparently does:
Thanks, logged as bugs://77335
as a workarond, pls update uROEventReceiver.pas
:
function TROEventReceiver.Invoke_GetEventsData(out EventsData: TROBinaryMemoryStream): Integer;
..
begin
result := 0; // else it's warn //<<<<<<<<<<<<<<<<moved from middle of code to the top
EventsData := nil; // else it's warn //<<<<<<<<<<<<<<<<moved from middle of code to the top
...
if result > 0 then begin
if EventsData = nil then begin //<<<<<<<<<<<<<<<<added
EventsData := TROBinaryMemoryStream.Create;
EventsData.Write(result, SizeOf(integer)); // For legacy stream format compatibility
end; //<<<<<<<<<<<<<<<<added
Ok thanks. That fixed the problem.
bugs://77335 got closed with status fixed.