diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequest.java index 72dfa039b..9d0090161 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequest.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequest.java @@ -147,8 +147,8 @@ public long getPartition() { * * *
-   * Required. The target publish or event time. Specifying a future time will return an
-   * unset cursor.
+   * Required. The target publish or event time. Specifying a future time will
+   * return an unset cursor.
    * 
* * @@ -165,8 +165,8 @@ public boolean hasTarget() { * * *
-   * Required. The target publish or event time. Specifying a future time will return an
-   * unset cursor.
+   * Required. The target publish or event time. Specifying a future time will
+   * return an unset cursor.
    * 
* * @@ -185,8 +185,8 @@ public com.google.cloud.pubsublite.proto.TimeTarget getTarget() { * * *
-   * Required. The target publish or event time. Specifying a future time will return an
-   * unset cursor.
+   * Required. The target publish or event time. Specifying a future time will
+   * return an unset cursor.
    * 
* * @@ -776,8 +776,8 @@ public Builder clearPartition() { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -793,8 +793,8 @@ public boolean hasTarget() { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -816,8 +816,8 @@ public com.google.cloud.pubsublite.proto.TimeTarget getTarget() { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -841,8 +841,8 @@ public Builder setTarget(com.google.cloud.pubsublite.proto.TimeTarget value) { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -863,8 +863,8 @@ public Builder setTarget(com.google.cloud.pubsublite.proto.TimeTarget.Builder bu * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -891,8 +891,8 @@ public Builder mergeTarget(com.google.cloud.pubsublite.proto.TimeTarget value) { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -913,8 +913,8 @@ public Builder clearTarget() { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -930,8 +930,8 @@ public com.google.cloud.pubsublite.proto.TimeTarget.Builder getTargetBuilder() { * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * @@ -951,8 +951,8 @@ public com.google.cloud.pubsublite.proto.TimeTargetOrBuilder getTargetOrBuilder( * * *
-     * Required. The target publish or event time. Specifying a future time will return an
-     * unset cursor.
+     * Required. The target publish or event time. Specifying a future time will
+     * return an unset cursor.
      * 
* * diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequestOrBuilder.java index bcdc28ff5..410548f67 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ComputeTimeCursorRequestOrBuilder.java @@ -69,8 +69,8 @@ public interface ComputeTimeCursorRequestOrBuilder * * *
-   * Required. The target publish or event time. Specifying a future time will return an
-   * unset cursor.
+   * Required. The target publish or event time. Specifying a future time will
+   * return an unset cursor.
    * 
* * @@ -84,8 +84,8 @@ public interface ComputeTimeCursorRequestOrBuilder * * *
-   * Required. The target publish or event time. Specifying a future time will return an
-   * unset cursor.
+   * Required. The target publish or event time. Specifying a future time will
+   * return an unset cursor.
    * 
* * @@ -99,8 +99,8 @@ public interface ComputeTimeCursorRequestOrBuilder * * *
-   * Required. The target publish or event time. Specifying a future time will return an
-   * unset cursor.
+   * Required. The target publish or event time. Specifying a future time will
+   * return an unset cursor.
    * 
* * diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequest.java index 935980c26..c81203d41 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequest.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequest.java @@ -131,7 +131,8 @@ public com.google.protobuf.ByteString getParentBytes() { * * *
-   * Required. Configuration of the reservation to create. Its `name` field is ignored.
+   * Required. Configuration of the reservation to create. Its `name` field is
+   * ignored.
    * 
* * @@ -148,7 +149,8 @@ public boolean hasReservation() { * * *
-   * Required. Configuration of the reservation to create. Its `name` field is ignored.
+   * Required. Configuration of the reservation to create. Its `name` field is
+   * ignored.
    * 
* * @@ -167,7 +169,8 @@ public com.google.cloud.pubsublite.proto.Reservation getReservation() { * * *
-   * Required. Configuration of the reservation to create. Its `name` field is ignored.
+   * Required. Configuration of the reservation to create. Its `name` field is
+   * ignored.
    * 
* * @@ -189,8 +192,8 @@ public com.google.cloud.pubsublite.proto.ReservationOrBuilder getReservationOrBu * * *
-   * Required. The ID to use for the reservation, which will become the final component of
-   * the reservation's name.
+   * Required. The ID to use for the reservation, which will become the final
+   * component of the reservation's name.
    * This value is structured like: `my-reservation-name`.
    * 
* @@ -214,8 +217,8 @@ public java.lang.String getReservationId() { * * *
-   * Required. The ID to use for the reservation, which will become the final component of
-   * the reservation's name.
+   * Required. The ID to use for the reservation, which will become the final
+   * component of the reservation's name.
    * This value is structured like: `my-reservation-name`.
    * 
* @@ -766,7 +769,8 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -782,7 +786,8 @@ public boolean hasReservation() { * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -804,7 +809,8 @@ public com.google.cloud.pubsublite.proto.Reservation getReservation() { * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -828,7 +834,8 @@ public Builder setReservation(com.google.cloud.pubsublite.proto.Reservation valu * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -850,7 +857,8 @@ public Builder setReservation( * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -877,7 +885,8 @@ public Builder mergeReservation(com.google.cloud.pubsublite.proto.Reservation va * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -898,7 +907,8 @@ public Builder clearReservation() { * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -914,7 +924,8 @@ public com.google.cloud.pubsublite.proto.Reservation.Builder getReservationBuild * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -934,7 +945,8 @@ public com.google.cloud.pubsublite.proto.ReservationOrBuilder getReservationOrBu * * *
-     * Required. Configuration of the reservation to create. Its `name` field is ignored.
+     * Required. Configuration of the reservation to create. Its `name` field is
+     * ignored.
      * 
* * @@ -963,8 +975,8 @@ public com.google.cloud.pubsublite.proto.ReservationOrBuilder getReservationOrBu * * *
-     * Required. The ID to use for the reservation, which will become the final component of
-     * the reservation's name.
+     * Required. The ID to use for the reservation, which will become the final
+     * component of the reservation's name.
      * This value is structured like: `my-reservation-name`.
      * 
* @@ -987,8 +999,8 @@ public java.lang.String getReservationId() { * * *
-     * Required. The ID to use for the reservation, which will become the final component of
-     * the reservation's name.
+     * Required. The ID to use for the reservation, which will become the final
+     * component of the reservation's name.
      * This value is structured like: `my-reservation-name`.
      * 
* @@ -1011,8 +1023,8 @@ public com.google.protobuf.ByteString getReservationIdBytes() { * * *
-     * Required. The ID to use for the reservation, which will become the final component of
-     * the reservation's name.
+     * Required. The ID to use for the reservation, which will become the final
+     * component of the reservation's name.
      * This value is structured like: `my-reservation-name`.
      * 
* @@ -1034,8 +1046,8 @@ public Builder setReservationId(java.lang.String value) { * * *
-     * Required. The ID to use for the reservation, which will become the final component of
-     * the reservation's name.
+     * Required. The ID to use for the reservation, which will become the final
+     * component of the reservation's name.
      * This value is structured like: `my-reservation-name`.
      * 
* @@ -1053,8 +1065,8 @@ public Builder clearReservationId() { * * *
-     * Required. The ID to use for the reservation, which will become the final component of
-     * the reservation's name.
+     * Required. The ID to use for the reservation, which will become the final
+     * component of the reservation's name.
      * This value is structured like: `my-reservation-name`.
      * 
* diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequestOrBuilder.java index b4672aa61..6270e8377 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateReservationRequestOrBuilder.java @@ -58,7 +58,8 @@ public interface CreateReservationRequestOrBuilder * * *
-   * Required. Configuration of the reservation to create. Its `name` field is ignored.
+   * Required. Configuration of the reservation to create. Its `name` field is
+   * ignored.
    * 
* * @@ -72,7 +73,8 @@ public interface CreateReservationRequestOrBuilder * * *
-   * Required. Configuration of the reservation to create. Its `name` field is ignored.
+   * Required. Configuration of the reservation to create. Its `name` field is
+   * ignored.
    * 
* * @@ -86,7 +88,8 @@ public interface CreateReservationRequestOrBuilder * * *
-   * Required. Configuration of the reservation to create. Its `name` field is ignored.
+   * Required. Configuration of the reservation to create. Its `name` field is
+   * ignored.
    * 
* * @@ -99,8 +102,8 @@ public interface CreateReservationRequestOrBuilder * * *
-   * Required. The ID to use for the reservation, which will become the final component of
-   * the reservation's name.
+   * Required. The ID to use for the reservation, which will become the final
+   * component of the reservation's name.
    * This value is structured like: `my-reservation-name`.
    * 
* @@ -113,8 +116,8 @@ public interface CreateReservationRequestOrBuilder * * *
-   * Required. The ID to use for the reservation, which will become the final component of
-   * the reservation's name.
+   * Required. The ID to use for the reservation, which will become the final
+   * component of the reservation's name.
    * This value is structured like: `my-reservation-name`.
    * 
* diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequest.java index 6920693b3..0df5efbca 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequest.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequest.java @@ -131,7 +131,8 @@ public com.google.protobuf.ByteString getParentBytes() { * * *
-   * Required. Configuration of the subscription to create. Its `name` field is ignored.
+   * Required. Configuration of the subscription to create. Its `name` field is
+   * ignored.
    * 
* * @@ -148,7 +149,8 @@ public boolean hasSubscription() { * * *
-   * Required. Configuration of the subscription to create. Its `name` field is ignored.
+   * Required. Configuration of the subscription to create. Its `name` field is
+   * ignored.
    * 
* * @@ -167,7 +169,8 @@ public com.google.cloud.pubsublite.proto.Subscription getSubscription() { * * *
-   * Required. Configuration of the subscription to create. Its `name` field is ignored.
+   * Required. Configuration of the subscription to create. Its `name` field is
+   * ignored.
    * 
* * @@ -189,8 +192,8 @@ public com.google.cloud.pubsublite.proto.SubscriptionOrBuilder getSubscriptionOr * * *
-   * Required. The ID to use for the subscription, which will become the final component
-   * of the subscription's name.
+   * Required. The ID to use for the subscription, which will become the final
+   * component of the subscription's name.
    * This value is structured like: `my-sub-name`.
    * 
* @@ -214,8 +217,8 @@ public java.lang.String getSubscriptionId() { * * *
-   * Required. The ID to use for the subscription, which will become the final component
-   * of the subscription's name.
+   * Required. The ID to use for the subscription, which will become the final
+   * component of the subscription's name.
    * This value is structured like: `my-sub-name`.
    * 
* @@ -808,7 +811,8 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -824,7 +828,8 @@ public boolean hasSubscription() { * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -846,7 +851,8 @@ public com.google.cloud.pubsublite.proto.Subscription getSubscription() { * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -870,7 +876,8 @@ public Builder setSubscription(com.google.cloud.pubsublite.proto.Subscription va * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -892,7 +899,8 @@ public Builder setSubscription( * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -920,7 +928,8 @@ public Builder mergeSubscription(com.google.cloud.pubsublite.proto.Subscription * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -941,7 +950,8 @@ public Builder clearSubscription() { * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -957,7 +967,8 @@ public com.google.cloud.pubsublite.proto.Subscription.Builder getSubscriptionBui * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -977,7 +988,8 @@ public com.google.cloud.pubsublite.proto.SubscriptionOrBuilder getSubscriptionOr * * *
-     * Required. Configuration of the subscription to create. Its `name` field is ignored.
+     * Required. Configuration of the subscription to create. Its `name` field is
+     * ignored.
      * 
* * @@ -1006,8 +1018,8 @@ public com.google.cloud.pubsublite.proto.SubscriptionOrBuilder getSubscriptionOr * * *
-     * Required. The ID to use for the subscription, which will become the final component
-     * of the subscription's name.
+     * Required. The ID to use for the subscription, which will become the final
+     * component of the subscription's name.
      * This value is structured like: `my-sub-name`.
      * 
* @@ -1030,8 +1042,8 @@ public java.lang.String getSubscriptionId() { * * *
-     * Required. The ID to use for the subscription, which will become the final component
-     * of the subscription's name.
+     * Required. The ID to use for the subscription, which will become the final
+     * component of the subscription's name.
      * This value is structured like: `my-sub-name`.
      * 
* @@ -1054,8 +1066,8 @@ public com.google.protobuf.ByteString getSubscriptionIdBytes() { * * *
-     * Required. The ID to use for the subscription, which will become the final component
-     * of the subscription's name.
+     * Required. The ID to use for the subscription, which will become the final
+     * component of the subscription's name.
      * This value is structured like: `my-sub-name`.
      * 
* @@ -1077,8 +1089,8 @@ public Builder setSubscriptionId(java.lang.String value) { * * *
-     * Required. The ID to use for the subscription, which will become the final component
-     * of the subscription's name.
+     * Required. The ID to use for the subscription, which will become the final
+     * component of the subscription's name.
      * This value is structured like: `my-sub-name`.
      * 
* @@ -1096,8 +1108,8 @@ public Builder clearSubscriptionId() { * * *
-     * Required. The ID to use for the subscription, which will become the final component
-     * of the subscription's name.
+     * Required. The ID to use for the subscription, which will become the final
+     * component of the subscription's name.
      * This value is structured like: `my-sub-name`.
      * 
* diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequestOrBuilder.java index f0f86d515..c901c2fa8 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateSubscriptionRequestOrBuilder.java @@ -58,7 +58,8 @@ public interface CreateSubscriptionRequestOrBuilder * * *
-   * Required. Configuration of the subscription to create. Its `name` field is ignored.
+   * Required. Configuration of the subscription to create. Its `name` field is
+   * ignored.
    * 
* * @@ -72,7 +73,8 @@ public interface CreateSubscriptionRequestOrBuilder * * *
-   * Required. Configuration of the subscription to create. Its `name` field is ignored.
+   * Required. Configuration of the subscription to create. Its `name` field is
+   * ignored.
    * 
* * @@ -86,7 +88,8 @@ public interface CreateSubscriptionRequestOrBuilder * * *
-   * Required. Configuration of the subscription to create. Its `name` field is ignored.
+   * Required. Configuration of the subscription to create. Its `name` field is
+   * ignored.
    * 
* * @@ -99,8 +102,8 @@ public interface CreateSubscriptionRequestOrBuilder * * *
-   * Required. The ID to use for the subscription, which will become the final component
-   * of the subscription's name.
+   * Required. The ID to use for the subscription, which will become the final
+   * component of the subscription's name.
    * This value is structured like: `my-sub-name`.
    * 
* @@ -113,8 +116,8 @@ public interface CreateSubscriptionRequestOrBuilder * * *
-   * Required. The ID to use for the subscription, which will become the final component
-   * of the subscription's name.
+   * Required. The ID to use for the subscription, which will become the final
+   * component of the subscription's name.
    * This value is structured like: `my-sub-name`.
    * 
* diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequest.java index 37c38ea5d..23f5b8ef7 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequest.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequest.java @@ -131,7 +131,8 @@ public com.google.protobuf.ByteString getParentBytes() { * * *
-   * Required. Configuration of the topic to create. Its `name` field is ignored.
+   * Required. Configuration of the topic to create. Its `name` field is
+   * ignored.
    * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -147,7 +148,8 @@ public boolean hasTopic() { * * *
-   * Required. Configuration of the topic to create. Its `name` field is ignored.
+   * Required. Configuration of the topic to create. Its `name` field is
+   * ignored.
    * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -163,7 +165,8 @@ public com.google.cloud.pubsublite.proto.Topic getTopic() { * * *
-   * Required. Configuration of the topic to create. Its `name` field is ignored.
+   * Required. Configuration of the topic to create. Its `name` field is
+   * ignored.
    * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -182,8 +185,8 @@ public com.google.cloud.pubsublite.proto.TopicOrBuilder getTopicOrBuilder() { * * *
-   * Required. The ID to use for the topic, which will become the final component of
-   * the topic's name.
+   * Required. The ID to use for the topic, which will become the final
+   * component of the topic's name.
    * This value is structured like: `my-topic-name`.
    * 
* @@ -207,8 +210,8 @@ public java.lang.String getTopicId() { * * *
-   * Required. The ID to use for the topic, which will become the final component of
-   * the topic's name.
+   * Required. The ID to use for the topic, which will become the final
+   * component of the topic's name.
    * This value is structured like: `my-topic-name`.
    * 
* @@ -757,7 +760,8 @@ public Builder setParentBytes(com.google.protobuf.ByteString value) { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -772,7 +776,8 @@ public boolean hasTopic() { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -793,7 +798,8 @@ public com.google.cloud.pubsublite.proto.Topic getTopic() { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -816,7 +822,8 @@ public Builder setTopic(com.google.cloud.pubsublite.proto.Topic value) { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -836,7 +843,8 @@ public Builder setTopic(com.google.cloud.pubsublite.proto.Topic.Builder builderF * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -862,7 +870,8 @@ public Builder mergeTopic(com.google.cloud.pubsublite.proto.Topic value) { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -882,7 +891,8 @@ public Builder clearTopic() { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -897,7 +907,8 @@ public com.google.cloud.pubsublite.proto.Topic.Builder getTopicBuilder() { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -916,7 +927,8 @@ public com.google.cloud.pubsublite.proto.TopicOrBuilder getTopicOrBuilder() { * * *
-     * Required. Configuration of the topic to create. Its `name` field is ignored.
+     * Required. Configuration of the topic to create. Its `name` field is
+     * ignored.
      * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -944,8 +956,8 @@ public com.google.cloud.pubsublite.proto.TopicOrBuilder getTopicOrBuilder() { * * *
-     * Required. The ID to use for the topic, which will become the final component of
-     * the topic's name.
+     * Required. The ID to use for the topic, which will become the final
+     * component of the topic's name.
      * This value is structured like: `my-topic-name`.
      * 
* @@ -968,8 +980,8 @@ public java.lang.String getTopicId() { * * *
-     * Required. The ID to use for the topic, which will become the final component of
-     * the topic's name.
+     * Required. The ID to use for the topic, which will become the final
+     * component of the topic's name.
      * This value is structured like: `my-topic-name`.
      * 
* @@ -992,8 +1004,8 @@ public com.google.protobuf.ByteString getTopicIdBytes() { * * *
-     * Required. The ID to use for the topic, which will become the final component of
-     * the topic's name.
+     * Required. The ID to use for the topic, which will become the final
+     * component of the topic's name.
      * This value is structured like: `my-topic-name`.
      * 
* @@ -1015,8 +1027,8 @@ public Builder setTopicId(java.lang.String value) { * * *
-     * Required. The ID to use for the topic, which will become the final component of
-     * the topic's name.
+     * Required. The ID to use for the topic, which will become the final
+     * component of the topic's name.
      * This value is structured like: `my-topic-name`.
      * 
* @@ -1034,8 +1046,8 @@ public Builder clearTopicId() { * * *
-     * Required. The ID to use for the topic, which will become the final component of
-     * the topic's name.
+     * Required. The ID to use for the topic, which will become the final
+     * component of the topic's name.
      * This value is structured like: `my-topic-name`.
      * 
* diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequestOrBuilder.java index 3c4917c40..b83adc03a 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/CreateTopicRequestOrBuilder.java @@ -58,7 +58,8 @@ public interface CreateTopicRequestOrBuilder * * *
-   * Required. Configuration of the topic to create. Its `name` field is ignored.
+   * Required. Configuration of the topic to create. Its `name` field is
+   * ignored.
    * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -71,7 +72,8 @@ public interface CreateTopicRequestOrBuilder * * *
-   * Required. Configuration of the topic to create. Its `name` field is ignored.
+   * Required. Configuration of the topic to create. Its `name` field is
+   * ignored.
    * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -84,7 +86,8 @@ public interface CreateTopicRequestOrBuilder * * *
-   * Required. Configuration of the topic to create. Its `name` field is ignored.
+   * Required. Configuration of the topic to create. Its `name` field is
+   * ignored.
    * 
* * .google.cloud.pubsublite.v1.Topic topic = 2 [(.google.api.field_behavior) = REQUIRED]; @@ -96,8 +99,8 @@ public interface CreateTopicRequestOrBuilder * * *
-   * Required. The ID to use for the topic, which will become the final component of
-   * the topic's name.
+   * Required. The ID to use for the topic, which will become the final
+   * component of the topic's name.
    * This value is structured like: `my-topic-name`.
    * 
* @@ -110,8 +113,8 @@ public interface CreateTopicRequestOrBuilder * * *
-   * Required. The ID to use for the topic, which will become the final component of
-   * the topic's name.
+   * Required. The ID to use for the topic, which will become the final
+   * component of the topic's name.
    * This value is structured like: `my-topic-name`.
    * 
* diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfig.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfig.java index 2c85026fe..263ed4347 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfig.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfig.java @@ -1029,8 +1029,8 @@ public com.google.cloud.pubsublite.proto.ExportConfig.State getDesiredState() { * * *
-   * Output only. The current state of the export, which may be different to the desired
-   * state due to errors.
+   * Output only. The current state of the export, which may be different to the
+   * desired state due to errors. This field is output only.
    * 
* * @@ -1047,8 +1047,8 @@ public int getCurrentStateValue() { * * *
-   * Output only. The current state of the export, which may be different to the desired
-   * state due to errors.
+   * Output only. The current state of the export, which may be different to the
+   * desired state due to errors. This field is output only.
    * 
* * @@ -1074,9 +1074,9 @@ public com.google.cloud.pubsublite.proto.ExportConfig.State getCurrentState() { * * *
-   * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-   * be exported to the destination. For example, the message can not be
-   * published to the Pub/Sub service because it does not satisfy the
+   * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+   * that can not be exported to the destination. For example, the message can
+   * not be published to the Pub/Sub service because it does not satisfy the
    * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
    * Structured like:
    * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -1106,9 +1106,9 @@ public java.lang.String getDeadLetterTopic() {
    *
    *
    * 
-   * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-   * be exported to the destination. For example, the message can not be
-   * published to the Pub/Sub service because it does not satisfy the
+   * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+   * that can not be exported to the destination. For example, the message can
+   * not be published to the Pub/Sub service because it does not satisfy the
    * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
    * Structured like:
    * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -1752,8 +1752,8 @@ public Builder clearDesiredState() {
      *
      *
      * 
-     * Output only. The current state of the export, which may be different to the desired
-     * state due to errors.
+     * Output only. The current state of the export, which may be different to the
+     * desired state due to errors. This field is output only.
      * 
* * @@ -1770,8 +1770,8 @@ public int getCurrentStateValue() { * * *
-     * Output only. The current state of the export, which may be different to the desired
-     * state due to errors.
+     * Output only. The current state of the export, which may be different to the
+     * desired state due to errors. This field is output only.
      * 
* * @@ -1791,8 +1791,8 @@ public Builder setCurrentStateValue(int value) { * * *
-     * Output only. The current state of the export, which may be different to the desired
-     * state due to errors.
+     * Output only. The current state of the export, which may be different to the
+     * desired state due to errors. This field is output only.
      * 
* * @@ -1813,8 +1813,8 @@ public com.google.cloud.pubsublite.proto.ExportConfig.State getCurrentState() { * * *
-     * Output only. The current state of the export, which may be different to the desired
-     * state due to errors.
+     * Output only. The current state of the export, which may be different to the
+     * desired state due to errors. This field is output only.
      * 
* * @@ -1837,8 +1837,8 @@ public Builder setCurrentState(com.google.cloud.pubsublite.proto.ExportConfig.St * * *
-     * Output only. The current state of the export, which may be different to the desired
-     * state due to errors.
+     * Output only. The current state of the export, which may be different to the
+     * desired state due to errors. This field is output only.
      * 
* * @@ -1859,9 +1859,9 @@ public Builder clearCurrentState() { * * *
-     * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-     * be exported to the destination. For example, the message can not be
-     * published to the Pub/Sub service because it does not satisfy the
+     * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+     * that can not be exported to the destination. For example, the message can
+     * not be published to the Pub/Sub service because it does not satisfy the
      * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
      * Structured like:
      * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -1890,9 +1890,9 @@ public java.lang.String getDeadLetterTopic() {
      *
      *
      * 
-     * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-     * be exported to the destination. For example, the message can not be
-     * published to the Pub/Sub service because it does not satisfy the
+     * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+     * that can not be exported to the destination. For example, the message can
+     * not be published to the Pub/Sub service because it does not satisfy the
      * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
      * Structured like:
      * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -1921,9 +1921,9 @@ public com.google.protobuf.ByteString getDeadLetterTopicBytes() {
      *
      *
      * 
-     * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-     * be exported to the destination. For example, the message can not be
-     * published to the Pub/Sub service because it does not satisfy the
+     * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+     * that can not be exported to the destination. For example, the message can
+     * not be published to the Pub/Sub service because it does not satisfy the
      * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
      * Structured like:
      * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -1951,9 +1951,9 @@ public Builder setDeadLetterTopic(java.lang.String value) {
      *
      *
      * 
-     * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-     * be exported to the destination. For example, the message can not be
-     * published to the Pub/Sub service because it does not satisfy the
+     * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+     * that can not be exported to the destination. For example, the message can
+     * not be published to the Pub/Sub service because it does not satisfy the
      * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
      * Structured like:
      * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -1977,9 +1977,9 @@ public Builder clearDeadLetterTopic() {
      *
      *
      * 
-     * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-     * be exported to the destination. For example, the message can not be
-     * published to the Pub/Sub service because it does not satisfy the
+     * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+     * that can not be exported to the destination. For example, the message can
+     * not be published to the Pub/Sub service because it does not satisfy the
      * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
      * Structured like:
      * projects/{project_number}/locations/{location}/topics/{topic_id}.
diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfigOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfigOrBuilder.java
index 38fa934a1..a4b5adbae 100644
--- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfigOrBuilder.java
+++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/ExportConfigOrBuilder.java
@@ -54,8 +54,8 @@ public interface ExportConfigOrBuilder
    *
    *
    * 
-   * Output only. The current state of the export, which may be different to the desired
-   * state due to errors.
+   * Output only. The current state of the export, which may be different to the
+   * desired state due to errors. This field is output only.
    * 
* * @@ -69,8 +69,8 @@ public interface ExportConfigOrBuilder * * *
-   * Output only. The current state of the export, which may be different to the desired
-   * state due to errors.
+   * Output only. The current state of the export, which may be different to the
+   * desired state due to errors. This field is output only.
    * 
* * @@ -85,9 +85,9 @@ public interface ExportConfigOrBuilder * * *
-   * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-   * be exported to the destination. For example, the message can not be
-   * published to the Pub/Sub service because it does not satisfy the
+   * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+   * that can not be exported to the destination. For example, the message can
+   * not be published to the Pub/Sub service because it does not satisfy the
    * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
    * Structured like:
    * projects/{project_number}/locations/{location}/topics/{topic_id}.
@@ -106,9 +106,9 @@ public interface ExportConfigOrBuilder
    *
    *
    * 
-   * Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not
-   * be exported to the destination. For example, the message can not be
-   * published to the Pub/Sub service because it does not satisfy the
+   * Optional. The name of an optional Pub/Sub Lite topic to publish messages
+   * that can not be exported to the destination. For example, the message can
+   * not be published to the Pub/Sub service because it does not satisfy the
    * constraints documented at https://cloud.google.com/pubsub/docs/publisher.
    * Structured like:
    * projects/{project_number}/locations/{location}/topics/{topic_id}.
diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequest.java
index 6282f81a8..2571196d4 100644
--- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequest.java
+++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequest.java
@@ -39,6 +39,7 @@ private InitialPublishRequest(com.google.protobuf.GeneratedMessageV3.Builder
 
   private InitialPublishRequest() {
     topic_ = "";
+    clientId_ = com.google.protobuf.ByteString.EMPTY;
   }
 
   @java.lang.Override
@@ -138,6 +139,29 @@ public long getPartition() {
     return partition_;
   }
 
+  public static final int CLIENT_ID_FIELD_NUMBER = 3;
+  private com.google.protobuf.ByteString clientId_ = com.google.protobuf.ByteString.EMPTY;
+  /**
+   *
+   *
+   * 
+   * Unique identifier for a publisher client. If set, enables publish
+   * idempotency within a publisher client session.
+   * The length of this field must be exactly 16 bytes long and should be
+   * populated with a 128 bit uuid, generated by standard uuid algorithms like
+   * uuid1 or uuid4. The same identifier should be reused following
+   * disconnections with retryable stream errors.
+   * 
+ * + * bytes client_id = 3; + * + * @return The clientId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getClientId() { + return clientId_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -158,6 +182,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (partition_ != 0L) { output.writeInt64(2, partition_); } + if (!clientId_.isEmpty()) { + output.writeBytes(3, clientId_); + } getUnknownFields().writeTo(output); } @@ -173,6 +200,9 @@ public int getSerializedSize() { if (partition_ != 0L) { size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, partition_); } + if (!clientId_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream.computeBytesSize(3, clientId_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -191,6 +221,7 @@ public boolean equals(final java.lang.Object obj) { if (!getTopic().equals(other.getTopic())) return false; if (getPartition() != other.getPartition()) return false; + if (!getClientId().equals(other.getClientId())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -206,6 +237,8 @@ public int hashCode() { hash = (53 * hash) + getTopic().hashCode(); hash = (37 * hash) + PARTITION_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getPartition()); + hash = (37 * hash) + CLIENT_ID_FIELD_NUMBER; + hash = (53 * hash) + getClientId().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -348,6 +381,7 @@ public Builder clear() { bitField0_ = 0; topic_ = ""; partition_ = 0L; + clientId_ = com.google.protobuf.ByteString.EMPTY; return this; } @@ -390,6 +424,9 @@ private void buildPartial0(com.google.cloud.pubsublite.proto.InitialPublishReque if (((from_bitField0_ & 0x00000002) != 0)) { result.partition_ = partition_; } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.clientId_ = clientId_; + } } @java.lang.Override @@ -446,6 +483,9 @@ public Builder mergeFrom(com.google.cloud.pubsublite.proto.InitialPublishRequest if (other.getPartition() != 0L) { setPartition(other.getPartition()); } + if (other.getClientId() != com.google.protobuf.ByteString.EMPTY) { + setClientId(other.getClientId()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -484,6 +524,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 16 + case 26: + { + clientId_ = input.readBytes(); + bitField0_ |= 0x00000004; + break; + } // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -668,6 +714,76 @@ public Builder clearPartition() { return this; } + private com.google.protobuf.ByteString clientId_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+     * Unique identifier for a publisher client. If set, enables publish
+     * idempotency within a publisher client session.
+     * The length of this field must be exactly 16 bytes long and should be
+     * populated with a 128 bit uuid, generated by standard uuid algorithms like
+     * uuid1 or uuid4. The same identifier should be reused following
+     * disconnections with retryable stream errors.
+     * 
+ * + * bytes client_id = 3; + * + * @return The clientId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getClientId() { + return clientId_; + } + /** + * + * + *
+     * Unique identifier for a publisher client. If set, enables publish
+     * idempotency within a publisher client session.
+     * The length of this field must be exactly 16 bytes long and should be
+     * populated with a 128 bit uuid, generated by standard uuid algorithms like
+     * uuid1 or uuid4. The same identifier should be reused following
+     * disconnections with retryable stream errors.
+     * 
+ * + * bytes client_id = 3; + * + * @param value The clientId to set. + * @return This builder for chaining. + */ + public Builder setClientId(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + clientId_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Unique identifier for a publisher client. If set, enables publish
+     * idempotency within a publisher client session.
+     * The length of this field must be exactly 16 bytes long and should be
+     * populated with a 128 bit uuid, generated by standard uuid algorithms like
+     * uuid1 or uuid4. The same identifier should be reused following
+     * disconnections with retryable stream errors.
+     * 
+ * + * bytes client_id = 3; + * + * @return This builder for chaining. + */ + public Builder clearClientId() { + bitField0_ = (bitField0_ & ~0x00000004); + clientId_ = getDefaultInstance().getClientId(); + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequestOrBuilder.java index 7ec0b629f..4c65a2bed 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialPublishRequestOrBuilder.java @@ -62,4 +62,22 @@ public interface InitialPublishRequestOrBuilder * @return The partition. */ long getPartition(); + + /** + * + * + *
+   * Unique identifier for a publisher client. If set, enables publish
+   * idempotency within a publisher client session.
+   * The length of this field must be exactly 16 bytes long and should be
+   * populated with a 128 bit uuid, generated by standard uuid algorithms like
+   * uuid1 or uuid4. The same identifier should be reused following
+   * disconnections with retryable stream errors.
+   * 
+ * + * bytes client_id = 3; + * + * @return The clientId. + */ + com.google.protobuf.ByteString getClientId(); } diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequest.java index 9f9493362..77d1101f3 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequest.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequest.java @@ -144,9 +144,9 @@ public long getPartition() { * * *
-   * Optional. Initial target location within the message backlog. If not set, messages
-   * will be delivered from the commit cursor for the given subscription and
-   * partition.
+   * Optional. Initial target location within the message backlog. If not set,
+   * messages will be delivered from the commit cursor for the given
+   * subscription and partition.
    * 
* * @@ -163,9 +163,9 @@ public boolean hasInitialLocation() { * * *
-   * Optional. Initial target location within the message backlog. If not set, messages
-   * will be delivered from the commit cursor for the given subscription and
-   * partition.
+   * Optional. Initial target location within the message backlog. If not set,
+   * messages will be delivered from the commit cursor for the given
+   * subscription and partition.
    * 
* * @@ -184,9 +184,9 @@ public com.google.cloud.pubsublite.proto.SeekRequest getInitialLocation() { * * *
-   * Optional. Initial target location within the message backlog. If not set, messages
-   * will be delivered from the commit cursor for the given subscription and
-   * partition.
+   * Optional. Initial target location within the message backlog. If not set,
+   * messages will be delivered from the commit cursor for the given
+   * subscription and partition.
    * 
* * @@ -770,9 +770,9 @@ public Builder clearPartition() { * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -788,9 +788,9 @@ public boolean hasInitialLocation() { * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -812,9 +812,9 @@ public com.google.cloud.pubsublite.proto.SeekRequest getInitialLocation() { * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -838,9 +838,9 @@ public Builder setInitialLocation(com.google.cloud.pubsublite.proto.SeekRequest * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -862,9 +862,9 @@ public Builder setInitialLocation( * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -892,9 +892,9 @@ public Builder mergeInitialLocation(com.google.cloud.pubsublite.proto.SeekReques * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -915,9 +915,9 @@ public Builder clearInitialLocation() { * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -933,9 +933,9 @@ public com.google.cloud.pubsublite.proto.SeekRequest.Builder getInitialLocationB * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * @@ -955,9 +955,9 @@ public com.google.cloud.pubsublite.proto.SeekRequestOrBuilder getInitialLocation * * *
-     * Optional. Initial target location within the message backlog. If not set, messages
-     * will be delivered from the commit cursor for the given subscription and
-     * partition.
+     * Optional. Initial target location within the message backlog. If not set,
+     * messages will be delivered from the commit cursor for the given
+     * subscription and partition.
      * 
* * diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequestOrBuilder.java index 37fa43b10..ba2c297ee 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/InitialSubscribeRequestOrBuilder.java @@ -66,9 +66,9 @@ public interface InitialSubscribeRequestOrBuilder * * *
-   * Optional. Initial target location within the message backlog. If not set, messages
-   * will be delivered from the commit cursor for the given subscription and
-   * partition.
+   * Optional. Initial target location within the message backlog. If not set,
+   * messages will be delivered from the commit cursor for the given
+   * subscription and partition.
    * 
* * @@ -82,9 +82,9 @@ public interface InitialSubscribeRequestOrBuilder * * *
-   * Optional. Initial target location within the message backlog. If not set, messages
-   * will be delivered from the commit cursor for the given subscription and
-   * partition.
+   * Optional. Initial target location within the message backlog. If not set,
+   * messages will be delivered from the commit cursor for the given
+   * subscription and partition.
    * 
* * @@ -98,9 +98,9 @@ public interface InitialSubscribeRequestOrBuilder * * *
-   * Optional. Initial target location within the message backlog. If not set, messages
-   * will be delivered from the commit cursor for the given subscription and
-   * partition.
+   * Optional. Initial target location within the message backlog. If not set,
+   * messages will be delivered from the commit cursor for the given
+   * subscription and partition.
    * 
* * diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequest.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequest.java index c9d4710e2..4021a974e 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequest.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequest.java @@ -138,6 +138,33 @@ public com.google.cloud.pubsublite.proto.PubSubMessageOrBuilder getMessagesOrBui return messages_.get(index); } + public static final int FIRST_SEQUENCE_NUMBER_FIELD_NUMBER = 2; + private long firstSequenceNumber_ = 0L; + /** + * + * + *
+   * The sequence number corresponding to the first message in `messages`.
+   * Messages within a batch are ordered and the sequence numbers of all
+   * subsequent messages in the batch are assumed to be incremental.
+   * Sequence numbers are assigned at the message level and the first message
+   * published in a publisher client session must have a sequence number of 0.
+   * All messages must have contiguous sequence numbers, which uniquely identify
+   * the messages accepted by the publisher client. Since messages are ordered,
+   * the client only needs to specify the sequence number of the first message
+   * in a published batch. The server deduplicates messages with the same
+   * sequence number from the same publisher `client_id`.
+   * 
+ * + * int64 first_sequence_number = 2; + * + * @return The firstSequenceNumber. + */ + @java.lang.Override + public long getFirstSequenceNumber() { + return firstSequenceNumber_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -155,6 +182,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < messages_.size(); i++) { output.writeMessage(1, messages_.get(i)); } + if (firstSequenceNumber_ != 0L) { + output.writeInt64(2, firstSequenceNumber_); + } getUnknownFields().writeTo(output); } @@ -167,6 +197,9 @@ public int getSerializedSize() { for (int i = 0; i < messages_.size(); i++) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, messages_.get(i)); } + if (firstSequenceNumber_ != 0L) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, firstSequenceNumber_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -184,6 +217,7 @@ public boolean equals(final java.lang.Object obj) { (com.google.cloud.pubsublite.proto.MessagePublishRequest) obj; if (!getMessagesList().equals(other.getMessagesList())) return false; + if (getFirstSequenceNumber() != other.getFirstSequenceNumber()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -199,6 +233,8 @@ public int hashCode() { hash = (37 * hash) + MESSAGES_FIELD_NUMBER; hash = (53 * hash) + getMessagesList().hashCode(); } + hash = (37 * hash) + FIRST_SEQUENCE_NUMBER_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getFirstSequenceNumber()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -346,6 +382,7 @@ public Builder clear() { messagesBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000001); + firstSequenceNumber_ = 0L; return this; } @@ -396,6 +433,9 @@ private void buildPartialRepeatedFields( private void buildPartial0(com.google.cloud.pubsublite.proto.MessagePublishRequest result) { int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.firstSequenceNumber_ = firstSequenceNumber_; + } } @java.lang.Override @@ -471,6 +511,9 @@ public Builder mergeFrom(com.google.cloud.pubsublite.proto.MessagePublishRequest } } } + if (other.getFirstSequenceNumber() != 0L) { + setFirstSequenceNumber(other.getFirstSequenceNumber()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -511,6 +554,12 @@ public Builder mergeFrom( } break; } // case 10 + case 16: + { + firstSequenceNumber_ = input.readInt64(); + bitField0_ |= 0x00000002; + break; + } // case 16 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -882,6 +931,86 @@ public com.google.cloud.pubsublite.proto.PubSubMessage.Builder addMessagesBuilde return messagesBuilder_; } + private long firstSequenceNumber_; + /** + * + * + *
+     * The sequence number corresponding to the first message in `messages`.
+     * Messages within a batch are ordered and the sequence numbers of all
+     * subsequent messages in the batch are assumed to be incremental.
+     * Sequence numbers are assigned at the message level and the first message
+     * published in a publisher client session must have a sequence number of 0.
+     * All messages must have contiguous sequence numbers, which uniquely identify
+     * the messages accepted by the publisher client. Since messages are ordered,
+     * the client only needs to specify the sequence number of the first message
+     * in a published batch. The server deduplicates messages with the same
+     * sequence number from the same publisher `client_id`.
+     * 
+ * + * int64 first_sequence_number = 2; + * + * @return The firstSequenceNumber. + */ + @java.lang.Override + public long getFirstSequenceNumber() { + return firstSequenceNumber_; + } + /** + * + * + *
+     * The sequence number corresponding to the first message in `messages`.
+     * Messages within a batch are ordered and the sequence numbers of all
+     * subsequent messages in the batch are assumed to be incremental.
+     * Sequence numbers are assigned at the message level and the first message
+     * published in a publisher client session must have a sequence number of 0.
+     * All messages must have contiguous sequence numbers, which uniquely identify
+     * the messages accepted by the publisher client. Since messages are ordered,
+     * the client only needs to specify the sequence number of the first message
+     * in a published batch. The server deduplicates messages with the same
+     * sequence number from the same publisher `client_id`.
+     * 
+ * + * int64 first_sequence_number = 2; + * + * @param value The firstSequenceNumber to set. + * @return This builder for chaining. + */ + public Builder setFirstSequenceNumber(long value) { + + firstSequenceNumber_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * The sequence number corresponding to the first message in `messages`.
+     * Messages within a batch are ordered and the sequence numbers of all
+     * subsequent messages in the batch are assumed to be incremental.
+     * Sequence numbers are assigned at the message level and the first message
+     * published in a publisher client session must have a sequence number of 0.
+     * All messages must have contiguous sequence numbers, which uniquely identify
+     * the messages accepted by the publisher client. Since messages are ordered,
+     * the client only needs to specify the sequence number of the first message
+     * in a published batch. The server deduplicates messages with the same
+     * sequence number from the same publisher `client_id`.
+     * 
+ * + * int64 first_sequence_number = 2; + * + * @return This builder for chaining. + */ + public Builder clearFirstSequenceNumber() { + bitField0_ = (bitField0_ & ~0x00000002); + firstSequenceNumber_ = 0L; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequestOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequestOrBuilder.java index ede8b0881..71b96c755 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequestOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishRequestOrBuilder.java @@ -74,4 +74,26 @@ public interface MessagePublishRequestOrBuilder * repeated .google.cloud.pubsublite.v1.PubSubMessage messages = 1; */ com.google.cloud.pubsublite.proto.PubSubMessageOrBuilder getMessagesOrBuilder(int index); + + /** + * + * + *
+   * The sequence number corresponding to the first message in `messages`.
+   * Messages within a batch are ordered and the sequence numbers of all
+   * subsequent messages in the batch are assumed to be incremental.
+   * Sequence numbers are assigned at the message level and the first message
+   * published in a publisher client session must have a sequence number of 0.
+   * All messages must have contiguous sequence numbers, which uniquely identify
+   * the messages accepted by the publisher client. Since messages are ordered,
+   * the client only needs to specify the sequence number of the first message
+   * in a published batch. The server deduplicates messages with the same
+   * sequence number from the same publisher `client_id`.
+   * 
+ * + * int64 first_sequence_number = 2; + * + * @return The firstSequenceNumber. + */ + long getFirstSequenceNumber(); } diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponse.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponse.java index 0a85cc258..0f7a3484e 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponse.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponse.java @@ -37,7 +37,9 @@ private MessagePublishResponse(com.google.protobuf.GeneratedMessageV3.Builder super(builder); } - private MessagePublishResponse() {} + private MessagePublishResponse() { + cursorRanges_ = java.util.Collections.emptyList(); + } @java.lang.Override @SuppressWarnings({"unused"}) @@ -64,58 +66,1158 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { com.google.cloud.pubsublite.proto.MessagePublishResponse.class, com.google.cloud.pubsublite.proto.MessagePublishResponse.Builder.class); } - - public static final int START_CURSOR_FIELD_NUMBER = 1; - private com.google.cloud.pubsublite.proto.Cursor startCursor_; + + public interface CursorRangeOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The cursor of the message at the start index. The cursors for remaining
+     * messages up to the end index (exclusive) are sequential.
+     * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return Whether the startCursor field is set. + */ + boolean hasStartCursor(); + /** + * + * + *
+     * The cursor of the message at the start index. The cursors for remaining
+     * messages up to the end index (exclusive) are sequential.
+     * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return The startCursor. + */ + com.google.cloud.pubsublite.proto.Cursor getStartCursor(); + /** + * + * + *
+     * The cursor of the message at the start index. The cursors for remaining
+     * messages up to the end index (exclusive) are sequential.
+     * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder(); + + /** + * + * + *
+     * Index of the message in the published batch that corresponds to the
+     * start cursor. Inclusive.
+     * 
+ * + * int32 start_index = 2; + * + * @return The startIndex. + */ + int getStartIndex(); + + /** + * + * + *
+     * Index of the last message in this range. Exclusive.
+     * 
+ * + * int32 end_index = 3; + * + * @return The endIndex. + */ + int getEndIndex(); + } + /** + * + * + *
+   * Cursors for a subrange of published messages.
+   * 
+ * + * Protobuf type {@code google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange} + */ + public static final class CursorRange extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange) + CursorRangeOrBuilder { + private static final long serialVersionUID = 0L; + // Use CursorRange.newBuilder() to construct. + private CursorRange(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private CursorRange() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new CursorRange(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.pubsublite.proto.PublisherProto + .internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.pubsublite.proto.PublisherProto + .internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.class, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder.class); + } + + public static final int START_CURSOR_FIELD_NUMBER = 1; + private com.google.cloud.pubsublite.proto.Cursor startCursor_; + /** + * + * + *
+     * The cursor of the message at the start index. The cursors for remaining
+     * messages up to the end index (exclusive) are sequential.
+     * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return Whether the startCursor field is set. + */ + @java.lang.Override + public boolean hasStartCursor() { + return startCursor_ != null; + } + /** + * + * + *
+     * The cursor of the message at the start index. The cursors for remaining
+     * messages up to the end index (exclusive) are sequential.
+     * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return The startCursor. + */ + @java.lang.Override + public com.google.cloud.pubsublite.proto.Cursor getStartCursor() { + return startCursor_ == null + ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() + : startCursor_; + } + /** + * + * + *
+     * The cursor of the message at the start index. The cursors for remaining
+     * messages up to the end index (exclusive) are sequential.
+     * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + @java.lang.Override + public com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder() { + return startCursor_ == null + ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() + : startCursor_; + } + + public static final int START_INDEX_FIELD_NUMBER = 2; + private int startIndex_ = 0; + /** + * + * + *
+     * Index of the message in the published batch that corresponds to the
+     * start cursor. Inclusive.
+     * 
+ * + * int32 start_index = 2; + * + * @return The startIndex. + */ + @java.lang.Override + public int getStartIndex() { + return startIndex_; + } + + public static final int END_INDEX_FIELD_NUMBER = 3; + private int endIndex_ = 0; + /** + * + * + *
+     * Index of the last message in this range. Exclusive.
+     * 
+ * + * int32 end_index = 3; + * + * @return The endIndex. + */ + @java.lang.Override + public int getEndIndex() { + return endIndex_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (startCursor_ != null) { + output.writeMessage(1, getStartCursor()); + } + if (startIndex_ != 0) { + output.writeInt32(2, startIndex_); + } + if (endIndex_ != 0) { + output.writeInt32(3, endIndex_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (startCursor_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getStartCursor()); + } + if (startIndex_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(2, startIndex_); + } + if (endIndex_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(3, endIndex_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange)) { + return super.equals(obj); + } + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange other = + (com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange) obj; + + if (hasStartCursor() != other.hasStartCursor()) return false; + if (hasStartCursor()) { + if (!getStartCursor().equals(other.getStartCursor())) return false; + } + if (getStartIndex() != other.getStartIndex()) return false; + if (getEndIndex() != other.getEndIndex()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasStartCursor()) { + hash = (37 * hash) + START_CURSOR_FIELD_NUMBER; + hash = (53 * hash) + getStartCursor().hashCode(); + } + hash = (37 * hash) + START_INDEX_FIELD_NUMBER; + hash = (53 * hash) + getStartIndex(); + hash = (37 * hash) + END_INDEX_FIELD_NUMBER; + hash = (53 * hash) + getEndIndex(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Cursors for a subrange of published messages.
+     * 
+ * + * Protobuf type {@code google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange) + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.pubsublite.proto.PublisherProto + .internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.pubsublite.proto.PublisherProto + .internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.class, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder.class); + } + + // Construct using + // com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + startCursor_ = null; + if (startCursorBuilder_ != null) { + startCursorBuilder_.dispose(); + startCursorBuilder_ = null; + } + startIndex_ = 0; + endIndex_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.pubsublite.proto.PublisherProto + .internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_descriptor; + } + + @java.lang.Override + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + getDefaultInstanceForType() { + return com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + .getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange build() { + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange result = + buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange buildPartial() { + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange result = + new com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.startCursor_ = + startCursorBuilder_ == null ? startCursor_ : startCursorBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.startIndex_ = startIndex_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.endIndex_ = endIndex_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange) { + return mergeFrom( + (com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange other) { + if (other + == com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + .getDefaultInstance()) return this; + if (other.hasStartCursor()) { + mergeStartCursor(other.getStartCursor()); + } + if (other.getStartIndex() != 0) { + setStartIndex(other.getStartIndex()); + } + if (other.getEndIndex() != 0) { + setEndIndex(other.getEndIndex()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getStartCursorFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: + { + startIndex_ = input.readInt32(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: + { + endIndex_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.cloud.pubsublite.proto.Cursor startCursor_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.pubsublite.proto.Cursor, + com.google.cloud.pubsublite.proto.Cursor.Builder, + com.google.cloud.pubsublite.proto.CursorOrBuilder> + startCursorBuilder_; + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return Whether the startCursor field is set. + */ + public boolean hasStartCursor() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return The startCursor. + */ + public com.google.cloud.pubsublite.proto.Cursor getStartCursor() { + if (startCursorBuilder_ == null) { + return startCursor_ == null + ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() + : startCursor_; + } else { + return startCursorBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + public Builder setStartCursor(com.google.cloud.pubsublite.proto.Cursor value) { + if (startCursorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + startCursor_ = value; + } else { + startCursorBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + public Builder setStartCursor( + com.google.cloud.pubsublite.proto.Cursor.Builder builderForValue) { + if (startCursorBuilder_ == null) { + startCursor_ = builderForValue.build(); + } else { + startCursorBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + public Builder mergeStartCursor(com.google.cloud.pubsublite.proto.Cursor value) { + if (startCursorBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && startCursor_ != null + && startCursor_ != com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance()) { + getStartCursorBuilder().mergeFrom(value); + } else { + startCursor_ = value; + } + } else { + startCursorBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + public Builder clearStartCursor() { + bitField0_ = (bitField0_ & ~0x00000001); + startCursor_ = null; + if (startCursorBuilder_ != null) { + startCursorBuilder_.dispose(); + startCursorBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + public com.google.cloud.pubsublite.proto.Cursor.Builder getStartCursorBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getStartCursorFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + public com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder() { + if (startCursorBuilder_ != null) { + return startCursorBuilder_.getMessageOrBuilder(); + } else { + return startCursor_ == null + ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() + : startCursor_; + } + } + /** + * + * + *
+       * The cursor of the message at the start index. The cursors for remaining
+       * messages up to the end index (exclusive) are sequential.
+       * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.pubsublite.proto.Cursor, + com.google.cloud.pubsublite.proto.Cursor.Builder, + com.google.cloud.pubsublite.proto.CursorOrBuilder> + getStartCursorFieldBuilder() { + if (startCursorBuilder_ == null) { + startCursorBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.pubsublite.proto.Cursor, + com.google.cloud.pubsublite.proto.Cursor.Builder, + com.google.cloud.pubsublite.proto.CursorOrBuilder>( + getStartCursor(), getParentForChildren(), isClean()); + startCursor_ = null; + } + return startCursorBuilder_; + } + + private int startIndex_; + /** + * + * + *
+       * Index of the message in the published batch that corresponds to the
+       * start cursor. Inclusive.
+       * 
+ * + * int32 start_index = 2; + * + * @return The startIndex. + */ + @java.lang.Override + public int getStartIndex() { + return startIndex_; + } + /** + * + * + *
+       * Index of the message in the published batch that corresponds to the
+       * start cursor. Inclusive.
+       * 
+ * + * int32 start_index = 2; + * + * @param value The startIndex to set. + * @return This builder for chaining. + */ + public Builder setStartIndex(int value) { + + startIndex_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * Index of the message in the published batch that corresponds to the
+       * start cursor. Inclusive.
+       * 
+ * + * int32 start_index = 2; + * + * @return This builder for chaining. + */ + public Builder clearStartIndex() { + bitField0_ = (bitField0_ & ~0x00000002); + startIndex_ = 0; + onChanged(); + return this; + } + + private int endIndex_; + /** + * + * + *
+       * Index of the last message in this range. Exclusive.
+       * 
+ * + * int32 end_index = 3; + * + * @return The endIndex. + */ + @java.lang.Override + public int getEndIndex() { + return endIndex_; + } + /** + * + * + *
+       * Index of the last message in this range. Exclusive.
+       * 
+ * + * int32 end_index = 3; + * + * @param value The endIndex to set. + * @return This builder for chaining. + */ + public Builder setEndIndex(int value) { + + endIndex_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+       * Index of the last message in this range. Exclusive.
+       * 
+ * + * int32 end_index = 3; + * + * @return This builder for chaining. + */ + public Builder clearEndIndex() { + bitField0_ = (bitField0_ & ~0x00000004); + endIndex_ = 0; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange) + } + + // @@protoc_insertion_point(class_scope:google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange) + private static final com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange(); + } + + public static com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CursorRange parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public static final int START_CURSOR_FIELD_NUMBER = 1; + private com.google.cloud.pubsublite.proto.Cursor startCursor_; + /** + * + * + *
+   * The cursor of the first published message in the batch. The cursors for any
+   * remaining messages in the batch are guaranteed to be sequential.
+   * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return Whether the startCursor field is set. + */ + @java.lang.Override + public boolean hasStartCursor() { + return startCursor_ != null; + } + /** + * + * + *
+   * The cursor of the first published message in the batch. The cursors for any
+   * remaining messages in the batch are guaranteed to be sequential.
+   * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * @return The startCursor. + */ + @java.lang.Override + public com.google.cloud.pubsublite.proto.Cursor getStartCursor() { + return startCursor_ == null + ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() + : startCursor_; + } + /** + * + * + *
+   * The cursor of the first published message in the batch. The cursors for any
+   * remaining messages in the batch are guaranteed to be sequential.
+   * 
+ * + * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + */ + @java.lang.Override + public com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder() { + return startCursor_ == null + ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() + : startCursor_; + } + + public static final int CURSOR_RANGES_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private java.util.List + cursorRanges_; + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + @java.lang.Override + public java.util.List + getCursorRangesList() { + return cursorRanges_; + } + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + @java.lang.Override + public java.util.List< + ? extends com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder> + getCursorRangesOrBuilderList() { + return cursorRanges_; + } /** * * *
-   * The cursor of the first published message in the batch. The cursors for any
-   * remaining messages in the batch are guaranteed to be sequential.
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
    * 
* - * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; - * - * @return Whether the startCursor field is set. + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * */ @java.lang.Override - public boolean hasStartCursor() { - return startCursor_ != null; + public int getCursorRangesCount() { + return cursorRanges_.size(); } /** * * *
-   * The cursor of the first published message in the batch. The cursors for any
-   * remaining messages in the batch are guaranteed to be sequential.
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
    * 
* - * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; - * - * @return The startCursor. + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * */ @java.lang.Override - public com.google.cloud.pubsublite.proto.Cursor getStartCursor() { - return startCursor_ == null - ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() - : startCursor_; + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange getCursorRanges( + int index) { + return cursorRanges_.get(index); } /** * * *
-   * The cursor of the first published message in the batch. The cursors for any
-   * remaining messages in the batch are guaranteed to be sequential.
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
    * 
* - * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * */ @java.lang.Override - public com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder() { - return startCursor_ == null - ? com.google.cloud.pubsublite.proto.Cursor.getDefaultInstance() - : startCursor_; + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder + getCursorRangesOrBuilder(int index) { + return cursorRanges_.get(index); } private byte memoizedIsInitialized = -1; @@ -135,6 +1237,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (startCursor_ != null) { output.writeMessage(1, getStartCursor()); } + for (int i = 0; i < cursorRanges_.size(); i++) { + output.writeMessage(2, cursorRanges_.get(i)); + } getUnknownFields().writeTo(output); } @@ -147,6 +1252,9 @@ public int getSerializedSize() { if (startCursor_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getStartCursor()); } + for (int i = 0; i < cursorRanges_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, cursorRanges_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -167,6 +1275,7 @@ public boolean equals(final java.lang.Object obj) { if (hasStartCursor()) { if (!getStartCursor().equals(other.getStartCursor())) return false; } + if (!getCursorRangesList().equals(other.getCursorRangesList())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -182,6 +1291,10 @@ public int hashCode() { hash = (37 * hash) + START_CURSOR_FIELD_NUMBER; hash = (53 * hash) + getStartCursor().hashCode(); } + if (getCursorRangesCount() > 0) { + hash = (37 * hash) + CURSOR_RANGES_FIELD_NUMBER; + hash = (53 * hash) + getCursorRangesList().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -327,6 +1440,13 @@ public Builder clear() { startCursorBuilder_.dispose(); startCursorBuilder_ = null; } + if (cursorRangesBuilder_ == null) { + cursorRanges_ = java.util.Collections.emptyList(); + } else { + cursorRanges_ = null; + cursorRangesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); return this; } @@ -354,6 +1474,7 @@ public com.google.cloud.pubsublite.proto.MessagePublishResponse build() { public com.google.cloud.pubsublite.proto.MessagePublishResponse buildPartial() { com.google.cloud.pubsublite.proto.MessagePublishResponse result = new com.google.cloud.pubsublite.proto.MessagePublishResponse(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } @@ -361,6 +1482,19 @@ public com.google.cloud.pubsublite.proto.MessagePublishResponse buildPartial() { return result; } + private void buildPartialRepeatedFields( + com.google.cloud.pubsublite.proto.MessagePublishResponse result) { + if (cursorRangesBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + cursorRanges_ = java.util.Collections.unmodifiableList(cursorRanges_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.cursorRanges_ = cursorRanges_; + } else { + result.cursorRanges_ = cursorRangesBuilder_.build(); + } + } + private void buildPartial0(com.google.cloud.pubsublite.proto.MessagePublishResponse result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -418,6 +1552,33 @@ public Builder mergeFrom(com.google.cloud.pubsublite.proto.MessagePublishRespons if (other.hasStartCursor()) { mergeStartCursor(other.getStartCursor()); } + if (cursorRangesBuilder_ == null) { + if (!other.cursorRanges_.isEmpty()) { + if (cursorRanges_.isEmpty()) { + cursorRanges_ = other.cursorRanges_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureCursorRangesIsMutable(); + cursorRanges_.addAll(other.cursorRanges_); + } + onChanged(); + } + } else { + if (!other.cursorRanges_.isEmpty()) { + if (cursorRangesBuilder_.isEmpty()) { + cursorRangesBuilder_.dispose(); + cursorRangesBuilder_ = null; + cursorRanges_ = other.cursorRanges_; + bitField0_ = (bitField0_ & ~0x00000002); + cursorRangesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getCursorRangesFieldBuilder() + : null; + } else { + cursorRangesBuilder_.addAllMessages(other.cursorRanges_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -450,6 +1611,21 @@ public Builder mergeFrom( bitField0_ |= 0x00000001; break; } // case 10 + case 18: + { + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange m = + input.readMessage( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + .parser(), + extensionRegistry); + if (cursorRangesBuilder_ == null) { + ensureCursorRangesIsMutable(); + cursorRanges_.add(m); + } else { + cursorRangesBuilder_.addMessage(m); + } + break; + } // case 18 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -662,6 +1838,526 @@ public com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder return startCursorBuilder_; } + private java.util.List + cursorRanges_ = java.util.Collections.emptyList(); + + private void ensureCursorRangesIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + cursorRanges_ = + new java.util.ArrayList< + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange>( + cursorRanges_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder> + cursorRangesBuilder_; + + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public java.util.List + getCursorRangesList() { + if (cursorRangesBuilder_ == null) { + return java.util.Collections.unmodifiableList(cursorRanges_); + } else { + return cursorRangesBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public int getCursorRangesCount() { + if (cursorRangesBuilder_ == null) { + return cursorRanges_.size(); + } else { + return cursorRangesBuilder_.getCount(); + } + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange getCursorRanges( + int index) { + if (cursorRangesBuilder_ == null) { + return cursorRanges_.get(index); + } else { + return cursorRangesBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder setCursorRanges( + int index, com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange value) { + if (cursorRangesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureCursorRangesIsMutable(); + cursorRanges_.set(index, value); + onChanged(); + } else { + cursorRangesBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder setCursorRanges( + int index, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder + builderForValue) { + if (cursorRangesBuilder_ == null) { + ensureCursorRangesIsMutable(); + cursorRanges_.set(index, builderForValue.build()); + onChanged(); + } else { + cursorRangesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder addCursorRanges( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange value) { + if (cursorRangesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureCursorRangesIsMutable(); + cursorRanges_.add(value); + onChanged(); + } else { + cursorRangesBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder addCursorRanges( + int index, com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange value) { + if (cursorRangesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureCursorRangesIsMutable(); + cursorRanges_.add(index, value); + onChanged(); + } else { + cursorRangesBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder addCursorRanges( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder + builderForValue) { + if (cursorRangesBuilder_ == null) { + ensureCursorRangesIsMutable(); + cursorRanges_.add(builderForValue.build()); + onChanged(); + } else { + cursorRangesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder addCursorRanges( + int index, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder + builderForValue) { + if (cursorRangesBuilder_ == null) { + ensureCursorRangesIsMutable(); + cursorRanges_.add(index, builderForValue.build()); + onChanged(); + } else { + cursorRangesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder addAllCursorRanges( + java.lang.Iterable< + ? extends com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange> + values) { + if (cursorRangesBuilder_ == null) { + ensureCursorRangesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, cursorRanges_); + onChanged(); + } else { + cursorRangesBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder clearCursorRanges() { + if (cursorRangesBuilder_ == null) { + cursorRanges_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + cursorRangesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public Builder removeCursorRanges(int index) { + if (cursorRangesBuilder_ == null) { + ensureCursorRangesIsMutable(); + cursorRanges_.remove(index); + onChanged(); + } else { + cursorRangesBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder + getCursorRangesBuilder(int index) { + return getCursorRangesFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder + getCursorRangesOrBuilder(int index) { + if (cursorRangesBuilder_ == null) { + return cursorRanges_.get(index); + } else { + return cursorRangesBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public java.util.List< + ? extends com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder> + getCursorRangesOrBuilderList() { + if (cursorRangesBuilder_ != null) { + return cursorRangesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(cursorRanges_); + } + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder + addCursorRangesBuilder() { + return getCursorRangesFieldBuilder() + .addBuilder( + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + .getDefaultInstance()); + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder + addCursorRangesBuilder(int index) { + return getCursorRangesFieldBuilder() + .addBuilder( + index, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange + .getDefaultInstance()); + } + /** + * + * + *
+     * Cursors for messages published in the batch. There will exist multiple
+     * ranges when cursors are not contiguous within the batch.
+     * The cursor ranges may not account for all messages in the batch when
+     * publish idempotency is enabled. A missing range indicates that cursors
+     * could not be determined for messages within the range, as they were
+     * deduplicated and the necessary data was not available at publish time.
+     * These messages will have offsets when received by a subscriber.
+     * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + public java.util.List< + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder> + getCursorRangesBuilderList() { + return getCursorRangesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder> + getCursorRangesFieldBuilder() { + if (cursorRangesBuilder_ == null) { + cursorRangesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange.Builder, + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder>( + cursorRanges_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean()); + cursorRanges_ = null; + } + return cursorRangesBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponseOrBuilder.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponseOrBuilder.java index e64d31f8f..ae78ec184 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponseOrBuilder.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/MessagePublishResponseOrBuilder.java @@ -60,4 +60,99 @@ public interface MessagePublishResponseOrBuilder * .google.cloud.pubsublite.v1.Cursor start_cursor = 1; */ com.google.cloud.pubsublite.proto.CursorOrBuilder getStartCursorOrBuilder(); + + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + java.util.List + getCursorRangesList(); + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRange getCursorRanges(int index); + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + int getCursorRangesCount(); + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + java.util.List< + ? extends com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder> + getCursorRangesOrBuilderList(); + /** + * + * + *
+   * Cursors for messages published in the batch. There will exist multiple
+   * ranges when cursors are not contiguous within the batch.
+   * The cursor ranges may not account for all messages in the batch when
+   * publish idempotency is enabled. A missing range indicates that cursors
+   * could not be determined for messages within the range, as they were
+   * deduplicated and the necessary data was not available at publish time.
+   * These messages will have offsets when received by a subscriber.
+   * 
+ * + * + * repeated .google.cloud.pubsublite.v1.MessagePublishResponse.CursorRange cursor_ranges = 2; + * + */ + com.google.cloud.pubsublite.proto.MessagePublishResponse.CursorRangeOrBuilder + getCursorRangesOrBuilder(int index); } diff --git a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/PublisherProto.java b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/PublisherProto.java index e281ca263..5fdca7813 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/PublisherProto.java +++ b/proto-google-cloud-pubsublite-v1/src/main/java/com/google/cloud/pubsublite/proto/PublisherProto.java @@ -43,6 +43,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_cloud_pubsublite_v1_PublishRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -64,34 +68,40 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "roto\022\032google.cloud.pubsublite.v1\032\034google" + "/api/annotations.proto\032\027google/api/clien" + "t.proto\032\'google/cloud/pubsublite/v1/comm" - + "on.proto\"9\n\025InitialPublishRequest\022\r\n\005top" - + "ic\030\001 \001(\t\022\021\n\tpartition\030\002 \001(\003\"\030\n\026InitialPu" - + "blishResponse\"T\n\025MessagePublishRequest\022;" - + "\n\010messages\030\001 \003(\0132).google.cloud.pubsubli" - + "te.v1.PubSubMessage\"R\n\026MessagePublishRes" - + "ponse\0228\n\014start_cursor\030\001 \001(\0132\".google.clo" - + "ud.pubsublite.v1.Cursor\"\304\001\n\016PublishReque" - + "st\022L\n\017initial_request\030\001 \001(\01321.google.clo" - + "ud.pubsublite.v1.InitialPublishRequestH\000" - + "\022T\n\027message_publish_request\030\002 \001(\01321.goog" - + "le.cloud.pubsublite.v1.MessagePublishReq" - + "uestH\000B\016\n\014request_type\"\302\001\n\017PublishRespon" - + "se\022N\n\020initial_response\030\001 \001(\01322.google.cl" - + "oud.pubsublite.v1.InitialPublishResponse" - + "H\000\022N\n\020message_response\030\002 \001(\01322.google.cl" - + "oud.pubsublite.v1.MessagePublishResponse" - + "H\000B\017\n\rresponse_type2\313\001\n\020PublisherService" - + "\022h\n\007Publish\022*.google.cloud.pubsublite.v1" - + ".PublishRequest\032+.google.cloud.pubsublit" - + "e.v1.PublishResponse\"\000(\0010\001\032M\312A\031pubsublit" - + "e.googleapis.com\322A.https://www.googleapi" - + "s.com/auth/cloud-platformB\322\001\n!com.google" - + ".cloud.pubsublite.protoB\016PublisherProtoP" - + "\001Z>cloud.google.com/go/pubsublite/apiv1/" - + "pubsublitepb;pubsublitepb\370\001\001\252\002\032Google.Cl" - + "oud.PubSubLite.V1\312\002\032Google\\Cloud\\PubSubL" - + "ite\\V1\352\002\035Google::Cloud::PubSubLite::V1b\006" - + "proto3" + + "on.proto\"L\n\025InitialPublishRequest\022\r\n\005top" + + "ic\030\001 \001(\t\022\021\n\tpartition\030\002 \001(\003\022\021\n\tclient_id" + + "\030\003 \001(\014\"\030\n\026InitialPublishResponse\"s\n\025Mess" + + "agePublishRequest\022;\n\010messages\030\001 \003(\0132).go" + + "ogle.cloud.pubsublite.v1.PubSubMessage\022\035" + + "\n\025first_sequence_number\030\002 \001(\003\"\232\002\n\026Messag" + + "ePublishResponse\0228\n\014start_cursor\030\001 \001(\0132\"" + + ".google.cloud.pubsublite.v1.Cursor\022U\n\rcu" + + "rsor_ranges\030\002 \003(\0132>.google.cloud.pubsubl" + + "ite.v1.MessagePublishResponse.CursorRang" + + "e\032o\n\013CursorRange\0228\n\014start_cursor\030\001 \001(\0132\"" + + ".google.cloud.pubsublite.v1.Cursor\022\023\n\013st" + + "art_index\030\002 \001(\005\022\021\n\tend_index\030\003 \001(\005\"\304\001\n\016P" + + "ublishRequest\022L\n\017initial_request\030\001 \001(\01321" + + ".google.cloud.pubsublite.v1.InitialPubli" + + "shRequestH\000\022T\n\027message_publish_request\030\002" + + " \001(\01321.google.cloud.pubsublite.v1.Messag" + + "ePublishRequestH\000B\016\n\014request_type\"\302\001\n\017Pu" + + "blishResponse\022N\n\020initial_response\030\001 \001(\0132" + + "2.google.cloud.pubsublite.v1.InitialPubl" + + "ishResponseH\000\022N\n\020message_response\030\002 \001(\0132" + + "2.google.cloud.pubsublite.v1.MessagePubl" + + "ishResponseH\000B\017\n\rresponse_type2\313\001\n\020Publi" + + "sherService\022h\n\007Publish\022*.google.cloud.pu" + + "bsublite.v1.PublishRequest\032+.google.clou" + + "d.pubsublite.v1.PublishResponse\"\000(\0010\001\032M\312" + + "A\031pubsublite.googleapis.com\322A.https://ww" + + "w.googleapis.com/auth/cloud-platformB\322\001\n" + + "!com.google.cloud.pubsublite.protoB\016Publ" + + "isherProtoP\001Z>cloud.google.com/go/pubsub" + + "lite/apiv1/pubsublitepb;pubsublitepb\370\001\001\252" + + "\002\032Google.Cloud.PubSubLite.V1\312\002\032Google\\Cl" + + "oud\\PubSubLite\\V1\352\002\035Google::Cloud::PubSu" + + "bLite::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -107,7 +117,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_pubsublite_v1_InitialPublishRequest_descriptor, new java.lang.String[] { - "Topic", "Partition", + "Topic", "Partition", "ClientId", }); internal_static_google_cloud_pubsublite_v1_InitialPublishResponse_descriptor = getDescriptor().getMessageTypes().get(1); @@ -121,7 +131,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_pubsublite_v1_MessagePublishRequest_descriptor, new java.lang.String[] { - "Messages", + "Messages", "FirstSequenceNumber", }); internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_descriptor = getDescriptor().getMessageTypes().get(3); @@ -129,7 +139,17 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_descriptor, new java.lang.String[] { - "StartCursor", + "StartCursor", "CursorRanges", + }); + internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_descriptor = + internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_descriptor + .getNestedTypes() + .get(0); + internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_pubsublite_v1_MessagePublishResponse_CursorRange_descriptor, + new java.lang.String[] { + "StartCursor", "StartIndex", "EndIndex", }); internal_static_google_cloud_pubsublite_v1_PublishRequest_descriptor = getDescriptor().getMessageTypes().get(4); diff --git a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/admin.proto b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/admin.proto index b13270b96..484aa1956 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/admin.proto +++ b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/admin.proto @@ -38,7 +38,8 @@ option ruby_package = "Google::Cloud::PubSubLite::V1"; // subscriptions, such creating, listing, and deleting topics and subscriptions. service AdminService { option (google.api.default_host) = "pubsublite.googleapis.com"; - option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; // Creates a new topic. rpc CreateTopic(CreateTopicRequest) returns (Topic) { @@ -91,7 +92,8 @@ service AdminService { } // Lists the subscriptions attached to the specified topic. - rpc ListTopicSubscriptions(ListTopicSubscriptionsRequest) returns (ListTopicSubscriptionsResponse) { + rpc ListTopicSubscriptions(ListTopicSubscriptionsRequest) + returns (ListTopicSubscriptionsResponse) { option (google.api.http) = { get: "/v1/admin/{name=projects/*/locations/*/topics/*}/subscriptions" }; @@ -104,7 +106,8 @@ service AdminService { post: "/v1/admin/{parent=projects/*/locations/*}/subscriptions" body: "subscription" }; - option (google.api.method_signature) = "parent,subscription,subscription_id"; + option (google.api.method_signature) = + "parent,subscription,subscription_id"; } // Returns the subscription configuration. @@ -116,7 +119,8 @@ service AdminService { } // Returns the list of subscriptions for the given project. - rpc ListSubscriptions(ListSubscriptionsRequest) returns (ListSubscriptionsResponse) { + rpc ListSubscriptions(ListSubscriptionsRequest) + returns (ListSubscriptionsResponse) { option (google.api.http) = { get: "/v1/admin/{parent=projects/*/locations/*}/subscriptions" }; @@ -133,7 +137,8 @@ service AdminService { } // Deletes the specified subscription. - rpc DeleteSubscription(DeleteSubscriptionRequest) returns (google.protobuf.Empty) { + rpc DeleteSubscription(DeleteSubscriptionRequest) + returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/admin/{name=projects/*/locations/*/subscriptions/*}" }; @@ -161,7 +166,8 @@ service AdminService { // // If the previous seek operation has not yet completed, it will be aborted // and the new invocation of seek will supersede it. - rpc SeekSubscription(SeekSubscriptionRequest) returns (google.longrunning.Operation) { + rpc SeekSubscription(SeekSubscriptionRequest) + returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/admin/{name=projects/*/locations/*/subscriptions/*}:seek" body: "*" @@ -190,7 +196,8 @@ service AdminService { } // Returns the list of reservations for the given project. - rpc ListReservations(ListReservationsRequest) returns (ListReservationsResponse) { + rpc ListReservations(ListReservationsRequest) + returns (ListReservationsResponse) { option (google.api.http) = { get: "/v1/admin/{parent=projects/*/locations/*}/reservations" }; @@ -207,7 +214,8 @@ service AdminService { } // Deletes the specified reservation. - rpc DeleteReservation(DeleteReservationRequest) returns (google.protobuf.Empty) { + rpc DeleteReservation(DeleteReservationRequest) + returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/admin/{name=projects/*/locations/*/reservations/*}" }; @@ -215,7 +223,8 @@ service AdminService { } // Lists the topics attached to the specified reservation. - rpc ListReservationTopics(ListReservationTopicsRequest) returns (ListReservationTopicsResponse) { + rpc ListReservationTopics(ListReservationTopicsRequest) + returns (ListReservationTopicsResponse) { option (google.api.http) = { get: "/v1/admin/{name=projects/*/locations/*/reservations/*}/topics" }; @@ -234,11 +243,12 @@ message CreateTopicRequest { } ]; - // Required. Configuration of the topic to create. Its `name` field is ignored. + // Required. Configuration of the topic to create. Its `name` field is + // ignored. Topic topic = 2 [(google.api.field_behavior) = REQUIRED]; - // Required. The ID to use for the topic, which will become the final component of - // the topic's name. + // Required. The ID to use for the topic, which will become the final + // component of the topic's name. // // This value is structured like: `my-topic-name`. string topic_id = 3 [(google.api.field_behavior) = REQUIRED]; @@ -313,7 +323,8 @@ message UpdateTopicRequest { Topic topic = 1 [(google.api.field_behavior) = REQUIRED]; // Required. A mask specifying the topic fields to change. - google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; + google.protobuf.FieldMask update_mask = 2 + [(google.api.field_behavior) = REQUIRED]; } // Request for DeleteTopic. @@ -372,11 +383,12 @@ message CreateSubscriptionRequest { } ]; - // Required. Configuration of the subscription to create. Its `name` field is ignored. + // Required. Configuration of the subscription to create. Its `name` field is + // ignored. Subscription subscription = 2 [(google.api.field_behavior) = REQUIRED]; - // Required. The ID to use for the subscription, which will become the final component - // of the subscription's name. + // Required. The ID to use for the subscription, which will become the final + // component of the subscription's name. // // This value is structured like: `my-sub-name`. string subscription_id = 3 [(google.api.field_behavior) = REQUIRED]; @@ -440,7 +452,8 @@ message UpdateSubscriptionRequest { Subscription subscription = 1 [(google.api.field_behavior) = REQUIRED]; // Required. A mask specifying the subscription fields to change. - google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; + google.protobuf.FieldMask update_mask = 2 + [(google.api.field_behavior) = REQUIRED]; } // Request for DeleteSubscription. @@ -490,9 +503,7 @@ message SeekSubscriptionRequest { } // Response for SeekSubscription long running operation. -message SeekSubscriptionResponse { - -} +message SeekSubscriptionResponse {} // Metadata for long running operations. message OperationMetadata { @@ -523,11 +534,12 @@ message CreateReservationRequest { } ]; - // Required. Configuration of the reservation to create. Its `name` field is ignored. + // Required. Configuration of the reservation to create. Its `name` field is + // ignored. Reservation reservation = 2 [(google.api.field_behavior) = REQUIRED]; - // Required. The ID to use for the reservation, which will become the final component of - // the reservation's name. + // Required. The ID to use for the reservation, which will become the final + // component of the reservation's name. // // This value is structured like: `my-reservation-name`. string reservation_id = 3 [(google.api.field_behavior) = REQUIRED]; @@ -587,7 +599,8 @@ message UpdateReservationRequest { Reservation reservation = 1 [(google.api.field_behavior) = REQUIRED]; // Required. A mask specifying the reservation fields to change. - google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; + google.protobuf.FieldMask update_mask = 2 + [(google.api.field_behavior) = REQUIRED]; } // Request for DeleteReservation. diff --git a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/common.proto b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/common.proto index dd6d89a73..3f08c3086 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/common.proto +++ b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/common.proto @@ -163,8 +163,8 @@ message Topic { // Structured like: // projects/{project_number}/locations/{location}/reservations/{reservation_id} string throughput_reservation = 1 [(google.api.resource_reference) = { - type: "pubsublite.googleapis.com/Reservation" - }]; + type: "pubsublite.googleapis.com/Reservation" + }]; } // The name of the topic. @@ -221,8 +221,8 @@ message Subscription { // Structured like: // projects/{project_number}/locations/{location}/topics/{topic_id} string topic = 2 [(google.api.resource_reference) = { - type: "pubsublite.googleapis.com/Topic" - }]; + type: "pubsublite.googleapis.com/Topic" + }]; // The settings for this subscription's message delivery. DeliveryConfig delivery_config = 3; @@ -265,13 +265,13 @@ message ExportConfig { // `ACTIVE` and `PAUSED` will result in an error. State desired_state = 1; - // Output only. The current state of the export, which may be different to the desired - // state due to errors. + // Output only. The current state of the export, which may be different to the + // desired state due to errors. This field is output only. State current_state = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; - // Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not - // be exported to the destination. For example, the message can not be - // published to the Pub/Sub service because it does not satisfy the + // Optional. The name of an optional Pub/Sub Lite topic to publish messages + // that can not be exported to the destination. For example, the message can + // not be published to the Pub/Sub service because it does not satisfy the // constraints documented at https://cloud.google.com/pubsub/docs/publisher. // // Structured like: diff --git a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/cursor.proto b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/cursor.proto index 3b8fc7d0e..95a62fc36 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/cursor.proto +++ b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/cursor.proto @@ -36,11 +36,12 @@ option ruby_package = "Google::Cloud::PubSubLite::V1"; // progress within a topic partition for a given subscription. service CursorService { option (google.api.default_host) = "pubsublite.googleapis.com"; - option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; // Establishes a stream with the server for managing committed cursors. - rpc StreamingCommitCursor(stream StreamingCommitCursorRequest) returns (stream StreamingCommitCursorResponse) { - } + rpc StreamingCommitCursor(stream StreamingCommitCursorRequest) + returns (stream StreamingCommitCursorResponse) {} // Updates the committed cursor. rpc CommitCursor(CommitCursorRequest) returns (CommitCursorResponse) { @@ -51,7 +52,8 @@ service CursorService { } // Returns all committed cursor information for a subscription. - rpc ListPartitionCursors(ListPartitionCursorsRequest) returns (ListPartitionCursorsResponse) { + rpc ListPartitionCursors(ListPartitionCursorsRequest) + returns (ListPartitionCursorsResponse) { option (google.api.http) = { get: "/v1/cursor/{parent=projects/*/locations/*/subscriptions/*}/cursors" }; @@ -72,9 +74,7 @@ message InitialCommitCursorRequest { } // Response to an InitialCommitCursorRequest. -message InitialCommitCursorResponse { - -} +message InitialCommitCursorResponse {} // Streaming request to update the committed cursor. Subsequent // SequencedCommitCursorRequests override outstanding ones. @@ -129,9 +129,7 @@ message CommitCursorRequest { } // Response for CommitCursor. -message CommitCursorResponse { - -} +message CommitCursorResponse {} // Request for ListPartitionCursors. message ListPartitionCursorsRequest { diff --git a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/publisher.proto b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/publisher.proto index 748fabcdf..20b924384 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/publisher.proto +++ b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/publisher.proto @@ -35,7 +35,8 @@ option ruby_package = "Google::Cloud::PubSubLite::V1"; // to subscriber clients upon request (via the `SubscriberService`). service PublisherService { option (google.api.default_host) = "pubsublite.googleapis.com"; - option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; // Establishes a stream with the server for publishing messages. Once the // stream is initialized, the client publishes messages by sending publish @@ -44,8 +45,7 @@ service PublisherService { // were sent. Note that multiple PublishRequests can be in flight // simultaneously, but they will be processed by the server in the order that // they are sent by the client on a given stream. - rpc Publish(stream PublishRequest) returns (stream PublishResponse) { - } + rpc Publish(stream PublishRequest) returns (stream PublishResponse) {} } // The first request that must be sent on a newly-opened stream. @@ -57,24 +57,68 @@ message InitialPublishRequest { // Partitions are zero indexed, so `partition` must be in the range [0, // topic.num_partitions). int64 partition = 2; + + // Unique identifier for a publisher client. If set, enables publish + // idempotency within a publisher client session. + // + // The length of this field must be exactly 16 bytes long and should be + // populated with a 128 bit uuid, generated by standard uuid algorithms like + // uuid1 or uuid4. The same identifier should be reused following + // disconnections with retryable stream errors. + bytes client_id = 3; } // Response to an InitialPublishRequest. -message InitialPublishResponse { - -} +message InitialPublishResponse {} // Request to publish messages to the topic. message MessagePublishRequest { // The messages to publish. repeated PubSubMessage messages = 1; + + // The sequence number corresponding to the first message in `messages`. + // Messages within a batch are ordered and the sequence numbers of all + // subsequent messages in the batch are assumed to be incremental. + // + // Sequence numbers are assigned at the message level and the first message + // published in a publisher client session must have a sequence number of 0. + // All messages must have contiguous sequence numbers, which uniquely identify + // the messages accepted by the publisher client. Since messages are ordered, + // the client only needs to specify the sequence number of the first message + // in a published batch. The server deduplicates messages with the same + // sequence number from the same publisher `client_id`. + int64 first_sequence_number = 2; } // Response to a MessagePublishRequest. message MessagePublishResponse { + // Cursors for a subrange of published messages. + message CursorRange { + // The cursor of the message at the start index. The cursors for remaining + // messages up to the end index (exclusive) are sequential. + Cursor start_cursor = 1; + + // Index of the message in the published batch that corresponds to the + // start cursor. Inclusive. + int32 start_index = 2; + + // Index of the last message in this range. Exclusive. + int32 end_index = 3; + } + // The cursor of the first published message in the batch. The cursors for any // remaining messages in the batch are guaranteed to be sequential. Cursor start_cursor = 1; + + // Cursors for messages published in the batch. There will exist multiple + // ranges when cursors are not contiguous within the batch. + // + // The cursor ranges may not account for all messages in the batch when + // publish idempotency is enabled. A missing range indicates that cursors + // could not be determined for messages within the range, as they were + // deduplicated and the necessary data was not available at publish time. + // These messages will have offsets when received by a subscriber. + repeated CursorRange cursor_ranges = 2; } // Request sent from the client to the server on a stream. diff --git a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/subscriber.proto b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/subscriber.proto index 3a22c77bb..a02b3cf5d 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/subscriber.proto +++ b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/subscriber.proto @@ -34,18 +34,19 @@ option ruby_package = "Google::Cloud::PubSubLite::V1"; // from subscriptions. service SubscriberService { option (google.api.default_host) = "pubsublite.googleapis.com"; - option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; // Establishes a stream with the server for receiving messages. - rpc Subscribe(stream SubscribeRequest) returns (stream SubscribeResponse) { - } + rpc Subscribe(stream SubscribeRequest) returns (stream SubscribeResponse) {} } // The service that a subscriber client application uses to determine which // partitions it should connect to. service PartitionAssignmentService { option (google.api.default_host) = "pubsublite.googleapis.com"; - option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; // Assign partitions for this client to handle for the specified subscription. // @@ -54,8 +55,8 @@ service PartitionAssignmentService { // outstanding on the stream at a time. // The client should send a PartitionAssignmentAck after updating the // partitions it is connected to to reflect the new assignment. - rpc AssignPartitions(stream PartitionAssignmentRequest) returns (stream PartitionAssignment) { - } + rpc AssignPartitions(stream PartitionAssignmentRequest) + returns (stream PartitionAssignment) {} } // The first request that must be sent on a newly-opened stream. The client must @@ -68,9 +69,9 @@ message InitialSubscribeRequest { // so `partition` must be in the range [0, topic.num_partitions). int64 partition = 2; - // Optional. Initial target location within the message backlog. If not set, messages - // will be delivered from the commit cursor for the given subscription and - // partition. + // Optional. Initial target location within the message backlog. If not set, + // messages will be delivered from the commit cursor for the given + // subscription and partition. SeekRequest initial_location = 4 [(google.api.field_behavior) = OPTIONAL]; } @@ -202,9 +203,7 @@ message PartitionAssignment { // partitions may remain unassigned for a period of time until the // client is known to be inactive, after which time the server will break the // stream. -message PartitionAssignmentAck { - -} +message PartitionAssignmentAck {} // A request on the PartitionAssignment stream. message PartitionAssignmentRequest { diff --git a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/topic_stats.proto b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/topic_stats.proto index 23d225acf..f6226d3e0 100644 --- a/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/topic_stats.proto +++ b/proto-google-cloud-pubsublite-v1/src/main/proto/google/cloud/pubsublite/v1/topic_stats.proto @@ -34,11 +34,13 @@ option ruby_package = "Google::Cloud::PubSubLite::V1"; // This service allows users to get stats about messages in their topic. service TopicStatsService { option (google.api.default_host) = "pubsublite.googleapis.com"; - option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform"; // Compute statistics about a range of messages in a given topic and // partition. - rpc ComputeMessageStats(ComputeMessageStatsRequest) returns (ComputeMessageStatsResponse) { + rpc ComputeMessageStats(ComputeMessageStatsRequest) + returns (ComputeMessageStatsResponse) { option (google.api.http) = { post: "/v1/topicStats/{topic=projects/*/locations/*/topics/*}:computeMessageStats" body: "*" @@ -51,7 +53,8 @@ service TopicStatsService { // greater than the offset of any message whose publish has already // been acknowledged. It is zero if there have never been messages in the // partition. - rpc ComputeHeadCursor(ComputeHeadCursorRequest) returns (ComputeHeadCursorResponse) { + rpc ComputeHeadCursor(ComputeHeadCursorRequest) + returns (ComputeHeadCursorResponse) { option (google.api.http) = { post: "/v1/topicStats/{topic=projects/*/locations/*/topics/*}:computeHeadCursor" body: "*" @@ -60,7 +63,8 @@ service TopicStatsService { // Compute the corresponding cursor for a publish or event time in a topic // partition. - rpc ComputeTimeCursor(ComputeTimeCursorRequest) returns (ComputeTimeCursorResponse) { + rpc ComputeTimeCursor(ComputeTimeCursorRequest) + returns (ComputeTimeCursorResponse) { option (google.api.http) = { post: "/v1/topicStats/{topic=projects/*/locations/*/topics/*}:computeTimeCursor" body: "*" @@ -143,8 +147,8 @@ message ComputeTimeCursorRequest { // Required. The partition for which we should compute the cursor. int64 partition = 2 [(google.api.field_behavior) = REQUIRED]; - // Required. The target publish or event time. Specifying a future time will return an - // unset cursor. + // Required. The target publish or event time. Specifying a future time will + // return an unset cursor. TimeTarget target = 3 [(google.api.field_behavior) = REQUIRED]; }