#
google_cloud_pubsub/generated/gapic_dataplane/
model.rs

    1// Copyright 2025 Google LLC
    2//
    3// Licensed under the Apache License, Version 2.0 (the "License");
    4// you may not use this file except in compliance with the License.
    5// You may obtain a copy of the License at
    6//
    7//     https://www.apache.org/licenses/LICENSE-2.0
    8//
    9// Unless required by applicable law or agreed to in writing, software
    10// distributed under the License is distributed on an "AS IS" BASIS,
    11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12// See the License for the specific language governing permissions and
    13// limitations under the License.
    14//
    15// Code generated by sidekick. DO NOT EDIT.
    16
    17#![allow(rustdoc::redundant_explicit_links)]
    18#![allow(rustdoc::broken_intra_doc_links)]
    19
    20mod debug;
    21mod deserialize;
    22mod serialize;
    23
    24/// A message that is published by publishers and consumed by subscribers. The
    25/// message must contain either a non-empty data field or at least one attribute.
    26/// Note that client libraries represent this object differently
    27/// depending on the language. See the corresponding [client library
    28/// documentation](https://cloud.google.com/pubsub/docs/reference/libraries) for
    29/// more information. See [quotas and limits]
    30/// (<https://cloud.google.com/pubsub/quotas>) for more information about message
    31/// limits.
    32#[derive(Clone, Default, PartialEq)]
    33#[non_exhaustive]
    34pub struct PubsubMessage {
    35    /// Optional. The message data field. If this field is empty, the message must
    36    /// contain at least one attribute.
    37    pub data: ::bytes::Bytes,
    38
    39    /// Optional. Attributes for this message. If this field is empty, the message
    40    /// must contain non-empty data. This can be used to filter messages on the
    41    /// subscription.
    42    pub attributes: std::collections::HashMap<std::string::String, std::string::String>,
    43
    44    /// ID of this message, assigned by the server when the message is published.
    45    /// Guaranteed to be unique within the topic. This value may be read by a
    46    /// subscriber that receives a `PubsubMessage` via a `Pull` call or a push
    47    /// delivery. It must not be populated by the publisher in a `Publish` call.
    48    pub message_id: std::string::String,
    49
    50    /// The time at which the message was published, populated by the server when
    51    /// it receives the `Publish` call. It must not be populated by the
    52    /// publisher in a `Publish` call.
    53    pub publish_time: std::option::Option<wkt::Timestamp>,
    54
    55    /// Optional. If non-empty, identifies related messages for which publish order
    56    /// should be respected. If a `Subscription` has `enable_message_ordering` set
    57    /// to `true`, messages published with the same non-empty `ordering_key` value
    58    /// will be delivered to subscribers in the order in which they are received by
    59    /// the Pub/Sub system. All `PubsubMessage`s published in a given
    60    /// `PublishRequest` must specify the same `ordering_key` value. For more
    61    /// information, see [ordering
    62    /// messages](https://cloud.google.com/pubsub/docs/ordering).
    63    pub ordering_key: std::string::String,
    64
    65    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    66}
    67
    68impl PubsubMessage {
    69    pub fn new() -> Self {
    70        std::default::Default::default()
    71    }
    72
    73    /// Sets the value of [data][crate::model::PubsubMessage::data].
    74    pub fn set_data<T: std::convert::Into<::bytes::Bytes>>(mut self, v: T) -> Self {
    75        self.data = v.into();
    76        self
    77    }
    78
    79    /// Sets the value of [attributes][crate::model::PubsubMessage::attributes].
    80    pub fn set_attributes<T, K, V>(mut self, v: T) -> Self
    81    where
    82        T: std::iter::IntoIterator<Item = (K, V)>,
    83        K: std::convert::Into<std::string::String>,
    84        V: std::convert::Into<std::string::String>,
    85    {
    86        use std::iter::Iterator;
    87        self.attributes = v.into_iter().map(|(k, v)| (k.into(), v.into())).collect();
    88        self
    89    }
    90
    91    /// Sets the value of [message_id][crate::model::PubsubMessage::message_id].
    92    pub fn set_message_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    93        self.message_id = v.into();
    94        self
    95    }
    96
    97    /// Sets the value of [publish_time][crate::model::PubsubMessage::publish_time].
    98    pub fn set_publish_time<T>(mut self, v: T) -> Self
    99    where
    100        T: std::convert::Into<wkt::Timestamp>,
    101    {
    102        self.publish_time = std::option::Option::Some(v.into());
    103        self
    104    }
    105
    106    /// Sets or clears the value of [publish_time][crate::model::PubsubMessage::publish_time].
    107    pub fn set_or_clear_publish_time<T>(mut self, v: std::option::Option<T>) -> Self
    108    where
    109        T: std::convert::Into<wkt::Timestamp>,
    110    {
    111        self.publish_time = v.map(|x| x.into());
    112        self
    113    }
    114
    115    /// Sets the value of [ordering_key][crate::model::PubsubMessage::ordering_key].
    116    pub fn set_ordering_key<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    117        self.ordering_key = v.into();
    118        self
    119    }
    120}
    121
    122impl wkt::message::Message for PubsubMessage {
    123    fn typename() -> &'static str {
    124        "type.googleapis.com/google.pubsub.v1.PubsubMessage"
    125    }
    126}
    127
    128/// Request for the Publish method.
    129#[derive(Clone, Default, PartialEq)]
    130#[non_exhaustive]
    131pub struct PublishRequest {
    132    /// Required. Identifier. The messages in the request will be published on this
    133    /// topic. Format is `projects/{project}/topics/{topic}`.
    134    pub topic: std::string::String,
    135
    136    /// Required. The messages to publish.
    137    pub messages: std::vec::Vec<crate::model::PubsubMessage>,
    138
    139    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    140}
    141
    142impl PublishRequest {
    143    pub fn new() -> Self {
    144        std::default::Default::default()
    145    }
    146
    147    /// Sets the value of [topic][crate::model::PublishRequest::topic].
    148    pub fn set_topic<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    149        self.topic = v.into();
    150        self
    151    }
    152
    153    /// Sets the value of [messages][crate::model::PublishRequest::messages].
    154    pub fn set_messages<T, V>(mut self, v: T) -> Self
    155    where
    156        T: std::iter::IntoIterator<Item = V>,
    157        V: std::convert::Into<crate::model::PubsubMessage>,
    158    {
    159        use std::iter::Iterator;
    160        self.messages = v.into_iter().map(|i| i.into()).collect();
    161        self
    162    }
    163}
    164
    165impl wkt::message::Message for PublishRequest {
    166    fn typename() -> &'static str {
    167        "type.googleapis.com/google.pubsub.v1.PublishRequest"
    168    }
    169}
    170
    171/// Response for the `Publish` method.
    172#[derive(Clone, Default, PartialEq)]
    173#[non_exhaustive]
    174pub struct PublishResponse {
    175    /// Optional. The server-assigned ID of each published message, in the same
    176    /// order as the messages in the request. IDs are guaranteed to be unique
    177    /// within the topic.
    178    pub message_ids: std::vec::Vec<std::string::String>,
    179
    180    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    181}
    182
    183impl PublishResponse {
    184    pub fn new() -> Self {
    185        std::default::Default::default()
    186    }
    187
    188    /// Sets the value of [message_ids][crate::model::PublishResponse::message_ids].
    189    pub fn set_message_ids<T, V>(mut self, v: T) -> Self
    190    where
    191        T: std::iter::IntoIterator<Item = V>,
    192        V: std::convert::Into<std::string::String>,
    193    {
    194        use std::iter::Iterator;
    195        self.message_ids = v.into_iter().map(|i| i.into()).collect();
    196        self
    197    }
    198}
    199
    200impl wkt::message::Message for PublishResponse {
    201    fn typename() -> &'static str {
    202        "type.googleapis.com/google.pubsub.v1.PublishResponse"
    203    }
    204}
    205
    206/// A message and its corresponding acknowledgment ID.
    207#[derive(Clone, Default, PartialEq)]
    208#[non_exhaustive]
    209pub struct ReceivedMessage {
    210    /// Optional. This ID can be used to acknowledge the received message.
    211    pub ack_id: std::string::String,
    212
    213    /// Optional. The message.
    214    pub message: std::option::Option<crate::model::PubsubMessage>,
    215
    216    /// Optional. The approximate number of times that Pub/Sub has attempted to
    217    /// deliver the associated message to a subscriber.
    218    ///
    219    /// More precisely, this is 1 + (number of NACKs) +
    220    /// (number of ack_deadline exceeds) for this message.
    221    ///
    222    /// A NACK is any call to ModifyAckDeadline with a 0 deadline. An ack_deadline
    223    /// exceeds event is whenever a message is not acknowledged within
    224    /// ack_deadline. Note that ack_deadline is initially
    225    /// Subscription.ackDeadlineSeconds, but may get extended automatically by
    226    /// the client library.
    227    ///
    228    /// Upon the first delivery of a given message, `delivery_attempt` will have a
    229    /// value of 1. The value is calculated at best effort and is approximate.
    230    ///
    231    /// If a DeadLetterPolicy is not set on the subscription, this will be 0.
    232    pub delivery_attempt: i32,
    233
    234    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    235}
    236
    237impl ReceivedMessage {
    238    pub fn new() -> Self {
    239        std::default::Default::default()
    240    }
    241
    242    /// Sets the value of [ack_id][crate::model::ReceivedMessage::ack_id].
    243    pub fn set_ack_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    244        self.ack_id = v.into();
    245        self
    246    }
    247
    248    /// Sets the value of [message][crate::model::ReceivedMessage::message].
    249    pub fn set_message<T>(mut self, v: T) -> Self
    250    where
    251        T: std::convert::Into<crate::model::PubsubMessage>,
    252    {
    253        self.message = std::option::Option::Some(v.into());
    254        self
    255    }
    256
    257    /// Sets or clears the value of [message][crate::model::ReceivedMessage::message].
    258    pub fn set_or_clear_message<T>(mut self, v: std::option::Option<T>) -> Self
    259    where
    260        T: std::convert::Into<crate::model::PubsubMessage>,
    261    {
    262        self.message = v.map(|x| x.into());
    263        self
    264    }
    265
    266    /// Sets the value of [delivery_attempt][crate::model::ReceivedMessage::delivery_attempt].
    267    pub fn set_delivery_attempt<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
    268        self.delivery_attempt = v.into();
    269        self
    270    }
    271}
    272
    273impl wkt::message::Message for ReceivedMessage {
    274    fn typename() -> &'static str {
    275        "type.googleapis.com/google.pubsub.v1.ReceivedMessage"
    276    }
    277}
    278
    279/// Request for the ModifyAckDeadline method.
    280#[derive(Clone, Default, PartialEq)]
    281#[non_exhaustive]
    282pub struct ModifyAckDeadlineRequest {
    283    /// Required. The name of the subscription.
    284    /// Format is `projects/{project}/subscriptions/{sub}`.
    285    pub subscription: std::string::String,
    286
    287    /// Required. List of acknowledgment IDs.
    288    pub ack_ids: std::vec::Vec<std::string::String>,
    289
    290    /// Required. The new ack deadline with respect to the time this request was
    291    /// sent to the Pub/Sub system. For example, if the value is 10, the new ack
    292    /// deadline will expire 10 seconds after the `ModifyAckDeadline` call was
    293    /// made. Specifying zero might immediately make the message available for
    294    /// delivery to another subscriber client. This typically results in an
    295    /// increase in the rate of message redeliveries (that is, duplicates).
    296    /// The minimum deadline you can specify is 0 seconds.
    297    /// The maximum deadline you can specify in a single request is 600 seconds
    298    /// (10 minutes).
    299    pub ack_deadline_seconds: i32,
    300
    301    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    302}
    303
    304impl ModifyAckDeadlineRequest {
    305    pub fn new() -> Self {
    306        std::default::Default::default()
    307    }
    308
    309    /// Sets the value of [subscription][crate::model::ModifyAckDeadlineRequest::subscription].
    310    pub fn set_subscription<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    311        self.subscription = v.into();
    312        self
    313    }
    314
    315    /// Sets the value of [ack_ids][crate::model::ModifyAckDeadlineRequest::ack_ids].
    316    pub fn set_ack_ids<T, V>(mut self, v: T) -> Self
    317    where
    318        T: std::iter::IntoIterator<Item = V>,
    319        V: std::convert::Into<std::string::String>,
    320    {
    321        use std::iter::Iterator;
    322        self.ack_ids = v.into_iter().map(|i| i.into()).collect();
    323        self
    324    }
    325
    326    /// Sets the value of [ack_deadline_seconds][crate::model::ModifyAckDeadlineRequest::ack_deadline_seconds].
    327    pub fn set_ack_deadline_seconds<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
    328        self.ack_deadline_seconds = v.into();
    329        self
    330    }
    331}
    332
    333impl wkt::message::Message for ModifyAckDeadlineRequest {
    334    fn typename() -> &'static str {
    335        "type.googleapis.com/google.pubsub.v1.ModifyAckDeadlineRequest"
    336    }
    337}
    338
    339/// Request for the Acknowledge method.
    340#[derive(Clone, Default, PartialEq)]
    341#[non_exhaustive]
    342pub struct AcknowledgeRequest {
    343    /// Required. The subscription whose message is being acknowledged.
    344    /// Format is `projects/{project}/subscriptions/{sub}`.
    345    pub subscription: std::string::String,
    346
    347    /// Required. The acknowledgment ID for the messages being acknowledged that
    348    /// was returned by the Pub/Sub system in the `Pull` response. Must not be
    349    /// empty.
    350    pub ack_ids: std::vec::Vec<std::string::String>,
    351
    352    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    353}
    354
    355impl AcknowledgeRequest {
    356    pub fn new() -> Self {
    357        std::default::Default::default()
    358    }
    359
    360    /// Sets the value of [subscription][crate::model::AcknowledgeRequest::subscription].
    361    pub fn set_subscription<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    362        self.subscription = v.into();
    363        self
    364    }
    365
    366    /// Sets the value of [ack_ids][crate::model::AcknowledgeRequest::ack_ids].
    367    pub fn set_ack_ids<T, V>(mut self, v: T) -> Self
    368    where
    369        T: std::iter::IntoIterator<Item = V>,
    370        V: std::convert::Into<std::string::String>,
    371    {
    372        use std::iter::Iterator;
    373        self.ack_ids = v.into_iter().map(|i| i.into()).collect();
    374        self
    375    }
    376}
    377
    378impl wkt::message::Message for AcknowledgeRequest {
    379    fn typename() -> &'static str {
    380        "type.googleapis.com/google.pubsub.v1.AcknowledgeRequest"
    381    }
    382}
    383
    384/// Request for the `StreamingPull` streaming RPC method. This request is used to
    385/// establish the initial stream as well as to stream acknowledgments and ack
    386/// deadline modifications from the client to the server.
    387#[derive(Clone, Default, PartialEq)]
    388#[non_exhaustive]
    389pub struct StreamingPullRequest {
    390    /// Required. The subscription for which to initialize the new stream. This
    391    /// must be provided in the first request on the stream, and must not be set in
    392    /// subsequent requests from client to server.
    393    /// Format is `projects/{project}/subscriptions/{sub}`.
    394    pub subscription: std::string::String,
    395
    396    /// Optional. List of acknowledgment IDs for acknowledging previously received
    397    /// messages (received on this stream or a different stream). If an ack ID has
    398    /// expired, the corresponding message may be redelivered later. Acknowledging
    399    /// a message more than once will not result in an error. If the acknowledgment
    400    /// ID is malformed, the stream will be aborted with status `INVALID_ARGUMENT`.
    401    pub ack_ids: std::vec::Vec<std::string::String>,
    402
    403    /// Optional. The list of new ack deadlines for the IDs listed in
    404    /// `modify_deadline_ack_ids`. The size of this list must be the same as the
    405    /// size of `modify_deadline_ack_ids`. If it differs the stream will be aborted
    406    /// with `INVALID_ARGUMENT`. Each element in this list is applied to the
    407    /// element in the same position in `modify_deadline_ack_ids`. The new ack
    408    /// deadline is with respect to the time this request was sent to the Pub/Sub
    409    /// system. Must be >= 0. For example, if the value is 10, the new ack deadline
    410    /// will expire 10 seconds after this request is received. If the value is 0,
    411    /// the message is immediately made available for another streaming or
    412    /// non-streaming pull request. If the value is < 0 (an error), the stream will
    413    /// be aborted with status `INVALID_ARGUMENT`.
    414    pub modify_deadline_seconds: std::vec::Vec<i32>,
    415
    416    /// Optional. List of acknowledgment IDs whose deadline will be modified based
    417    /// on the corresponding element in `modify_deadline_seconds`. This field can
    418    /// be used to indicate that more time is needed to process a message by the
    419    /// subscriber, or to make the message available for redelivery if the
    420    /// processing was interrupted.
    421    pub modify_deadline_ack_ids: std::vec::Vec<std::string::String>,
    422
    423    /// Required. The ack deadline to use for the stream. This must be provided in
    424    /// the first request on the stream, but it can also be updated on subsequent
    425    /// requests from client to server. The minimum deadline you can specify is 10
    426    /// seconds. The maximum deadline you can specify is 600 seconds (10 minutes).
    427    pub stream_ack_deadline_seconds: i32,
    428
    429    /// Optional. A unique identifier that is used to distinguish client instances
    430    /// from each other. Only needs to be provided on the initial request. When a
    431    /// stream disconnects and reconnects for the same stream, the client_id should
    432    /// be set to the same value so that state associated with the old stream can
    433    /// be transferred to the new stream. The same client_id should not be used for
    434    /// different client instances.
    435    pub client_id: std::string::String,
    436
    437    /// Optional. Flow control settings for the maximum number of outstanding
    438    /// messages. When there are `max_outstanding_messages` currently sent to the
    439    /// streaming pull client that have not yet been acked or nacked, the server
    440    /// stops sending more messages. The sending of messages resumes once the
    441    /// number of outstanding messages is less than this value. If the value is
    442    /// <= 0, there is no limit to the number of outstanding messages. This
    443    /// property can only be set on the initial StreamingPullRequest. If it is set
    444    /// on a subsequent request, the stream will be aborted with status
    445    /// `INVALID_ARGUMENT`.
    446    pub max_outstanding_messages: i64,
    447
    448    /// Optional. Flow control settings for the maximum number of outstanding
    449    /// bytes. When there are `max_outstanding_bytes` or more worth of messages
    450    /// currently sent to the streaming pull client that have not yet been acked or
    451    /// nacked, the server will stop sending more messages. The sending of messages
    452    /// resumes once the number of outstanding bytes is less than this value. If
    453    /// the value is <= 0, there is no limit to the number of outstanding bytes.
    454    /// This property can only be set on the initial StreamingPullRequest. If it is
    455    /// set on a subsequent request, the stream will be aborted with status
    456    /// `INVALID_ARGUMENT`.
    457    pub max_outstanding_bytes: i64,
    458
    459    /// Optional. The protocol version used by the client. This property can only
    460    /// be set on the initial StreamingPullRequest. If it is set on a subsequent
    461    /// request, the stream will be aborted with status `INVALID_ARGUMENT`.
    462    pub protocol_version: i64,
    463
    464    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    465}
    466
    467impl StreamingPullRequest {
    468    pub fn new() -> Self {
    469        std::default::Default::default()
    470    }
    471
    472    /// Sets the value of [subscription][crate::model::StreamingPullRequest::subscription].
    473    pub fn set_subscription<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    474        self.subscription = v.into();
    475        self
    476    }
    477
    478    /// Sets the value of [ack_ids][crate::model::StreamingPullRequest::ack_ids].
    479    pub fn set_ack_ids<T, V>(mut self, v: T) -> Self
    480    where
    481        T: std::iter::IntoIterator<Item = V>,
    482        V: std::convert::Into<std::string::String>,
    483    {
    484        use std::iter::Iterator;
    485        self.ack_ids = v.into_iter().map(|i| i.into()).collect();
    486        self
    487    }
    488
    489    /// Sets the value of [modify_deadline_seconds][crate::model::StreamingPullRequest::modify_deadline_seconds].
    490    pub fn set_modify_deadline_seconds<T, V>(mut self, v: T) -> Self
    491    where
    492        T: std::iter::IntoIterator<Item = V>,
    493        V: std::convert::Into<i32>,
    494    {
    495        use std::iter::Iterator;
    496        self.modify_deadline_seconds = v.into_iter().map(|i| i.into()).collect();
    497        self
    498    }
    499
    500    /// Sets the value of [modify_deadline_ack_ids][crate::model::StreamingPullRequest::modify_deadline_ack_ids].
    501    pub fn set_modify_deadline_ack_ids<T, V>(mut self, v: T) -> Self
    502    where
    503        T: std::iter::IntoIterator<Item = V>,
    504        V: std::convert::Into<std::string::String>,
    505    {
    506        use std::iter::Iterator;
    507        self.modify_deadline_ack_ids = v.into_iter().map(|i| i.into()).collect();
    508        self
    509    }
    510
    511    /// Sets the value of [stream_ack_deadline_seconds][crate::model::StreamingPullRequest::stream_ack_deadline_seconds].
    512    pub fn set_stream_ack_deadline_seconds<T: std::convert::Into<i32>>(mut self, v: T) -> Self {
    513        self.stream_ack_deadline_seconds = v.into();
    514        self
    515    }
    516
    517    /// Sets the value of [client_id][crate::model::StreamingPullRequest::client_id].
    518    pub fn set_client_id<T: std::convert::Into<std::string::String>>(mut self, v: T) -> Self {
    519        self.client_id = v.into();
    520        self
    521    }
    522
    523    /// Sets the value of [max_outstanding_messages][crate::model::StreamingPullRequest::max_outstanding_messages].
    524    pub fn set_max_outstanding_messages<T: std::convert::Into<i64>>(mut self, v: T) -> Self {
    525        self.max_outstanding_messages = v.into();
    526        self
    527    }
    528
    529    /// Sets the value of [max_outstanding_bytes][crate::model::StreamingPullRequest::max_outstanding_bytes].
    530    pub fn set_max_outstanding_bytes<T: std::convert::Into<i64>>(mut self, v: T) -> Self {
    531        self.max_outstanding_bytes = v.into();
    532        self
    533    }
    534
    535    /// Sets the value of [protocol_version][crate::model::StreamingPullRequest::protocol_version].
    536    pub fn set_protocol_version<T: std::convert::Into<i64>>(mut self, v: T) -> Self {
    537        self.protocol_version = v.into();
    538        self
    539    }
    540}
    541
    542impl wkt::message::Message for StreamingPullRequest {
    543    fn typename() -> &'static str {
    544        "type.googleapis.com/google.pubsub.v1.StreamingPullRequest"
    545    }
    546}
    547
    548/// Response for the `StreamingPull` method. This response is used to stream
    549/// messages from the server to the client.
    550#[derive(Clone, Default, PartialEq)]
    551#[non_exhaustive]
    552pub struct StreamingPullResponse {
    553    /// Optional. Received Pub/Sub messages.
    554    pub received_messages: std::vec::Vec<crate::model::ReceivedMessage>,
    555
    556    /// Optional. This field will only be set if `enable_exactly_once_delivery` is
    557    /// set to `true` and is not guaranteed to be populated.
    558    pub acknowledge_confirmation:
    559        std::option::Option<crate::model::streaming_pull_response::AcknowledgeConfirmation>,
    560
    561    /// Optional. This field will only be set if `enable_exactly_once_delivery` is
    562    /// set to `true` and is not guaranteed to be populated.
    563    pub modify_ack_deadline_confirmation:
    564        std::option::Option<crate::model::streaming_pull_response::ModifyAckDeadlineConfirmation>,
    565
    566    /// Optional. Properties associated with this subscription.
    567    pub subscription_properties:
    568        std::option::Option<crate::model::streaming_pull_response::SubscriptionProperties>,
    569
    570    pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    571}
    572
    573impl StreamingPullResponse {
    574    pub fn new() -> Self {
    575        std::default::Default::default()
    576    }
    577
    578    /// Sets the value of [received_messages][crate::model::StreamingPullResponse::received_messages].
    579    pub fn set_received_messages<T, V>(mut self, v: T) -> Self
    580    where
    581        T: std::iter::IntoIterator<Item = V>,
    582        V: std::convert::Into<crate::model::ReceivedMessage>,
    583    {
    584        use std::iter::Iterator;
    585        self.received_messages = v.into_iter().map(|i| i.into()).collect();
    586        self
    587    }
    588
    589    /// Sets the value of [acknowledge_confirmation][crate::model::StreamingPullResponse::acknowledge_confirmation].
    590    pub fn set_acknowledge_confirmation<T>(mut self, v: T) -> Self
    591    where
    592        T: std::convert::Into<crate::model::streaming_pull_response::AcknowledgeConfirmation>,
    593    {
    594        self.acknowledge_confirmation = std::option::Option::Some(v.into());
    595        self
    596    }
    597
    598    /// Sets or clears the value of [acknowledge_confirmation][crate::model::StreamingPullResponse::acknowledge_confirmation].
    599    pub fn set_or_clear_acknowledge_confirmation<T>(mut self, v: std::option::Option<T>) -> Self
    600    where
    601        T: std::convert::Into<crate::model::streaming_pull_response::AcknowledgeConfirmation>,
    602    {
    603        self.acknowledge_confirmation = v.map(|x| x.into());
    604        self
    605    }
    606
    607    /// Sets the value of [modify_ack_deadline_confirmation][crate::model::StreamingPullResponse::modify_ack_deadline_confirmation].
    608    pub fn set_modify_ack_deadline_confirmation<T>(mut self, v: T) -> Self
    609    where
    610        T: std::convert::Into<crate::model::streaming_pull_response::ModifyAckDeadlineConfirmation>,
    611    {
    612        self.modify_ack_deadline_confirmation = std::option::Option::Some(v.into());
    613        self
    614    }
    615
    616    /// Sets or clears the value of [modify_ack_deadline_confirmation][crate::model::StreamingPullResponse::modify_ack_deadline_confirmation].
    617    pub fn set_or_clear_modify_ack_deadline_confirmation<T>(
    618        mut self,
    619        v: std::option::Option<T>,
    620    ) -> Self
    621    where
    622        T: std::convert::Into<crate::model::streaming_pull_response::ModifyAckDeadlineConfirmation>,
    623    {
    624        self.modify_ack_deadline_confirmation = v.map(|x| x.into());
    625        self
    626    }
    627
    628    /// Sets the value of [subscription_properties][crate::model::StreamingPullResponse::subscription_properties].
    629    pub fn set_subscription_properties<T>(mut self, v: T) -> Self
    630    where
    631        T: std::convert::Into<crate::model::streaming_pull_response::SubscriptionProperties>,
    632    {
    633        self.subscription_properties = std::option::Option::Some(v.into());
    634        self
    635    }
    636
    637    /// Sets or clears the value of [subscription_properties][crate::model::StreamingPullResponse::subscription_properties].
    638    pub fn set_or_clear_subscription_properties<T>(mut self, v: std::option::Option<T>) -> Self
    639    where
    640        T: std::convert::Into<crate::model::streaming_pull_response::SubscriptionProperties>,
    641    {
    642        self.subscription_properties = v.map(|x| x.into());
    643        self
    644    }
    645}
    646
    647impl wkt::message::Message for StreamingPullResponse {
    648    fn typename() -> &'static str {
    649        "type.googleapis.com/google.pubsub.v1.StreamingPullResponse"
    650    }
    651}
    652
    653/// Defines additional types related to [StreamingPullResponse].
    654pub mod streaming_pull_response {
    655    #[allow(unused_imports)]
    656    use super::*;
    657
    658    /// Acknowledgment IDs sent in one or more previous requests to acknowledge a
    659    /// previously received message.
    660    #[derive(Clone, Default, PartialEq)]
    661    #[non_exhaustive]
    662    pub struct AcknowledgeConfirmation {
    663        /// Optional. Successfully processed acknowledgment IDs.
    664        pub ack_ids: std::vec::Vec<std::string::String>,
    665
    666        /// Optional. List of acknowledgment IDs that were malformed or whose
    667        /// acknowledgment deadline has expired.
    668        pub invalid_ack_ids: std::vec::Vec<std::string::String>,
    669
    670        /// Optional. List of acknowledgment IDs that were out of order.
    671        pub unordered_ack_ids: std::vec::Vec<std::string::String>,
    672
    673        /// Optional. List of acknowledgment IDs that failed processing with
    674        /// temporary issues.
    675        pub temporary_failed_ack_ids: std::vec::Vec<std::string::String>,
    676
    677        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    678    }
    679
    680    impl AcknowledgeConfirmation {
    681        pub fn new() -> Self {
    682            std::default::Default::default()
    683        }
    684
    685        /// Sets the value of [ack_ids][crate::model::streaming_pull_response::AcknowledgeConfirmation::ack_ids].
    686        pub fn set_ack_ids<T, V>(mut self, v: T) -> Self
    687        where
    688            T: std::iter::IntoIterator<Item = V>,
    689            V: std::convert::Into<std::string::String>,
    690        {
    691            use std::iter::Iterator;
    692            self.ack_ids = v.into_iter().map(|i| i.into()).collect();
    693            self
    694        }
    695
    696        /// Sets the value of [invalid_ack_ids][crate::model::streaming_pull_response::AcknowledgeConfirmation::invalid_ack_ids].
    697        pub fn set_invalid_ack_ids<T, V>(mut self, v: T) -> Self
    698        where
    699            T: std::iter::IntoIterator<Item = V>,
    700            V: std::convert::Into<std::string::String>,
    701        {
    702            use std::iter::Iterator;
    703            self.invalid_ack_ids = v.into_iter().map(|i| i.into()).collect();
    704            self
    705        }
    706
    707        /// Sets the value of [unordered_ack_ids][crate::model::streaming_pull_response::AcknowledgeConfirmation::unordered_ack_ids].
    708        pub fn set_unordered_ack_ids<T, V>(mut self, v: T) -> Self
    709        where
    710            T: std::iter::IntoIterator<Item = V>,
    711            V: std::convert::Into<std::string::String>,
    712        {
    713            use std::iter::Iterator;
    714            self.unordered_ack_ids = v.into_iter().map(|i| i.into()).collect();
    715            self
    716        }
    717
    718        /// Sets the value of [temporary_failed_ack_ids][crate::model::streaming_pull_response::AcknowledgeConfirmation::temporary_failed_ack_ids].
    719        pub fn set_temporary_failed_ack_ids<T, V>(mut self, v: T) -> Self
    720        where
    721            T: std::iter::IntoIterator<Item = V>,
    722            V: std::convert::Into<std::string::String>,
    723        {
    724            use std::iter::Iterator;
    725            self.temporary_failed_ack_ids = v.into_iter().map(|i| i.into()).collect();
    726            self
    727        }
    728    }
    729
    730    impl wkt::message::Message for AcknowledgeConfirmation {
    731        fn typename() -> &'static str {
    732            "type.googleapis.com/google.pubsub.v1.StreamingPullResponse.AcknowledgeConfirmation"
    733        }
    734    }
    735
    736    /// Acknowledgment IDs sent in one or more previous requests to modify the
    737    /// deadline for a specific message.
    738    #[derive(Clone, Default, PartialEq)]
    739    #[non_exhaustive]
    740    pub struct ModifyAckDeadlineConfirmation {
    741        /// Optional. Successfully processed acknowledgment IDs.
    742        pub ack_ids: std::vec::Vec<std::string::String>,
    743
    744        /// Optional. List of acknowledgment IDs that were malformed or whose
    745        /// acknowledgment deadline has expired.
    746        pub invalid_ack_ids: std::vec::Vec<std::string::String>,
    747
    748        /// Optional. List of acknowledgment IDs that failed processing with
    749        /// temporary issues.
    750        pub temporary_failed_ack_ids: std::vec::Vec<std::string::String>,
    751
    752        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    753    }
    754
    755    impl ModifyAckDeadlineConfirmation {
    756        pub fn new() -> Self {
    757            std::default::Default::default()
    758        }
    759
    760        /// Sets the value of [ack_ids][crate::model::streaming_pull_response::ModifyAckDeadlineConfirmation::ack_ids].
    761        pub fn set_ack_ids<T, V>(mut self, v: T) -> Self
    762        where
    763            T: std::iter::IntoIterator<Item = V>,
    764            V: std::convert::Into<std::string::String>,
    765        {
    766            use std::iter::Iterator;
    767            self.ack_ids = v.into_iter().map(|i| i.into()).collect();
    768            self
    769        }
    770
    771        /// Sets the value of [invalid_ack_ids][crate::model::streaming_pull_response::ModifyAckDeadlineConfirmation::invalid_ack_ids].
    772        pub fn set_invalid_ack_ids<T, V>(mut self, v: T) -> Self
    773        where
    774            T: std::iter::IntoIterator<Item = V>,
    775            V: std::convert::Into<std::string::String>,
    776        {
    777            use std::iter::Iterator;
    778            self.invalid_ack_ids = v.into_iter().map(|i| i.into()).collect();
    779            self
    780        }
    781
    782        /// Sets the value of [temporary_failed_ack_ids][crate::model::streaming_pull_response::ModifyAckDeadlineConfirmation::temporary_failed_ack_ids].
    783        pub fn set_temporary_failed_ack_ids<T, V>(mut self, v: T) -> Self
    784        where
    785            T: std::iter::IntoIterator<Item = V>,
    786            V: std::convert::Into<std::string::String>,
    787        {
    788            use std::iter::Iterator;
    789            self.temporary_failed_ack_ids = v.into_iter().map(|i| i.into()).collect();
    790            self
    791        }
    792    }
    793
    794    impl wkt::message::Message for ModifyAckDeadlineConfirmation {
    795        fn typename() -> &'static str {
    796            "type.googleapis.com/google.pubsub.v1.StreamingPullResponse.ModifyAckDeadlineConfirmation"
    797        }
    798    }
    799
    800    /// Subscription properties sent as part of the response.
    801    #[derive(Clone, Default, PartialEq)]
    802    #[non_exhaustive]
    803    pub struct SubscriptionProperties {
    804        /// Optional. True iff exactly once delivery is enabled for this
    805        /// subscription.
    806        pub exactly_once_delivery_enabled: bool,
    807
    808        /// Optional. True iff message ordering is enabled for this subscription.
    809        pub message_ordering_enabled: bool,
    810
    811        pub(crate) _unknown_fields: serde_json::Map<std::string::String, serde_json::Value>,
    812    }
    813
    814    impl SubscriptionProperties {
    815        pub fn new() -> Self {
    816            std::default::Default::default()
    817        }
    818
    819        /// Sets the value of [exactly_once_delivery_enabled][crate::model::streaming_pull_response::SubscriptionProperties::exactly_once_delivery_enabled].
    820        pub fn set_exactly_once_delivery_enabled<T: std::convert::Into<bool>>(
    821            mut self,
    822            v: T,
    823        ) -> Self {
    824            self.exactly_once_delivery_enabled = v.into();
    825            self
    826        }
    827
    828        /// Sets the value of [message_ordering_enabled][crate::model::streaming_pull_response::SubscriptionProperties::message_ordering_enabled].
    829        pub fn set_message_ordering_enabled<T: std::convert::Into<bool>>(mut self, v: T) -> Self {
    830            self.message_ordering_enabled = v.into();
    831            self
    832        }
    833    }
    834
    835    impl wkt::message::Message for SubscriptionProperties {
    836        fn typename() -> &'static str {
    837            "type.googleapis.com/google.pubsub.v1.StreamingPullResponse.SubscriptionProperties"
    838        }
    839    }
    840}