Categorygithub.com/badoo/file-streamer
modulepackage
0.0.1
Repository: https://github.com/badoo/file-streamer.git
Documentation: pkg.go.dev

# 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.

# Structs

Listener is used for making Streamer to stream data from specific sile to specific buffered writer.
Streamer is a main package instance that provides streaming service to all Listeners.