1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
use super::DataIdAliasMap;
use std::collections::HashMap;
use uuid::Uuid;

/// ダウンストリーム開始要求です。
///
/// ダウンストリーム開始要求を受信したブローカーは、ブローカーからノード方向のデータ送信ストリームを開始します。
#[derive(Clone, PartialEq, Debug)]
pub struct DownstreamOpenRequest {
    // message fields
    /// リクエストID
    pub request_id: super::RequestId,
    /// 割り当てを希望するストリームIDエイリアス
    pub desired_stream_id_alias: u32,
    /// ダウンストリームフィルタ
    pub downstream_filters: Vec<super::DownstreamFilter>,
    /// 有効期限
    pub expiry_interval: chrono::Duration,
    /// データIDエイリアス
    pub data_id_aliases: DataIdAliasMap,
    /// QoS
    pub qos: super::QoS,
    /// 空チャンク省略フラグ。trueの場合、StreamChunk内のDataPointGroupが空の時、DownstreamChunkの送信を省略します。
    pub omit_empty_chunk: bool,
}

impl Default for DownstreamOpenRequest {
    fn default() -> Self {
        Self {
            request_id: super::RequestId::default(),
            desired_stream_id_alias: 0,
            downstream_filters: Vec::new(),
            expiry_interval: chrono::Duration::zero(),
            data_id_aliases: HashMap::new(),
            qos: super::QoS::Unreliable,
            omit_empty_chunk: false,
        }
    }
}

/// ダウンストリーム開始要求に対する応答です。
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamOpenResponse {
    /// リクエストID
    pub request_id: super::RequestId,
    /// 割り当てられたストリームID
    pub assigned_stream_id: Uuid,
    /// サーバー時刻
    pub server_time: chrono::DateTime<chrono::Utc>,
    /// 結果コード
    pub result_code: super::ResultCode,
    /// 結果文字列
    pub result_string: String,
}

/// ダウンストリーム再開要求です。
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamResumeRequest {
    /// リクエストID
    pub request_id: super::RequestId,
    /// ストリームID
    pub stream_id: Uuid,
    /// 割り当てを希望するストリームIDエイリアス
    pub desired_stream_id_alias: u32,
}

/// ダウンストリーム再開要求に対する応答です。
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamResumeResponse {
    /// リクエストID
    pub request_id: super::RequestId,
    /// 結果コード
    pub result_code: super::ResultCode,
    /// 結果文字列
    pub result_string: String,
}

/// ダウンストリーム切断要求です。
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamCloseRequest {
    /// リクエストID
    pub request_id: super::RequestId,
    /// ストリームID
    pub stream_id: Uuid,
}

/// ダウンストリーム切断要求に対する応答です。
#[derive(Clone, PartialEq, Default, Debug)]
pub struct DownstreamCloseResponse {
    /// リクエストID
    pub request_id: super::RequestId,
    /// 結果コード
    pub result_code: super::ResultCode,
    /// 結果文字列
    pub result_string: String,
}