Hi,
while implementing the OCP server prototype, I got two questions regarding the
CE message:
0a. While TE has a result parameter, CE has not.
Both have an optional error parameter.
I know we had this discussion on the list but cannot really remember.
Section 8.13: "error ... that cannot be expressed via result"
What kind of error could that be?
0b. The syntax of "result" should be a struct { uni [string] }.
Depending on 0a:
1. How about adding an optional, anonymous result parameter to CE?
I use status codes and error strings for various errors that
sometimes close a connection sometimes just the transaction.
It's handy to keep both similar.
2. The CE messages implies closing of all open transactions.
I would like to restrict this to happen only for the error case.
Only if the processor wants to close the connection but does not
expect to get any response for open transactions.
If a transaction should close without error, a TE message must be sent.
I am still fine that TE implies AME.
Reasons:
- In real environments one connection will handle many transactions.
- No real benefit to skip the very last TE message(s). That would safe
only a few messages out of hundreds.
- If CE implies TE and TE implies AME and a connection has many concurrent
transactions, a callout server needs to do a lot of cleanup if a
connection closes:
i) check error of CE whether a graceful close seems to be wanted
ii) iterate over all open transactions
iii) assume that all application messages are now done, force to
finish all filtering and return data for all transactions.
iv) when this is done for all transactions send CE and close.
It will be easier if this procedure runs only per transaction.
Are you o.k. with changing this?
Regards
Martin