Source File
backend.go
Belonging Package
github.com/jackc/pgproto3/v2
package pgproto3
import (
)
bind Bind
cancelRequest CancelRequest
_close Close
copyFail CopyFail
describe Describe
execute Execute
flush Flush
gssEncRequest GSSEncRequest
parse Parse
passwordMessage PasswordMessage
query Query
sslRequest SSLRequest
startupMessage StartupMessage
sync Sync
terminate Terminate
bodyLen int
msgType byte
partialMsg bool
}
func ( *Backend) () (FrontendMessage, error) {
, := .cr.Next(4)
if != nil {
return nil,
}
:= int(binary.BigEndian.Uint32() - 4)
, = .cr.Next()
if != nil {
return nil,
}
:= binary.BigEndian.Uint32()
switch {
case ProtocolVersionNumber:
= .startupMessage.Decode()
if != nil {
return nil,
}
return &.startupMessage, nil
case sslRequestNumber:
= .sslRequest.Decode()
if != nil {
return nil,
}
return &.sslRequest, nil
case cancelRequestCode:
= .cancelRequest.Decode()
if != nil {
return nil,
}
return &.cancelRequest, nil
case gssEncReqNumber:
= .gssEncRequest.Decode()
if != nil {
return nil,
}
return &.gssEncRequest, nil
default:
return nil, fmt.Errorf("unknown startup message code: %d", )
}
}
func ( *Backend) () (FrontendMessage, error) {
if !.partialMsg {
, := .cr.Next(5)
if != nil {
return nil,
}
.msgType = [0]
.bodyLen = int(binary.BigEndian.Uint32([1:])) - 4
.partialMsg = true
}
var FrontendMessage
switch .msgType {
case 'B':
= &.bind
case 'C':
= &._close
case 'D':
= &.describe
case 'E':
= &.execute
case 'f':
= &.copyFail
case 'H':
= &.flush
case 'P':
= &.parse
case 'p':
= &.passwordMessage
case 'Q':
= &.query
case 'S':
= &.sync
case 'X':
= &.terminate
default:
return nil, fmt.Errorf("unknown message type: %c", .msgType)
}
, := .cr.Next(.bodyLen)
if != nil {
return nil,
}
.partialMsg = false
= .Decode()
return ,
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin 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. |