// // // Copyright 2015 gRPC authors. // // Licensed 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 #include #include #include namespace grpc { AuthPropertyIterator::AuthPropertyIterator() : property_(nullptr), ctx_(nullptr), index_(0), name_(nullptr) {} AuthPropertyIterator::AuthPropertyIterator( const grpc_auth_property* property, const grpc_auth_property_iterator* iter) : property_(property), ctx_(iter->ctx), index_(iter->index), name_(iter->name) {} AuthPropertyIterator::~AuthPropertyIterator() {} AuthPropertyIterator& AuthPropertyIterator::operator++() { grpc_auth_property_iterator iter = {ctx_, index_, name_}; property_ = grpc_auth_property_iterator_next(&iter); ctx_ = iter.ctx; index_ = iter.index; name_ = iter.name; return *this; } AuthPropertyIterator AuthPropertyIterator::operator++(int) { AuthPropertyIterator tmp(*this); operator++(); return tmp; } bool AuthPropertyIterator::operator==(const AuthPropertyIterator& rhs) const { if (property_ == nullptr || rhs.property_ == nullptr) { return property_ == rhs.property_; } else { return index_ == rhs.index_; } } bool AuthPropertyIterator::operator!=(const AuthPropertyIterator& rhs) const { return !operator==(rhs); } AuthProperty AuthPropertyIterator::operator*() { return std::pair( property_->name, grpc::string_ref(property_->value, property_->value_length)); } } // namespace grpc