Line data Source code
1 : /** 2 : * 3 : * Copyright (c) 2020 Project CHIP Authors 4 : * Copyright (c) 2018 Google LLC. 5 : * Copyright (c) 2016-2017 Nest Labs, Inc. 6 : * Licensed under the Apache License, Version 2.0 (the "License"); 7 : * you may not use this file except in compliance with the License. 8 : * You may obtain a copy of the License at 9 : * 10 : * http://www.apache.org/licenses/LICENSE-2.0 11 : * 12 : * Unless required by applicable law or agreed to in writing, software 13 : * distributed under the License is distributed on an "AS IS" BASIS, 14 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 : * See the License for the specific language governing permissions and 16 : * limitations under the License. 17 : */ 18 : /** 19 : * @file 20 : * This file defines builder in CHIP interaction model 21 : * 22 : */ 23 : 24 : #include "Builder.h" 25 : 26 : #include <inttypes.h> 27 : #include <stdarg.h> 28 : #include <stdio.h> 29 : 30 : using namespace chip; 31 : using namespace chip::TLV; 32 : 33 : namespace chip { 34 : namespace app { 35 52396 : Builder::Builder() : mError(CHIP_ERROR_INCORRECT_STATE), mpWriter(nullptr), mOuterContainerType(chip::TLV::kTLVType_NotSpecified) {} 36 : 37 0 : void Builder::Init(chip::TLV::TLVWriter * const apWriter, chip::TLV::TLVType aOuterContainerType) 38 : { 39 0 : mpWriter = apWriter; 40 0 : mOuterContainerType = aOuterContainerType; 41 0 : } 42 : 43 4589 : void Builder::ResetError() 44 : { 45 4589 : ResetError(CHIP_NO_ERROR); 46 4589 : } 47 : 48 4589 : void Builder::ResetError(CHIP_ERROR aErr) 49 : { 50 4589 : mError = aErr; 51 4589 : } 52 : 53 49776 : void Builder::EndOfContainer() 54 : { 55 : // skip if error has already been set 56 49776 : ReturnOnFailure(mError); 57 49432 : ReturnOnFailure(mError = mpWriter->EndContainer(mOuterContainerType)); 58 : // we've just closed properly 59 : // mark it so we do not panic when the build object destructor is called 60 49410 : mOuterContainerType = chip::TLV::kTLVType_NotSpecified; 61 : } 62 : } // namespace app 63 : } // namespace chip