saeaadl / aadlv2.2

SAE AADL core language, version 2.2
1 stars 0 forks source link

Add Overflow_Handling_Protocol to indicate that sender will block #48

Closed philip-alldredge closed 3 years ago

philip-alldredge commented 4 years ago

Overflow_Handling_Protocol only allows DropOldest, DropNewest, and Error. I feel that this is too limiting. There exist systems which use queued port-style communication which will block the sender if a queue is full. I suggest adding a BlockSender value to allow representing such systems.

jjhugues commented 4 years ago

BlockSender would have some consequences on the sender, it could block the sender iff the communication is synchronous. What could be the corresponding legality rule?

BA has some provisions for synchronous RPC that should be looked here.

Suggestion of blocking the sender is probably a connection property + port property .

jjhugues commented 4 years ago

@philip-alldredge we discussed this issue today during the meeting. Can you clarify which systems or model of computation you had in mind?

As we discussed, this is tricky issue since it concerns ports, connections, but also communication services

philip-alldredge commented 4 years ago

When I originally opened the issue, I was trying to model an application that was using Golang buffered channels to communicate between threads. Such buffered channels will block if the queue is full and I was trying to capture that behavior in the model since that was the intended behavior. None of the existing overflow handling protocols fit the intended behavior.