package pgproto3

import (
	
	
	

	
)

const cancelRequestCode = 80877102

type CancelRequest struct {
	ProcessID uint32
	SecretKey uint32
}

// Frontend identifies this message as sendable by a PostgreSQL frontend.
func (*CancelRequest) () {}

func ( *CancelRequest) ( []byte) error {
	if len() != 12 {
		return errors.New("bad cancel request size")
	}

	 := binary.BigEndian.Uint32()

	if  != cancelRequestCode {
		return errors.New("bad cancel request code")
	}

	.ProcessID = binary.BigEndian.Uint32([4:])
	.SecretKey = binary.BigEndian.Uint32([8:])

	return nil
}

// Encode encodes src into dst. dst will include the 4 byte message length.
func ( *CancelRequest) ( []byte) []byte {
	 = pgio.AppendInt32(, 16)
	 = pgio.AppendInt32(, cancelRequestCode)
	 = pgio.AppendUint32(, .ProcessID)
	 = pgio.AppendUint32(, .SecretKey)
	return 
}

// MarshalJSON implements encoding/json.Marshaler.
func ( CancelRequest) () ([]byte, error) {
	return json.Marshal(struct {
		      string
		 uint32
		 uint32
	}{
		:      "CancelRequest",
		: .ProcessID,
		: .SecretKey,
	})
}