195489c19Sopenharmony_ci/*
295489c19Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
395489c19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
495489c19Sopenharmony_ci * you may not use this file except in compliance with the License.
595489c19Sopenharmony_ci * You may obtain a copy of the License at
695489c19Sopenharmony_ci *
795489c19Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
895489c19Sopenharmony_ci *
995489c19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1095489c19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1195489c19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1295489c19Sopenharmony_ci * See the License for the specific language governing permissions and
1395489c19Sopenharmony_ci * limitations under the License.
1495489c19Sopenharmony_ci */
1595489c19Sopenharmony_ci
1695489c19Sopenharmony_ci/**
1795489c19Sopenharmony_ci * @addtogroup Bluetooth
1895489c19Sopenharmony_ci * @{
1995489c19Sopenharmony_ci *
2095489c19Sopenharmony_ci * @brief Defines a bluetooth system that provides basic blurtooth connection and profile functions,
2195489c19Sopenharmony_ci *        including A2DP, AVRCP, BLE, GATT, HFP, MAP, PBAP, and SPP, etc.
2295489c19Sopenharmony_ci *
2395489c19Sopenharmony_ci * @since 6
2495489c19Sopenharmony_ci */
2595489c19Sopenharmony_ci
2695489c19Sopenharmony_ci/**
2795489c19Sopenharmony_ci * @file bluetooth_socket_outputstream.h
2895489c19Sopenharmony_ci *
2995489c19Sopenharmony_ci * @brief Declares spp inputstream framework functions, including basic functions.
3095489c19Sopenharmony_ci *
3195489c19Sopenharmony_ci * @since 6
3295489c19Sopenharmony_ci */
3395489c19Sopenharmony_ci
3495489c19Sopenharmony_ci#ifndef BLUETOOTH_OUTPUTSTREAM_H
3595489c19Sopenharmony_ci#define BLUETOOTH_OUTPUTSTREAM_H
3695489c19Sopenharmony_ci
3795489c19Sopenharmony_ci#include "bluetooth_def.h"
3895489c19Sopenharmony_ci#include "bluetooth_types.h"
3995489c19Sopenharmony_ci
4095489c19Sopenharmony_cinamespace OHOS {
4195489c19Sopenharmony_cinamespace Bluetooth {
4295489c19Sopenharmony_ci/**
4395489c19Sopenharmony_ci * @brief Class for spp output stream functions.
4495489c19Sopenharmony_ci *
4595489c19Sopenharmony_ci * @since 6
4695489c19Sopenharmony_ci */
4795489c19Sopenharmony_ciclass BLUETOOTH_API OutputStream {
4895489c19Sopenharmony_cipublic:
4995489c19Sopenharmony_ci    /**
5095489c19Sopenharmony_ci     * @brief A constructor used to create an OutputStream instance.
5195489c19Sopenharmony_ci     *
5295489c19Sopenharmony_ci     * @param socketFd Socket fd.
5395489c19Sopenharmony_ci     * @since 6
5495489c19Sopenharmony_ci     */
5595489c19Sopenharmony_ci    explicit OutputStream(int socketFd);
5695489c19Sopenharmony_ci
5795489c19Sopenharmony_ci    /**
5895489c19Sopenharmony_ci     * @brief Destroy the OutputStream object.
5995489c19Sopenharmony_ci     *
6095489c19Sopenharmony_ci     * @since 6
6195489c19Sopenharmony_ci     */
6295489c19Sopenharmony_ci    virtual ~OutputStream();
6395489c19Sopenharmony_ci
6495489c19Sopenharmony_ci    /**
6595489c19Sopenharmony_ci     * @brief Socket write.
6695489c19Sopenharmony_ci     *
6795489c19Sopenharmony_ci     * @param buf Data to be written.
6895489c19Sopenharmony_ci     * @param length The length of data to be written.
6995489c19Sopenharmony_ci     * @return Returns <b> >0 </b> operation succeeded.The return value is length of the written data.
7095489c19Sopenharmony_ci     *         Returns <b> 0 </b> operation succeeded,but the data length is 0.
7195489c19Sopenharmony_ci     *         Returns <b> -1 </b> operation failed.
7295489c19Sopenharmony_ci     * @since 6
7395489c19Sopenharmony_ci     */
7495489c19Sopenharmony_ci    int Write(const uint8_t *buf, size_t length);
7595489c19Sopenharmony_ci
7695489c19Sopenharmony_ciprivate:
7795489c19Sopenharmony_ci    int socketFd_;
7895489c19Sopenharmony_ci    OutputStream() = delete;
7995489c19Sopenharmony_ci};
8095489c19Sopenharmony_ci} // namespace Bluetooth
8195489c19Sopenharmony_ci} // namespace OHOS
8295489c19Sopenharmony_ci#endif  // BLUETOOTH_OUTPUTSTREAM_H