mirror of
https://github.com/jackc/pgx.git
synced 2025-04-27 13:14:32 +00:00
Altered chunkreader to never reuse memory. Altered pgproto3 to to copy memory when decoding. Renamed UnmarshalBinary to Decode because of changed semantics.
42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package pgproto3
|
|
|
|
import "fmt"
|
|
|
|
// Message is the interface implemented by an object that can decode and encode
|
|
// a particular PostgreSQL message.
|
|
//
|
|
// Decode is allowed and expected to retain a reference to data after
|
|
// returning (unlike encoding.BinaryUnmarshaler).
|
|
type Message interface {
|
|
Decode(data []byte) error
|
|
MarshalBinary() (data []byte, err error)
|
|
}
|
|
|
|
type FrontendMessage interface {
|
|
Message
|
|
Frontend() // no-op method to distinguish frontend from backend methods
|
|
}
|
|
|
|
type BackendMessage interface {
|
|
Message
|
|
Backend() // no-op method to distinguish frontend from backend methods
|
|
}
|
|
|
|
type invalidMessageLenErr struct {
|
|
messageType string
|
|
expectedLen int
|
|
actualLen int
|
|
}
|
|
|
|
func (e *invalidMessageLenErr) Error() string {
|
|
return fmt.Sprintf("%s body must have length of %d, but it is %d", e.messageType, e.expectedLen, e.actualLen)
|
|
}
|
|
|
|
type invalidMessageFormatErr struct {
|
|
messageType string
|
|
}
|
|
|
|
func (e *invalidMessageFormatErr) Error() string {
|
|
return fmt.Sprintf("%s body is invalid", e.messageType)
|
|
}
|