1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #ifndef _LOG4CXX_HELPERS_OUTPUTSTREAM_H 19 #define _LOG4CXX_HELPERS_OUTPUTSTREAM_H 20 21 #include <log4cxx/helpers/objectimpl.h> 22 #ifdef LOG4CXX_MULTI_PROCESS 23 #include <apr_file_io.h> 24 #endif 25 26 namespace log4cxx 27 { 28 29 namespace helpers 30 { 31 class ByteBuffer; 32 33 /** 34 * Abstract class for writing to character streams. 35 */ 36 class LOG4CXX_EXPORT OutputStream : public ObjectImpl 37 { 38 public: 39 DECLARE_ABSTRACT_LOG4CXX_OBJECT(OutputStream) 40 BEGIN_LOG4CXX_CAST_MAP() 41 LOG4CXX_CAST_ENTRY(OutputStream) 42 END_LOG4CXX_CAST_MAP() 43 44 protected: 45 OutputStream(); 46 virtual ~OutputStream(); 47 48 public: 49 virtual void close(Pool& p) = 0; 50 virtual void flush(Pool& p) = 0; 51 virtual void write(ByteBuffer& buf, Pool& p) = 0; 52 #ifdef LOG4CXX_MULTI_PROCESS 53 virtual apr_file_t* getFilePtr(); 54 virtual OutputStream& getFileOutPutStreamPtr(); 55 #endif 56 57 private: 58 OutputStream(const OutputStream&); 59 OutputStream& operator=(const OutputStream&); 60 }; 61 62 LOG4CXX_PTR_DEF(OutputStream); 63 } // namespace helpers 64 65 } //namespace log4cxx 66 67 #endif //_LOG4CXX_HELPERS_OUTPUTSTREAM_H 68