# 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
Concepts
The library consists of 2 main instances:
Listener:
listener, err := file_streamer.NewListener(<file to watch>, <buffer to write data to>)
Streamer:
streamer := file_streamer.New(<logger>)
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.
# Packages
No description provided by the author
# Functions
New creates new instance of file streamer.
NewListener creates initialized Listener ready to be provided to Streamer.StreamTo() function.
StreamRawData hijacks HTTP connection and sends raw file data into a connection buffer.
# Variables
ErrListenerClosed is an error returned when Listener can't be used for streaming because it is already closed.
ErrNotRunning is an error returned when action can't be finished because Streamer service is not running yet Streamer.Start() was not called.
ErrRunning is an error returned when action can't be finished because Streamer service is in running state.