#[ws_from_stream]
Expand description
Wraps function body with WebSocket stream processing.
This attribute macro generates code that wraps the function body with a check to see if data can be read from a WebSocket stream. The function body is only executed if data is successfully read from the stream.
This attribute macro generates code that wraps the function body with a check to see if data can be read from a WebSocket stream. The function body is only executed if data is successfully read from the stream.
§Arguments
TokenStream
: The buffer to read from the WebSocket stream.TokenStream
: The function item to be modified
§Returns
Returns a TokenStream containing the modified function with WebSocket stream processing logic.
§Examples
Using no parameters (default buffer size):
use hyperlane::*;
use hyperlane_macros::*;
#[http_from_stream]
async fn handle_data(ctx: Context) {
// Process data from HTTP stream with default buffer size
}
Basic usage with buffer size:
use hyperlane::*;
use hyperlane_macros::*;
#[ws_from_stream(1024)]
async fn handle_data(ctx: Context) {
// Process data from stream with 1024 byte buffer
}
Using a variable name for the data:
use hyperlane::*;
use hyperlane_macros::*;
#[ws_from_stream(data)]
async fn handle_data(ctx: Context) {
// Data will be available in the `data` variable
}
Using both buffer size and variable name:
use hyperlane::*;
use hyperlane_macros::*;
#[ws_from_stream(1024, payload)]
async fn handle_large_data(ctx: Context) {
// Process large data with 1024 byte buffer, available in `payload` variable
}
Reversing buffer size and variable name:
use hyperlane::*;
use hyperlane_macros::*;
#[ws_from_stream(payload, 1024)]
async fn handle_reversed_data(ctx: Context) {
// Process data with 1024 byte buffer, available in `payload` variable
}