1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
12 namespace InferenceEngine {
13 struct DescriptionBuffer : public std::basic_streambuf<char, std::char_traits<char> > {
14 std::unique_ptr<std::ostream> stream;
15 StatusCode err = GENERAL_ERROR;
17 DescriptionBuffer(StatusCode err, ResponseDesc *desc)
22 explicit DescriptionBuffer(StatusCode err)
26 explicit DescriptionBuffer(ResponseDesc *desc) {
30 DescriptionBuffer(char *pBuffer, size_t len) {
34 DescriptionBuffer(StatusCode err, char *pBuffer, size_t len)
41 DescriptionBuffer &operator<<(const T &obj) {
44 (*stream.get()) << obj;
49 operator StatusCode() const {
56 void init(ResponseDesc *desc) {
59 init(desc->msg, sizeof(desc->msg) / sizeof(desc->msg[0]));
62 void init(char *ptr, size_t len) {
63 if (nullptr != ptr && len > 0) {
64 // set the "put" pointer the start of the buffer and record it's length.
65 setp(ptr, ptr + len - 1);
67 stream.reset(new std::ostream(this));
69 if (nullptr != ptr && len > 0) {
71 (*stream.get()) << ptr;
75 } // namespace InferenceEngine