visionai::
StreamReceiver
#include <streams.h>
StreamReceiver
is the client through which users receive Packet
s from a stream.
Summary
Each instance of the StreamReceiver
represents a single connection to a specific stream. Once created, the user may repeatedly call Receive
.
Example - Repeatedly receive Packet
s from a specific stream.
// First populate the options. StreamReceiver :: Options options ; options . service_connection_options = ...; options . stream_id = "my-stream" ; // Create an instance of the `StreamReceiver`. auto stream_receiver_statusor = StreamReceiver :: Create ( options ); if ( ! stream_receiver . ok ()) { // An error occurred during the setup of the receiver. // You can fix the problem and try again. } auto stream_receiver = std :: move ( * stream_receiver_statusor ); // Now you can repeatedly receive Packets. while ( true ) { Packet p ; auto status = stream_receiver -> Receive ( & p ); if ( ! status . ok ()) { // An error occurred. If the error is transient, then you can retry // with the same receiver. Otherwise, create a new instance to retry. } } // When no more packets are desired, destroy the receiver. stream_receiver -> reset ();
Constructors and Destructors
StreamReceiver
(const StreamReceiver
&)
Public static functions
absl::StatusOr< std::unique_ptr< StreamReceiver
> >
Public functions
Receive
(Packet *packet)
absl::Status
Packet
from a stream. Receive
(absl::Duration timeout, Packet *packet)
absl::Status
operator=
(const StreamReceiver
&)=delete
Structs
Options
to configure the StreamReceiver
.
Public static functions
Create
absl :: StatusOr < std :: unique_ptr < StreamReceiver > > Create ( const Options & )
Create a readily usable instance of a StreamReceiver
.
Public functions
Receive
absl :: Status Receive ( Packet * packet )
Receive a Packet
from a stream.
Returns OK on success. Otherwise, returns the following possible errors:
NOT_FOUND: This is only possible with the second overload. It is returned when there are no Packet
s in the server before timeout
has run out. You may immediately retry with the same receiver instance.
OUT_OF_RANGE: This indicates that the last packet in the event has been delivered. You can create a new StreamReceiver
to read from a different event.
Other error codes: To retry, create a new instance of the StreamReceiver
and Receive
through that.
The first overload blocks until either there is a new Packet
or until a non-transient error has occurred.
The second overload blocks up to timeout
before returning NOT_FOUND. Otherwise, either yields a Packet
or returns a non-transient error.
Receive
absl :: Status Receive ( absl :: Duration timeout , Packet * packet )
StreamReceiver
StreamReceiver () = default
StreamReceiver
StreamReceiver ( const StreamReceiver & ) = delete
operator=
StreamReceiver & operator = ( const StreamReceiver & ) = delete
~StreamReceiver
~ StreamReceiver () = default

