Documentation
¶
Overview ¶
Package ttyrec implements TTY recording, compatible with ttyrec(1)
Acknowledgements ¶
This is an implementation of the original ttyrec(1) specification by Satoru Takabayashi, http://0xcc.net/ttyrec/
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ErrIllegalSeek = errors.New("ttyrec: seek to an invalid offset")
ErrIllegalSeek is returned if an illegal seek operation is requested, such as seeking to an out of bounds frame.
var ErrReadSeeker = errors.New("ttyrec: provided Reader does not implement io.ReadSeeker")
ErrReadSeeker is returned if the provided Reader does not provide the io.ReadSeeker interface.
Functions ¶
This section is empty.
Types ¶
type Decoder ¶
type Decoder struct {
// contains filtered or unexported fields
}
Decoder for TTY recordings.
The decoder methods are not concurrency safe.
func NewDecoder ¶
NewDecoder returns a new Decoder for the provided Reader.
Example ¶
package main import ( "os" "time" "github.com/x-qdo/qudosh/packages/ttyrec" ) func main() { f, err := os.Open("ttyrecord") if err != nil { panic(err) } defer f.Close() d := ttyrec.NewDecoder(f) stream, _ := d.DecodeStream() var previous *ttyrec.Frame for frame := range stream { if previous != nil { time.Sleep(frame.Time.Sub(previous.Time)) } os.Stdout.Write(frame.Data) previous = frame } }
Output:
func (*Decoder) DecodeFrame ¶
DecodeFrame decodes a single frame.
func (*Decoder) DecodeStream ¶
DecodeStream returns a stream of frames.
func (*Decoder) SeekToFrame ¶
SeekToFrame seeks to the specified frame offset. Whence can be any of the io.SeekStart (relative to first frame) or io.SeekCurrent (relative to current frame). io.SeekEnd is not supported.
type Encoder ¶
type Encoder struct {
// contains filtered or unexported fields
}
Encoder can write chunks of bytes in a ttyrec format.
func NewEncoder ¶
Example ¶
package main import ( "io" "os" "github.com/x-qdo/qudosh/packages/ttyrec" ) func main() { f, err := os.Create("ttyrecord") if err != nil { panic(err) } defer f.Close() e := ttyrec.NewEncoder(f) io.Copy(e, os.Stdout) }
Output:
type Header ¶
Header for a Frame.