1
0
Fork 0
mirror of https://github.com/Luzifer/duplicity-backup.git synced 2024-11-08 07:00:09 +00:00
duplicity-backup/bufferedLineWriter.go

35 lines
614 B
Go
Raw Normal View History

2016-05-23 11:19:25 +00:00
package main
import "strings"
type messageChanWriter struct {
msgChan chan string
buffer []byte
}
func newMessageChanWriter(outputChannel chan string) *messageChanWriter {
2016-05-23 11:19:25 +00:00
return &messageChanWriter{
msgChan: outputChannel,
buffer: []byte{},
}
}
func (m *messageChanWriter) Write(p []byte) (int, error) {
var (
n = len(p)
err error
)
2016-05-23 11:19:25 +00:00
m.buffer = append(m.buffer, p...)
if strings.Contains(string(m.buffer), "\n") {
lines := strings.Split(string(m.buffer), "\n")
for _, l := range lines[:len(lines)-1] {
m.msgChan <- l
}
m.buffer = []byte(lines[len(lines)-1])
}
return n, err
2016-05-23 11:19:25 +00:00
}