package pgproto3
import (
"bytes"
"encoding/binary"
"encoding/json"
"github.com/jackc/pgx/v5/internal/pgio"
)
type ParameterDescription struct {
ParameterOIDs []uint32
}
func (*ParameterDescription ) Backend () {}
func (dst *ParameterDescription ) Decode (src []byte ) error {
buf := bytes .NewBuffer (src )
if buf .Len () < 2 {
return &invalidMessageFormatErr {messageType : "ParameterDescription" }
}
buf .Next (2 )
parameterCount := buf .Len () / 4
*dst = ParameterDescription {ParameterOIDs : make ([]uint32 , parameterCount )}
for i := 0 ; i < parameterCount ; i ++ {
dst .ParameterOIDs [i ] = binary .BigEndian .Uint32 (buf .Next (4 ))
}
return nil
}
func (src *ParameterDescription ) Encode (dst []byte ) []byte {
dst = append (dst , 't' )
sp := len (dst )
dst = pgio .AppendInt32 (dst , -1 )
dst = pgio .AppendUint16 (dst , uint16 (len (src .ParameterOIDs )))
for _ , oid := range src .ParameterOIDs {
dst = pgio .AppendUint32 (dst , oid )
}
pgio .SetInt32 (dst [sp :], int32 (len (dst [sp :])))
return dst
}
func (src ParameterDescription ) MarshalJSON () ([]byte , error ) {
return json .Marshal (struct {
Type string
ParameterOIDs []uint32
}{
Type : "ParameterDescription" ,
ParameterOIDs : src .ParameterOIDs ,
})
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .