mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-07 22:20:24 +00:00
Optimize package encoding/decoding a bit by reusing codec handle.
This commit is contained in:
@@ -12,12 +12,14 @@ import (
|
|||||||
type PackageCollection struct {
|
type PackageCollection struct {
|
||||||
db database.Storage
|
db database.Storage
|
||||||
encodeBuffer bytes.Buffer
|
encodeBuffer bytes.Buffer
|
||||||
|
codecHandle *codec.MsgpackHandle
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPackageCollection creates new PackageCollection and binds it to database
|
// NewPackageCollection creates new PackageCollection and binds it to database
|
||||||
func NewPackageCollection(db database.Storage) *PackageCollection {
|
func NewPackageCollection(db database.Storage) *PackageCollection {
|
||||||
return &PackageCollection{
|
return &PackageCollection{
|
||||||
db: db,
|
db: db,
|
||||||
|
codecHandle: &codec.MsgpackHandle{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +55,7 @@ func (collection *PackageCollection) ByKey(key []byte) (*Package, error) {
|
|||||||
if len(encoded) > 2 && (encoded[0] != 0xc1 || encoded[1] != 0x1) {
|
if len(encoded) > 2 && (encoded[0] != 0xc1 || encoded[1] != 0x1) {
|
||||||
oldp := &oldPackage{}
|
oldp := &oldPackage{}
|
||||||
|
|
||||||
decoder := codec.NewDecoderBytes(encoded, &codec.MsgpackHandle{})
|
decoder := codec.NewDecoderBytes(encoded, collection.codecHandle)
|
||||||
err = decoder.Decode(oldp)
|
err = decoder.Decode(oldp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -88,7 +90,7 @@ func (collection *PackageCollection) ByKey(key []byte) (*Package, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
decoder := codec.NewDecoderBytes(encoded[2:], &codec.MsgpackHandle{})
|
decoder := codec.NewDecoderBytes(encoded[2:], collection.codecHandle)
|
||||||
err = decoder.Decode(p)
|
err = decoder.Decode(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -109,7 +111,7 @@ func (collection *PackageCollection) loadExtra(p *Package) *Stanza {
|
|||||||
|
|
||||||
stanza := &Stanza{}
|
stanza := &Stanza{}
|
||||||
|
|
||||||
decoder := codec.NewDecoderBytes(encoded, &codec.MsgpackHandle{})
|
decoder := codec.NewDecoderBytes(encoded, collection.codecHandle)
|
||||||
err = decoder.Decode(stanza)
|
err = decoder.Decode(stanza)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("unable to decode extra")
|
panic("unable to decode extra")
|
||||||
@@ -127,7 +129,7 @@ func (collection *PackageCollection) loadDependencies(p *Package) *PackageDepend
|
|||||||
|
|
||||||
deps := &PackageDependencies{}
|
deps := &PackageDependencies{}
|
||||||
|
|
||||||
decoder := codec.NewDecoderBytes(encoded, &codec.MsgpackHandle{})
|
decoder := codec.NewDecoderBytes(encoded, collection.codecHandle)
|
||||||
err = decoder.Decode(deps)
|
err = decoder.Decode(deps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("unable to decode deps")
|
panic("unable to decode deps")
|
||||||
@@ -145,7 +147,7 @@ func (collection *PackageCollection) loadFiles(p *Package) *PackageFiles {
|
|||||||
|
|
||||||
files := &PackageFiles{}
|
files := &PackageFiles{}
|
||||||
|
|
||||||
decoder := codec.NewDecoderBytes(encoded, &codec.MsgpackHandle{})
|
decoder := codec.NewDecoderBytes(encoded, collection.codecHandle)
|
||||||
err = decoder.Decode(files)
|
err = decoder.Decode(files)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("unable to decode files")
|
panic("unable to decode files")
|
||||||
@@ -156,7 +158,7 @@ func (collection *PackageCollection) loadFiles(p *Package) *PackageFiles {
|
|||||||
|
|
||||||
// Update adds or updates information about package in DB checking for conficts first
|
// Update adds or updates information about package in DB checking for conficts first
|
||||||
func (collection *PackageCollection) Update(p *Package) error {
|
func (collection *PackageCollection) Update(p *Package) error {
|
||||||
encoder := codec.NewEncoder(&collection.encodeBuffer, &codec.MsgpackHandle{})
|
encoder := codec.NewEncoder(&collection.encodeBuffer, collection.codecHandle)
|
||||||
|
|
||||||
collection.encodeBuffer.Reset()
|
collection.encodeBuffer.Reset()
|
||||||
collection.encodeBuffer.WriteByte(0xc1)
|
collection.encodeBuffer.WriteByte(0xc1)
|
||||||
|
|||||||
Reference in New Issue
Block a user