lib/MessageIdBuilder.cc (47 lines of code) (raw):

/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ #include <pulsar/MessageIdBuilder.h> #include "BatchedMessageIdImpl.h" #include "MessageIdImpl.h" #include "PulsarApi.pb.h" namespace pulsar { MessageIdBuilder::MessageIdBuilder() : impl_(std::make_shared<MessageIdImpl>()) {} MessageIdBuilder MessageIdBuilder::from(const MessageId& messageId) { MessageIdBuilder builder; *builder.impl_ = *(messageId.impl_); return builder; } MessageIdBuilder MessageIdBuilder::from(const proto::MessageIdData& messageIdData) { return MessageIdBuilder() .ledgerId(messageIdData.ledgerid()) .entryId(messageIdData.entryid()) .partition(messageIdData.partition()) .batchIndex(messageIdData.batch_index()) .batchSize(messageIdData.batch_size()); } MessageId MessageIdBuilder::build() const { if (impl_->batchIndex_ >= 0 && impl_->batchSize_ > 0) { return MessageId{std::make_shared<BatchedMessageIdImpl>(*impl_, BatchMessageAckerImpl::create(0))}; } else { return MessageId{impl_}; } } MessageIdBuilder& MessageIdBuilder::ledgerId(int64_t ledgerId) { impl_->ledgerId_ = ledgerId; return *this; } MessageIdBuilder& MessageIdBuilder::entryId(int64_t entryId) { impl_->entryId_ = entryId; return *this; } MessageIdBuilder& MessageIdBuilder::partition(int32_t partition) { impl_->partition_ = partition; return *this; } MessageIdBuilder& MessageIdBuilder::batchIndex(int32_t batchIndex) { impl_->batchIndex_ = batchIndex; return *this; } MessageIdBuilder& MessageIdBuilder::batchSize(int32_t batchSize) { impl_->batchSize_ = batchSize; return *this; } } // namespace pulsar