glog/file.go

55 lines
714 B
Go
Raw Permalink Normal View History

2023-02-10 15:42:45 +08:00
package glog
import (
2024-01-24 00:30:04 +08:00
"os"
"sync"
2023-02-10 15:42:45 +08:00
)
2024-01-25 02:08:04 +08:00
type Paper struct {
2024-01-24 00:30:04 +08:00
file *os.File
sync.Mutex
2023-02-10 15:42:45 +08:00
}
2024-01-25 02:08:04 +08:00
func NewPaperFromFile(file *os.File) *Paper {
return &Paper{
file: file,
Mutex: sync.Mutex{},
}
}
func (f *Paper) SetFile(file *os.File) {
f.Lock()
defer f.Unlock()
if f.file != nil {
_ = f.file.Close()
}
if file != nil {
f.file = file
}
}
func (f *Paper) WriteString(s string) {
f.Lock()
defer f.Unlock()
if f.file != nil {
_, _ = f.file.WriteString(s)
}
}
func (f *Paper) Ready() bool {
f.Lock()
defer f.Unlock()
return f.file != nil
}
func (f *Paper) Close() error {
2024-01-24 00:30:04 +08:00
f.Lock()
defer f.Unlock()
2024-01-25 02:08:04 +08:00
var err error = nil
if f.file != nil {
err = f.file.Close()
f.file = nil
}
return err
2023-02-10 15:42:45 +08:00
}