Skip to main content

qubit_http/sse/
sse_chunk.rs

1/*******************************************************************************
2 *
3 *    Copyright (c) 2025 - 2026 Haixing Hu.
4 *
5 *    SPDX-License-Identifier: Apache-2.0
6 *
7 *    Licensed under the Apache License, Version 2.0.
8 *
9 ******************************************************************************/
10//! Decoded JSON chunk or explicit SSE stream end marker.
11//!
12
13use serde::{Deserialize, Serialize};
14use strum::{Display, EnumString};
15
16/// Either a decoded JSON value from one SSE data payload or an explicit end marker.
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Display, EnumString)]
18#[serde(bound(
19    serialize = "T: serde::Serialize",
20    deserialize = "T: serde::de::DeserializeOwned"
21))]
22#[serde(rename_all = "snake_case")]
23#[strum(serialize_all = "snake_case")]
24pub enum SseChunk<T> {
25    /// Successfully deserialized JSON object.
26    #[strum(disabled)]
27    Data(T),
28    /// Synthetic item emitted when [`DoneMarkerPolicy`](crate::sse::DoneMarkerPolicy)
29    /// matches (then stream ends).
30    Done,
31}