mirror of
https://github.com/bettercap/bettercap
synced 2025-07-06 13:02:12 -07:00
Revert "misc: keeping frames in memory as compressed"
This reverts commit 054d8a5a3e
.
This commit is contained in:
parent
054d8a5a3e
commit
2f53e40f98
1 changed files with 22 additions and 52 deletions
|
@ -15,36 +15,6 @@ import (
|
||||||
"github.com/kr/binarydist"
|
"github.com/kr/binarydist"
|
||||||
)
|
)
|
||||||
|
|
||||||
func compress(data []byte) (error, []byte) {
|
|
||||||
compressed := new(bytes.Buffer)
|
|
||||||
compress := gzip.NewWriter(compressed)
|
|
||||||
|
|
||||||
if _, err := compress.Write(data); err != nil {
|
|
||||||
return err, nil
|
|
||||||
} else if err = compress.Flush(); err != nil {
|
|
||||||
return err, nil
|
|
||||||
} else if err = compress.Close(); err != nil {
|
|
||||||
return err, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, compressed.Bytes()
|
|
||||||
}
|
|
||||||
|
|
||||||
func decompress(data []byte) (error, []byte) {
|
|
||||||
decompress, err := gzip.NewReader(bytes.NewReader(data))
|
|
||||||
if err != nil {
|
|
||||||
return err, nil
|
|
||||||
}
|
|
||||||
defer decompress.Close()
|
|
||||||
|
|
||||||
raw, err := ioutil.ReadAll(decompress)
|
|
||||||
if err != nil {
|
|
||||||
return err, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, raw
|
|
||||||
}
|
|
||||||
|
|
||||||
type patch []byte
|
type patch []byte
|
||||||
type frame []byte
|
type frame []byte
|
||||||
|
|
||||||
|
@ -109,7 +79,7 @@ func (e *RecordEntry) Reset() {
|
||||||
e.CurState = 0
|
e.CurState = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *RecordEntry) Compile() (err error) {
|
func (e *RecordEntry) Compile() error {
|
||||||
e.Lock()
|
e.Lock()
|
||||||
defer e.Unlock()
|
defer e.Unlock()
|
||||||
|
|
||||||
|
@ -120,10 +90,7 @@ func (e *RecordEntry) Compile() (err error) {
|
||||||
e.frames = make([]frame, e.NumStates+1)
|
e.frames = make([]frame, e.NumStates+1)
|
||||||
|
|
||||||
// first is the master frame
|
// first is the master frame
|
||||||
if err, e.frames[0] = compress(e.Data); err != nil {
|
e.frames[0] = frame(e.Data)
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// precompute frames so they can be accessed by index
|
// precompute frames so they can be accessed by index
|
||||||
for i := 0; i < e.NumStates; i++ {
|
for i := 0; i < e.NumStates; i++ {
|
||||||
patch := e.States[i]
|
patch := e.States[i]
|
||||||
|
@ -136,10 +103,7 @@ func (e *RecordEntry) Compile() (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
e.Cur = newWriter.Bytes()
|
e.Cur = newWriter.Bytes()
|
||||||
|
e.frames[i+1] = e.Cur
|
||||||
if err, e.frames[i+1] = compress(e.Cur); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
e.progress(1)
|
e.progress(1)
|
||||||
}
|
}
|
||||||
|
@ -179,15 +143,7 @@ func (e *RecordEntry) Next() []byte {
|
||||||
defer e.Unlock()
|
defer e.Unlock()
|
||||||
cur := e.CurState
|
cur := e.CurState
|
||||||
e.CurState++
|
e.CurState++
|
||||||
|
return e.frames[cur]
|
||||||
zFrame := e.frames[cur]
|
|
||||||
|
|
||||||
err, data := decompress(zFrame)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return data
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// the Record object represents a recorded session
|
// the Record object represents a recorded session
|
||||||
|
@ -231,10 +187,16 @@ func LoadRecord(fileName string, mod *session.SessionModule) (*Record, error) {
|
||||||
return nil, fmt.Errorf("error while reading %s: %s", fileName, err)
|
return nil, fmt.Errorf("error while reading %s: %s", fileName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err, raw := decompress(compressed)
|
decompress, err := gzip.NewReader(bytes.NewReader(compressed))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error while reading gzip file %s: %s", fileName, err)
|
return nil, fmt.Errorf("error while reading gzip file %s: %s", fileName, err)
|
||||||
}
|
}
|
||||||
|
defer decompress.Close()
|
||||||
|
|
||||||
|
raw, err := ioutil.ReadAll(decompress)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error while decompressing %s: %s", fileName, err)
|
||||||
|
}
|
||||||
|
|
||||||
rec := &Record{}
|
rec := &Record{}
|
||||||
|
|
||||||
|
@ -282,12 +244,20 @@ func (r *Record) save() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err, data := compress(buf.Bytes())
|
data := buf.Bytes()
|
||||||
if err != nil {
|
|
||||||
|
compressed := new(bytes.Buffer)
|
||||||
|
compress := gzip.NewWriter(compressed)
|
||||||
|
|
||||||
|
if _, err := compress.Write(data); err != nil {
|
||||||
|
return err
|
||||||
|
} else if err = compress.Flush(); err != nil {
|
||||||
|
return err
|
||||||
|
} else if err = compress.Close(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return ioutil.WriteFile(r.fileName, data, os.ModePerm)
|
return ioutil.WriteFile(r.fileName, compressed.Bytes(), os.ModePerm)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Record) Flush() error {
|
func (r *Record) Flush() error {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue