55 lines
714 B
Go
55 lines
714 B
Go
package glog
|
|
|
|
import (
|
|
"os"
|
|
"sync"
|
|
)
|
|
|
|
type Paper struct {
|
|
file *os.File
|
|
sync.Mutex
|
|
}
|
|
|
|
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 {
|
|
f.Lock()
|
|
defer f.Unlock()
|
|
var err error = nil
|
|
if f.file != nil {
|
|
err = f.file.Close()
|
|
f.file = nil
|
|
}
|
|
return err
|
|
}
|