IObservable<Packet>
さまざまなサブスクリプションが着信パケットを分析できるようにするホットオブザーバブルです。
ID を持つデータを送信し、同じ ID を持つ応答を待機するメソッドを作成したいと考えています。擬似コード:
void SendData(byte[] data, int retries, int timeout, Action<Packet> success, Action fail)
{
var sequenceId = GetSequenceId();
_port.SendData(data, sequenceId);
_packetStream.Where(p => p.SequenceId == sequenceId)
.Take(1)
.WaitForTimeout(timeout)
.WaitForRetry(retries)
.Subscribe(success) //Need to unsubscribe after packet is received
//If we didn't receive an answer packet, then call fail() action
}
このようなことが Reactive Extensions で通常どのように行われるかはよくわかりません。いくつかの提案を受け取って本当にうれしいです。ありがとう。