LCOV - code coverage report
Current view: top level - app/MessageDef - Builder.h (source / functions) Hit Total Coverage
Test: lcov_final.info Lines: 7 7 100.0 %
Date: 2024-02-15 08:20:41 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /**
       2             :  *
       3             :  *    Copyright (c) 2020 Project CHIP Authors
       4             :  *    Copyright (c) 2016-2017 Nest Labs, Inc.
       5             :  *
       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             : #pragma once
      25             : 
      26             : #include <app/util/basic-types.h>
      27             : #include <lib/core/CHIPCore.h>
      28             : #include <lib/core/TLV.h>
      29             : #include <lib/support/CodeUtils.h>
      30             : #include <lib/support/logging/CHIPLogging.h>
      31             : 
      32             : namespace chip {
      33             : namespace app {
      34             : class Builder
      35             : {
      36             : public:
      37             :     /**
      38             :      *  @brief Initialize the Builder object with TLVWriter and ContainerType
      39             :      *
      40             :      *  @param [in] apWriter A pointer to a TLVWriter
      41             :      *  @param [in] aOuterContainerType outer container type
      42             :      *
      43             :      */
      44             :     void Init(chip::TLV::TLVWriter * const apWriter, chip::TLV::TLVType aOuterContainerType);
      45             : 
      46             :     /**
      47             :      *  @brief Reset the Error
      48             :      *
      49             :      */
      50             :     void ResetError();
      51             : 
      52             :     /**
      53             :      *  @brief Reset the Error with particular aErr.
      54             :      *  @param [in] aErr the Error it would be reset with
      55             :      *
      56             :      */
      57             :     void ResetError(CHIP_ERROR aErr);
      58             : 
      59             :     /**
      60             :      *  @brief Get current error
      61             :      *
      62             :      *  @return #CHIP_NO_ERROR on success
      63             :      */
      64       87250 :     CHIP_ERROR GetError() const { return mError; };
      65             : 
      66             :     /**
      67             :      *  @brief Get TLV Writer
      68             :      *
      69             :      *  @return #Pointer to the TLVWriter
      70             :      */
      71       28069 :     chip::TLV::TLVWriter * GetWriter() { return mpWriter; };
      72             : 
      73             :     /**
      74             :      * Checkpoint the current tlv state into a TLVWriter
      75             :      *
      76             :      * @param[out] aPoint A writer to checkpoint the state of the TLV writer into.
      77             :      *                    This writer must not outlive the builder
      78             :      */
      79       14381 :     void Checkpoint(chip::TLV::TLVWriter & aPoint) { aPoint = *mpWriter; };
      80             : 
      81             :     /**
      82             :      * Rollback the request state to the checkpointed TLVWriter
      83             :      *
      84             :      * @param[in] aPoint A writer that captured the state via Checkpoint() at some point in the past
      85             :      */
      86        3487 :     void Rollback(const chip::TLV::TLVWriter & aPoint)
      87             :     {
      88        3487 :         *mpWriter = aPoint;
      89        3487 :         ResetError();
      90        3487 :     }
      91             : 
      92             :     void EndOfContainer();
      93             : 
      94             :     Builder(Builder &) = delete;
      95             : 
      96             : protected:
      97             :     CHIP_ERROR mError;
      98             :     chip::TLV::TLVWriter * mpWriter;
      99             :     chip::TLV::TLVType mOuterContainerType;
     100             : 
     101             :     Builder();
     102             :     CHIP_ERROR InitAnonymousStructure(chip::TLV::TLVWriter * const apWriter);
     103             : };
     104             : } // namespace app
     105             : } // namespace chip

Generated by: LCOV version 1.14