thanks for response. Its a bit limiting… in some cases I need to use more than one TRORemoteService, all of them has its own dedicated BinMessage component, but all of them shares one SuperChannel. In my client/server model its important to recognize & separate calls from different TRORemoteService instances, using BinMessage.ClientID seems as simple and clever way, but… forced value unification inside of SuperChannel destroys such idea in a second…
What technique You can recommend as an alternative to realize such behavior?
why you can’t change super_tcp_channel.ClientID or super_http_channel.SessionID property before sending request to new service?
so your code will looks something like
channel.Active := False;
channel.ClientID := BinMessage.ClientID;
(RORemoteService as INewService).Sum(1,2)
thanks for reply… Im pretty sure I cannot manually set SuperChannel.Active/ClientID properties before call is processed. In my scenario, TRORemoteService is used as low level communication component for TDARemoteDataAdapter… so every remote calls are invoked automatically, without another code interaction. As I discovered, there is no suitable event in [DataAdapter - RemoteService - BinMessage - SuperChannel] component chain, which could be used to handle this automatically.
So, I think the best and the only one solution to ensure such behavior is use separate [SuperChannel - BinMessage] component pair for every TRORemoteService.
Btw, what exactly (or more closely, at least) means the “proper working of super channels” mentioned in Your first reply? Is it someting related to active events handling/delivering?