https://github.com/badoo/file-streamer
Streams given file data into any buffered writer. Uses fsnotify system for new data detection in files.
https://github.com/badoo/file-streamer
Last synced: 4 days ago
JSON representation
Streams given file data into any buffered writer. Uses fsnotify system for new data detection in files.
- Host: GitHub
- URL: https://github.com/badoo/file-streamer
- Owner: badoo
- License: mit
- Created: 2017-11-13T16:50:51.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-11-15T13:48:49.000Z (over 8 years ago)
- Last Synced: 2025-08-14T21:12:48.332Z (10 months ago)
- Language: Go
- Size: 18.6 KB
- Stars: 2
- Watchers: 7
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FileStreamer
Streams given file data into any buffered writer. Uses fsNotify for new data detection in files.
The most fresh documentation can be found on [GoDoc](https://godoc.org/github.com/badoo/file-streamer)
# Concepts
The library consists of 2 main instances:
Listener:
```
listener, err := file_streamer.NewListener(, )
```
Streamer:
```
streamer := file_streamer.New()
err := streamer.Start()
```
Streamer is a heart of package. In most cases you don't need to create more than one Streamer in your application.
Listener represents a Streamer 'subscription' for data streaming,
it binds file to be streamed and buffered writer to be used as a file data receiver.
### Examples
The minimal working example (and most trivial I can imagine) is:
```
package main
import (
"bufio"
"github.com/badoo/file-streamer"
"io/ioutil"
"log"
"os"
)
func main() {
nullLogger := log.New(ioutil.Discard, "", 0)
streamer := file_streamer.New(nullLogger)
err := streamer.Start()
if err != nil {
log.Fatalln(err)
}
targetFile := os.Args[1]
readFrom, err := os.Open(targetFile)
if err != nil {
log.Fatalln(err)
}
logTo := bufio.NewWriter(os.Stdout)
listener := file_streamer.NewListener(readFrom, logTo)
streamer.StreamTo(listener, 0)
}
```
It provides similar functionality to GNU `tail -f` command, but with streaming
start from the beginning of the file.
You can find more examples in 'examples/' directory of the package.