blob: db315f0ab7dbe0d398e4f55bddcc712900396197 [file] [log] [blame]
/*
* 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 "AwaitPullCallback.h"
ROCKETMQ_NAMESPACE_BEGIN
void AwaitPullCallback::onSuccess(const PullResult& pull_result) noexcept {
absl::MutexLock lk(&mtx_);
completed_ = true;
// TODO: optimize out messages copy here.
pull_result_ = pull_result;
cv_.SignalAll();
}
void AwaitPullCallback::onFailure(const std::error_code& ec) noexcept {
absl::MutexLock lk(&mtx_);
completed_ = true;
ec_ = ec;
cv_.SignalAll();
}
bool AwaitPullCallback::await() {
{
absl::MutexLock lk(&mtx_);
while (!completed_) {
cv_.Wait(&mtx_);
}
return !hasFailure();
}
}
ROCKETMQ_NAMESPACE_END