e5b2ffe5904910f232ad1404d935996539c3b172
[folly.git] / folly / experimental / logging / LogWriter.h
1 /*
2  * Copyright 2004-present Facebook, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #pragma once
17
18 #include <folly/Range.h>
19
20 namespace folly {
21
22 /**
23  * LogWriter defines the interface for processing a serialized log message.
24  */
25 class LogWriter {
26  public:
27   virtual ~LogWriter() {}
28
29   /**
30    * Write a serialized log message.
31    */
32   virtual void writeMessage(folly::StringPiece buffer) = 0;
33
34   /**
35    * Write a serialized message.
36    *
37    * This version of writeMessage() accepts a std::string&&.
38    * The default implementation calls the StringPiece version of
39    * writeMessage(), but subclasses may override this implementation if
40    * desired.
41    */
42   virtual void writeMessage(std::string&& buffer) {
43     writeMessage(folly::StringPiece{buffer});
44   }
45 };
46 }