233 int fd() const { return _fd; } |
233 int fd() const { return _fd; } |
234 virtual void write(const char* c, size_t len); |
234 virtual void write(const char* c, size_t len); |
235 void flush() {}; |
235 void flush() {}; |
236 }; |
236 }; |
237 |
237 |
|
238 class Mutex; |
238 class gcLogFileStream : public fileStream { |
239 class gcLogFileStream : public fileStream { |
239 protected: |
240 protected: |
240 const char* _file_name; |
241 const char* _file_name; |
241 jlong _bytes_written; |
242 jlong _bytes_written; |
242 uintx _cur_file_num; // current logfile rotation number, from 0 to NumberOfGCLogFiles-1 |
243 uintx _cur_file_num; // current logfile rotation number, from 0 to NumberOfGCLogFiles-1 |
|
244 private: |
|
245 Mutex* _file_lock; |
|
246 void rotate_log_impl(bool force, outputStream* out); |
243 public: |
247 public: |
244 gcLogFileStream(const char* file_name); |
248 gcLogFileStream(const char* file_name); |
245 ~gcLogFileStream(); |
249 ~gcLogFileStream(); |
246 virtual void write(const char* c, size_t len); |
250 virtual void write(const char* c, size_t len); |
247 virtual void rotate_log(bool force, outputStream* out = NULL); |
251 virtual void rotate_log(bool force, outputStream* out = NULL); |