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 55364 : 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 4658 : void Builder::ResetError()
44 : {
45 4658 : ResetError(CHIP_NO_ERROR);
46 4658 : }
47 :
48 4658 : void Builder::ResetError(CHIP_ERROR aErr)
49 : {
50 4658 : mError = aErr;
51 4658 : }
52 :
53 57212 : void Builder::EndOfContainer()
54 : {
55 : // skip if error has already been set
56 57212 : ReturnOnFailure(mError);
57 56867 : 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 56844 : mOuterContainerType = chip::TLV::kTLVType_NotSpecified;
61 : }
62 : } // namespace app
63 : } // namespace chip
|