George Duckett
George Duckett

Reputation: 32438

Building on top of a custom stream

I have created a stream based on a stateless protocol, think 2 web servers sending very limited requests to each other.

As such neither will know if I suddenly stop one as no connection will close, there will simply be no requests. There could legitimately be a gap in requests so I don't want to treat the lack of them as a lost connection.

What I want to do is send a heartbeat to say "I'm alive", I obviously don't want the heartbeat data when I read form the stream though, so my question.

How do I create a new stream class that wraps another stream and sends heartbeat data without exposing that to calling code?

Upvotes: 3

Views: 170

Answers (1)

Alexei Levenkov
Alexei Levenkov

Reputation: 100545

Assuming 2 similar implementations on both sides: send each block of data with a header so you can safely send Zero-data heartbeat blocks. I.e. translate Write on outer stream into several writes on inner stream like "{Data, 100 bytes, [bytes]}, {Data, 13 bytes, [bytes]}", heartbeat would look like "{Ping, 0 bytes, []}". On receiving end immediately respond with similar empty Ping.

Upvotes: 1

Related Questions