SOME/IP
Methods: fire&forget
A fire&forget method asks the server to do something and expects nothing back: no RESPONSE, and no ERROR either.
Fire and forget
Some requests need no reply. "Reset", "write your current state to the log": the client only wants the server to do it. A fire&forget call is a message with the Message Type REQUEST_NO_RETURN in its SOME/IP header. The server runs the method and stays silent.
Three rules
header
REQUEST_NO_RETURN
The same SOME/IP header as a REQUEST, but the Message Type says no response is expected. The Return Code stays E_OK.
errors
No ERROR ever comes back
If the server does not know the method, is not ready, or fails, it still sends nothing. Error handling, if needed, is the application's job.
delivery
No proof of arrival
Over UDP (connectionless transport, lesson 22) a lost request is simply gone. Over TCP (connection-oriented transport that repeats lost data) the connection repeats lost bytes, but the client application still gets no reply from the server.
How the Classic Platform describes it
There is no fire&forget flag on a ClientServerOperation. A fire&forget method is described like an event in the other direction:
| The fire&forget method… | is described as | The client SWC uses |
|---|---|---|
| has arguments | a data element (one value an interface carries) of a sender-receiver interface (an interface over which one SWC sends data and others receive it); the client sends, the server receives | a normal write |
| has no arguments | a trigger of a trigger interface (an interface that carries triggers: signals without data) | a normal trigger |
The Message Type REQUEST_NO_RETURN comes from the SOME/IP transformer settings for that data element. An event uses the same mechanism with Message Type NOTIFICATION. On the wire the two differ only in the Message Type, the ID (a Method ID instead of an Event ID) and the direction.
Try it
Choose what happens at the server and step through both kinds of method.
Things to notice. With fire&forget the client's story ends the same way in all three cases: it sent the REQUEST_NO_RETURN and heard nothing. Only request/response lets the client tell success, failure and loss apart (loss shows up as E_TIMEOUT).
Check yourself optional
New terms in this lesson
| Term | Meaning |
|---|---|
| fire&forget | A method call without a response: nothing comes back, not even an error |
REQUEST_NO_RETURN | The Message Type of a fire&forget call |
| sender-receiver interface, data element | How a fire&forget method with arguments is described: the client writes a data element, the server receives it |
| trigger interface | How a fire&forget method without arguments is described: the client fires a trigger |
Source: SOME/IP Protocol Specification, R20-11, sections 4.2.3 and 4.2.6.2; System Template, R20-11, sections 10.1.3 and 10.2; SOME/IP Transformer, R20-11, sections 7.3.2 and 7.3.3.