Delphi 11.2. RO 1549
Firemonkey app. Runs ok on windows. raise this exception when run on linux.
EventReceiverPollException
‘An exception was raised on the server: The message does not have an interface name’
Any clue?
Delphi 11.2. RO 1549
Firemonkey app. Runs ok on windows. raise this exception when run on linux.
EventReceiverPollException
‘An exception was raised on the server: The message does not have an interface name’
Any clue?
Hi,
Can you create a simple testcase that reproduces this, pls?
you can drop email to support@ for keeping privacy
Honestly i try with simple event receiver and cant reproduce. Maybe if i give you access to my pc and you can see the code?
Hi,
I don’t think, that I can easily detect what is wrong.
try to add additional event sink to your project. use code from simple testcase. if it work, you can replace “broken” one with new one
I forget to say it works perfect on D 10.4 DA 1489. For this reason i doubt is a problem with my code.
Still cant fix this problem, i try doing debug. New discover maybe help you @EvgenyK to give me a light to what check
The bug code is on client app compiled for LINUX using D11.2 Alexandria and DA 1549, dont matter wich server compiled combination is (on windows) I try server build for windows with D10.4 DA 1489 and D11.2 with DA 1549.
In both situations the LINUX client (not windows client) compiled with D11.2 and DA 1549 , on some message on ROSERVER unit lines 685 brings empty aMessage.InterfaceName and aMessage.MessageName so the err_UnspecifiedMessage error is raised.
The problem raises when event manager is attached
Some internal messages , generated by RO, have this values empty
Even the serializer fails… many errors on linux
procedure TPetroBoxService_Proxy.GetClientByPatente(const NroTerminal: Integer; const Patente: ROAnsiString; var DatosPos: TerminalesPOS_Types_intf.TDatosPos; var EncontradoporTAG: Boolean);
var
lMessage: IROMessage;
lTransportChannel: IROTransportChannel;
begin
lMessage := __GetMessage();
lMessage.SetAutoGeneratedNamespaces(DefaultNamespaces());
lTransportChannel := __TransportChannel;
try
lMessage.InitializeRequestMessage(lTransportChannel, 'PetroBoxDataLibrary', __InterfaceName, 'GetClientByPatente');
lMessage.Write('NroTerminal', System.TypeInfo(Integer), NroTerminal, []);
lMessage.Write('Patente', System.TypeInfo(ROAnsiString), Patente, [paAsAnsiString]);
lMessage.Write('DatosPos', System.TypeInfo(TerminalesPOS_Types_intf.TDatosPos), DatosPos, []); <---- here fails...
lMessage.Write('EncontradoporTAG', System.TypeInfo(Boolean), EncontradoporTAG, []);
lMessage.Finalize();
lTransportChannel.Dispatch(lMessage);
lMessage.Read('DatosPos', System.TypeInfo(TerminalesPOS_Types_intf.TDatosPos), DatosPos, []);
lMessage.Read('EncontradoporTAG', System.TypeInfo(Boolean), EncontradoporTAG, []);
finally
lMessage.UnsetAttributes(lTransportChannel);
lMessage.FreeStream();
lMessage := nil;
lTransportChannel := nil;
end;
end;
Hi,
this line should be failed:
lMessage.InitializeRequestMessage(lTransportChannel, 'PetroBoxDataLibrary', __InterfaceName, 'GetClientByPatente');
instead of
lMessage.Write('DatosPos', System.TypeInfo(TerminalesPOS_Types_intf.TDatosPos), DatosPos, []); <---- here fails...
try to pass events via json message instead of bin one
not sure, but it may solve this issue.
No, this is another bug. Happens i was freeandnil a trocomplex inside another torcomplex and seems like assign method don´t handle this situation Already fixed, removing the freeandnil.
The interface and message empty is absolutely related to event receiver.
I do, now the error message change to this.
The problem is related to event receiver. If i disable event receiver register on client app, the problem is gone and communication with services and messages run fine, no errors.
Hi,
try to store whole event message. it will be useful for investigation.
it can be done with the OnReadFromStream/OnWriteToStream events of server channel or the OnSendStream/OnReceiveStream events of client channel.