|
- /**
- * Copyright 2019-2020 Huawei Technologies Co., Ltd
- *
- * 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.
- */
-
- #ifndef MSPROF_ENGINE_PROF_REPORTER_H_
- #define MSPROF_ENGINE_PROF_REPORTER_H_
- #define MSVP_PROF_API __attribute__((visibility("default")))
-
- /**
- * @file prof_reporter.h
- * @defgroup reporter the reporter group
- * This is the reporter group
- */
- namespace Msprof {
- namespace Engine {
- /// the max tag length
- #define MSPROF_ENGINE_MAX_TAG_LEN (31)
- /**
- * @ingroup reporter
- * @brief struct ReporterData
- * the sturct of the data send to libmsprof
- */
- struct ReporterData {
- char tag[MSPROF_ENGINE_MAX_TAG_LEN + 1]; ///< the sub-type of the module, data with different tag will be writen
- int deviceId; ///< the physical id of device
- size_t dataLen; ///< the length of send data
- unsigned char *data; ///< the data content
- };
-
- /**
- * @ingroup reporter
- * @brief class Reporter
- * the Reporter class .used to send data to profiling
- */
- class MSVP_PROF_API Reporter {
- public:
- virtual ~Reporter() {}
-
- public:
- /**
- * @ingroup reporter
- * @name : Report
- * @brief : API of libmsprof, report data to libmsprof, it's a non-blocking function \n
- The data will be firstly appended to cache, if the cache is full, data will be ignored
- * @param data [IN] const ReporterData * the data send to libmsporf
- * @retval PROFILING_SUCCESS 0 (success)
- * @retval PROFILING_FAILED -1 (failed)
- *
- * @par depend:
- * @li libmsprof
- * @li prof_reporter.h
- * @since c60
- * @see Flush
- */
- virtual int Report(const ReporterData *data) = 0;
-
- /**
- * @ingroup reporter
- * @name : Flush
- * @brief : API of libmsprof, notify libmsprof send data over, it's a blocking function \n
- The all datas of cache will be write to file or send to host
- * @retval PROFILING_SUCCESS 0 (success)
- * @retval PROFILING_FAILED -1 (failed)
- *
- * @par depend:
- * @li libmsprof
- * @li prof_reporter.h
- * @since c60
- * @see ProfMgrStop
- */
- virtual int Flush() = 0;
- };
-
- } // namespace Engine
- } // namespace Msprof
-
- #endif // MSPROF_ENGINE_PROF_REPORTER_H_
|