haven/nexgb/auto_record.go

1090 lines
24 KiB
Go
Raw Normal View History

package xgb
/*
This file was generated by record.xml on May 7 2012 9:17:57pm EDT.
This file is automatically generated. Edit at your peril!
*/
2012-05-07 07:00:45 +02:00
// RecordInit must be called before using the RECORD extension.
func (c *Conn) RecordInit() error {
reply, err := c.QueryExtension(6, "RECORD").Reply()
switch {
case err != nil:
return err
case !reply.Present:
return errorf("No extension named RECORD could be found on on the server.")
2012-05-07 07:00:45 +02:00
}
c.extLock.Lock()
c.extensions["RECORD"] = reply.MajorOpcode
for evNum, fun := range newExtEventFuncs["RECORD"] {
newEventFuncs[int(reply.FirstEvent)+evNum] = fun
}
for errNum, fun := range newExtErrorFuncs["RECORD"] {
newErrorFuncs[int(reply.FirstError)+errNum] = fun
}
2012-05-07 07:00:45 +02:00
c.extLock.Unlock()
return nil
}
func init() {
newExtEventFuncs["RECORD"] = make(map[int]newEventFun)
newExtErrorFuncs["RECORD"] = make(map[int]newErrorFun)
2012-05-07 07:00:45 +02:00
}
// Skipping definition for base type 'Card8'
// Skipping definition for base type 'Int16'
// Skipping definition for base type 'Int32'
// Skipping definition for base type 'Void'
// Skipping definition for base type 'Byte'
2012-05-07 07:00:45 +02:00
// Skipping definition for base type 'Int8'
// Skipping definition for base type 'Card16'
// Skipping definition for base type 'Char'
// Skipping definition for base type 'Card32'
// Skipping definition for base type 'Double'
// Skipping definition for base type 'Bool'
// Skipping definition for base type 'Float'
// Skipping definition for base type 'Id'
const (
RecordHTypeFromServerTime = 1
RecordHTypeFromClientTime = 2
RecordHTypeFromClientSequence = 4
)
const (
RecordCsCurrentClients = 1
RecordCsFutureClients = 2
RecordCsAllClients = 3
)
// Skipping resource definition of 'Context'
type RecordElementHeader byte
type RecordClientSpec uint32
// 'RecordRange8' struct definition
// Size: 2
type RecordRange8 struct {
First byte
Last byte
}
// Struct read RecordRange8
func ReadRecordRange8(buf []byte, v *RecordRange8) int {
b := 0
v.First = buf[b]
b += 1
v.Last = buf[b]
b += 1
return b
}
// Struct list read RecordRange8
func ReadRecordRange8List(buf []byte, dest []RecordRange8) int {
b := 0
for i := 0; i < len(dest); i++ {
dest[i] = RecordRange8{}
b += ReadRecordRange8(buf[b:], &dest[i])
}
return pad(b)
}
// Struct write RecordRange8
func (v RecordRange8) Bytes() []byte {
buf := make([]byte, 2)
b := 0
buf[b] = v.First
b += 1
buf[b] = v.Last
b += 1
return buf
}
// Write struct list RecordRange8
func RecordRange8ListBytes(buf []byte, list []RecordRange8) int {
b := 0
var structBytes []byte
for _, item := range list {
structBytes = item.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
return b
}
// 'RecordRange16' struct definition
// Size: 4
type RecordRange16 struct {
First uint16
Last uint16
}
// Struct read RecordRange16
func ReadRecordRange16(buf []byte, v *RecordRange16) int {
b := 0
v.First = Get16(buf[b:])
b += 2
v.Last = Get16(buf[b:])
b += 2
return b
}
// Struct list read RecordRange16
func ReadRecordRange16List(buf []byte, dest []RecordRange16) int {
b := 0
for i := 0; i < len(dest); i++ {
dest[i] = RecordRange16{}
b += ReadRecordRange16(buf[b:], &dest[i])
}
return pad(b)
}
// Struct write RecordRange16
func (v RecordRange16) Bytes() []byte {
buf := make([]byte, 4)
b := 0
Put16(buf[b:], v.First)
b += 2
Put16(buf[b:], v.Last)
b += 2
return buf
}
// Write struct list RecordRange16
func RecordRange16ListBytes(buf []byte, list []RecordRange16) int {
b := 0
var structBytes []byte
for _, item := range list {
structBytes = item.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
return b
}
// 'RecordExtRange' struct definition
// Size: 6
type RecordExtRange struct {
Major RecordRange8
Minor RecordRange16
}
// Struct read RecordExtRange
func ReadRecordExtRange(buf []byte, v *RecordExtRange) int {
b := 0
v.Major = RecordRange8{}
b += ReadRecordRange8(buf[b:], &v.Major)
v.Minor = RecordRange16{}
b += ReadRecordRange16(buf[b:], &v.Minor)
return b
}
// Struct list read RecordExtRange
func ReadRecordExtRangeList(buf []byte, dest []RecordExtRange) int {
b := 0
for i := 0; i < len(dest); i++ {
dest[i] = RecordExtRange{}
b += ReadRecordExtRange(buf[b:], &dest[i])
}
return pad(b)
}
// Struct write RecordExtRange
func (v RecordExtRange) Bytes() []byte {
buf := make([]byte, 6)
b := 0
{
structBytes := v.Major.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.Minor.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
return buf
}
// Write struct list RecordExtRange
func RecordExtRangeListBytes(buf []byte, list []RecordExtRange) int {
b := 0
var structBytes []byte
for _, item := range list {
structBytes = item.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
return b
}
// 'RecordRange' struct definition
// Size: 24
type RecordRange struct {
CoreRequests RecordRange8
CoreReplies RecordRange8
ExtRequests RecordExtRange
ExtReplies RecordExtRange
DeliveredEvents RecordRange8
DeviceEvents RecordRange8
Errors RecordRange8
ClientStarted bool
ClientDied bool
}
// Struct read RecordRange
func ReadRecordRange(buf []byte, v *RecordRange) int {
b := 0
v.CoreRequests = RecordRange8{}
b += ReadRecordRange8(buf[b:], &v.CoreRequests)
v.CoreReplies = RecordRange8{}
b += ReadRecordRange8(buf[b:], &v.CoreReplies)
v.ExtRequests = RecordExtRange{}
b += ReadRecordExtRange(buf[b:], &v.ExtRequests)
v.ExtReplies = RecordExtRange{}
b += ReadRecordExtRange(buf[b:], &v.ExtReplies)
v.DeliveredEvents = RecordRange8{}
b += ReadRecordRange8(buf[b:], &v.DeliveredEvents)
v.DeviceEvents = RecordRange8{}
b += ReadRecordRange8(buf[b:], &v.DeviceEvents)
v.Errors = RecordRange8{}
b += ReadRecordRange8(buf[b:], &v.Errors)
if buf[b] == 1 {
v.ClientStarted = true
} else {
v.ClientStarted = false
}
b += 1
if buf[b] == 1 {
v.ClientDied = true
} else {
v.ClientDied = false
}
b += 1
return b
}
// Struct list read RecordRange
func ReadRecordRangeList(buf []byte, dest []RecordRange) int {
b := 0
for i := 0; i < len(dest); i++ {
dest[i] = RecordRange{}
b += ReadRecordRange(buf[b:], &dest[i])
}
return pad(b)
}
// Struct write RecordRange
func (v RecordRange) Bytes() []byte {
buf := make([]byte, 24)
b := 0
{
structBytes := v.CoreRequests.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.CoreReplies.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.ExtRequests.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.ExtReplies.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.DeliveredEvents.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.DeviceEvents.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
{
structBytes := v.Errors.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
if v.ClientStarted {
buf[b] = 1
} else {
buf[b] = 0
}
b += 1
if v.ClientDied {
buf[b] = 1
} else {
buf[b] = 0
}
b += 1
return buf
}
// Write struct list RecordRange
func RecordRangeListBytes(buf []byte, list []RecordRange) int {
b := 0
var structBytes []byte
for _, item := range list {
structBytes = item.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
return b
}
// 'RecordClientInfo' struct definition
// Size: (8 + pad((int(NumRanges) * 24)))
type RecordClientInfo struct {
ClientResource RecordClientSpec
NumRanges uint32
Ranges []RecordRange // size: pad((int(NumRanges) * 24))
}
// Struct read RecordClientInfo
func ReadRecordClientInfo(buf []byte, v *RecordClientInfo) int {
b := 0
v.ClientResource = RecordClientSpec(Get32(buf[b:]))
b += 4
v.NumRanges = Get32(buf[b:])
b += 4
v.Ranges = make([]RecordRange, v.NumRanges)
b += ReadRecordRangeList(buf[b:], v.Ranges)
return b
}
// Struct list read RecordClientInfo
func ReadRecordClientInfoList(buf []byte, dest []RecordClientInfo) int {
b := 0
for i := 0; i < len(dest); i++ {
dest[i] = RecordClientInfo{}
b += ReadRecordClientInfo(buf[b:], &dest[i])
}
return pad(b)
}
// Struct write RecordClientInfo
func (v RecordClientInfo) Bytes() []byte {
buf := make([]byte, (8 + pad((int(v.NumRanges) * 24))))
b := 0
Put32(buf[b:], uint32(v.ClientResource))
b += 4
Put32(buf[b:], v.NumRanges)
b += 4
b += RecordRangeListBytes(buf[b:], v.Ranges)
return buf
}
// Write struct list RecordClientInfo
func RecordClientInfoListBytes(buf []byte, list []RecordClientInfo) int {
b := 0
var structBytes []byte
for _, item := range list {
structBytes = item.Bytes()
copy(buf[b:], structBytes)
b += pad(len(structBytes))
}
return b
}
// Struct list size RecordClientInfo
func RecordClientInfoListSize(list []RecordClientInfo) int {
size := 0
for _, item := range list {
size += (8 + pad((int(item.NumRanges) * 24)))
}
return size
}
// Error definition RecordBadContext (0)
// Size: 32
const BadRecordBadContext = 0
type RecordBadContextError struct {
Sequence uint16
NiceName string
InvalidRecord uint32
}
// Error read RecordBadContext
func NewRecordBadContextError(buf []byte) Error {
v := RecordBadContextError{}
v.NiceName = "RecordBadContext"
b := 1 // skip error determinant
b += 1 // don't read error number
v.Sequence = Get16(buf[b:])
b += 2
v.InvalidRecord = Get32(buf[b:])
b += 4
return v
}
func (err RecordBadContextError) ImplementsError() {}
func (err RecordBadContextError) SequenceId() uint16 {
return err.Sequence
}
func (err RecordBadContextError) BadId() Id {
return 0
}
func (err RecordBadContextError) Error() string {
fieldVals := make([]string, 0, 1)
fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence))
fieldVals = append(fieldVals, sprintf("InvalidRecord: %d", err.InvalidRecord))
return "BadRecordBadContext {" + stringsJoin(fieldVals, ", ") + "}"
}
func init() {
newExtErrorFuncs["RECORD"][0] = NewRecordBadContextError
}
// Request RecordQueryVersion
// size: 8
type RecordQueryVersionCookie struct {
*cookie
}
func (c *Conn) RecordQueryVersion(MajorVersion uint16, MinorVersion uint16) RecordQueryVersionCookie {
cookie := c.newCookie(true, true)
c.newRequest(c.recordQueryVersionRequest(MajorVersion, MinorVersion), cookie)
return RecordQueryVersionCookie{cookie}
}
func (c *Conn) RecordQueryVersionUnchecked(MajorVersion uint16, MinorVersion uint16) RecordQueryVersionCookie {
cookie := c.newCookie(false, true)
c.newRequest(c.recordQueryVersionRequest(MajorVersion, MinorVersion), cookie)
return RecordQueryVersionCookie{cookie}
}
// Request reply for RecordQueryVersion
// size: 12
type RecordQueryVersionReply struct {
Sequence uint16
Length uint32
// padding: 1 bytes
MajorVersion uint16
MinorVersion uint16
}
// Waits and reads reply data from request RecordQueryVersion
func (cook RecordQueryVersionCookie) Reply() (*RecordQueryVersionReply, error) {
buf, err := cook.reply()
if err != nil {
return nil, err
}
if buf == nil {
return nil, nil
}
return recordQueryVersionReply(buf), nil
}
// Read reply into structure from buffer for RecordQueryVersion
func recordQueryVersionReply(buf []byte) *RecordQueryVersionReply {
v := new(RecordQueryVersionReply)
b := 1 // skip reply determinant
b += 1 // padding
v.Sequence = Get16(buf[b:])
b += 2
v.Length = Get32(buf[b:]) // 4-byte units
b += 4
v.MajorVersion = Get16(buf[b:])
b += 2
v.MinorVersion = Get16(buf[b:])
b += 2
return v
}
func (cook RecordQueryVersionCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordQueryVersion
func (c *Conn) recordQueryVersionRequest(MajorVersion uint16, MinorVersion uint16) []byte {
size := 8
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 0 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put16(buf[b:], MajorVersion)
b += 2
Put16(buf[b:], MinorVersion)
b += 2
return buf
}
// Request RecordCreateContext
// size: pad(((20 + pad((int(NumClientSpecs) * 4))) + pad((int(NumRanges) * 24))))
type RecordCreateContextCookie struct {
*cookie
}
// Write request to wire for RecordCreateContext
func (c *Conn) RecordCreateContext(Context Id, ElementHeader RecordElementHeader, NumClientSpecs uint32, NumRanges uint32, ClientSpecs []RecordClientSpec, Ranges []RecordRange) RecordCreateContextCookie {
cookie := c.newCookie(false, false)
c.newRequest(c.recordCreateContextRequest(Context, ElementHeader, NumClientSpecs, NumRanges, ClientSpecs, Ranges), cookie)
return RecordCreateContextCookie{cookie}
}
func (c *Conn) RecordCreateContextChecked(Context Id, ElementHeader RecordElementHeader, NumClientSpecs uint32, NumRanges uint32, ClientSpecs []RecordClientSpec, Ranges []RecordRange) RecordCreateContextCookie {
cookie := c.newCookie(true, false)
c.newRequest(c.recordCreateContextRequest(Context, ElementHeader, NumClientSpecs, NumRanges, ClientSpecs, Ranges), cookie)
return RecordCreateContextCookie{cookie}
}
func (cook RecordCreateContextCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordCreateContext
func (c *Conn) recordCreateContextRequest(Context Id, ElementHeader RecordElementHeader, NumClientSpecs uint32, NumRanges uint32, ClientSpecs []RecordClientSpec, Ranges []RecordRange) []byte {
size := pad(((20 + pad((int(NumClientSpecs) * 4))) + pad((int(NumRanges) * 24))))
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 1 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
buf[b] = byte(ElementHeader)
b += 1
b += 3 // padding
Put32(buf[b:], NumClientSpecs)
b += 4
Put32(buf[b:], NumRanges)
b += 4
for i := 0; i < int(NumClientSpecs); i++ {
Put32(buf[b:], uint32(ClientSpecs[i]))
b += 4
}
b = pad(b)
b += RecordRangeListBytes(buf[b:], Ranges)
return buf
}
// Request RecordRegisterClients
// size: pad(((20 + pad((int(NumClientSpecs) * 4))) + pad((int(NumRanges) * 24))))
type RecordRegisterClientsCookie struct {
*cookie
}
// Write request to wire for RecordRegisterClients
func (c *Conn) RecordRegisterClients(Context Id, ElementHeader RecordElementHeader, NumClientSpecs uint32, NumRanges uint32, ClientSpecs []RecordClientSpec, Ranges []RecordRange) RecordRegisterClientsCookie {
cookie := c.newCookie(false, false)
c.newRequest(c.recordRegisterClientsRequest(Context, ElementHeader, NumClientSpecs, NumRanges, ClientSpecs, Ranges), cookie)
return RecordRegisterClientsCookie{cookie}
}
func (c *Conn) RecordRegisterClientsChecked(Context Id, ElementHeader RecordElementHeader, NumClientSpecs uint32, NumRanges uint32, ClientSpecs []RecordClientSpec, Ranges []RecordRange) RecordRegisterClientsCookie {
cookie := c.newCookie(true, false)
c.newRequest(c.recordRegisterClientsRequest(Context, ElementHeader, NumClientSpecs, NumRanges, ClientSpecs, Ranges), cookie)
return RecordRegisterClientsCookie{cookie}
}
func (cook RecordRegisterClientsCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordRegisterClients
func (c *Conn) recordRegisterClientsRequest(Context Id, ElementHeader RecordElementHeader, NumClientSpecs uint32, NumRanges uint32, ClientSpecs []RecordClientSpec, Ranges []RecordRange) []byte {
size := pad(((20 + pad((int(NumClientSpecs) * 4))) + pad((int(NumRanges) * 24))))
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 2 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
buf[b] = byte(ElementHeader)
b += 1
b += 3 // padding
Put32(buf[b:], NumClientSpecs)
b += 4
Put32(buf[b:], NumRanges)
b += 4
for i := 0; i < int(NumClientSpecs); i++ {
Put32(buf[b:], uint32(ClientSpecs[i]))
b += 4
}
b = pad(b)
b += RecordRangeListBytes(buf[b:], Ranges)
return buf
}
// Request RecordUnregisterClients
// size: pad((12 + pad((int(NumClientSpecs) * 4))))
type RecordUnregisterClientsCookie struct {
*cookie
}
// Write request to wire for RecordUnregisterClients
func (c *Conn) RecordUnregisterClients(Context Id, NumClientSpecs uint32, ClientSpecs []RecordClientSpec) RecordUnregisterClientsCookie {
cookie := c.newCookie(false, false)
c.newRequest(c.recordUnregisterClientsRequest(Context, NumClientSpecs, ClientSpecs), cookie)
return RecordUnregisterClientsCookie{cookie}
}
func (c *Conn) RecordUnregisterClientsChecked(Context Id, NumClientSpecs uint32, ClientSpecs []RecordClientSpec) RecordUnregisterClientsCookie {
cookie := c.newCookie(true, false)
c.newRequest(c.recordUnregisterClientsRequest(Context, NumClientSpecs, ClientSpecs), cookie)
return RecordUnregisterClientsCookie{cookie}
}
func (cook RecordUnregisterClientsCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordUnregisterClients
func (c *Conn) recordUnregisterClientsRequest(Context Id, NumClientSpecs uint32, ClientSpecs []RecordClientSpec) []byte {
size := pad((12 + pad((int(NumClientSpecs) * 4))))
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 3 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
Put32(buf[b:], NumClientSpecs)
b += 4
for i := 0; i < int(NumClientSpecs); i++ {
Put32(buf[b:], uint32(ClientSpecs[i]))
b += 4
}
b = pad(b)
return buf
}
// Request RecordGetContext
// size: 8
type RecordGetContextCookie struct {
*cookie
}
func (c *Conn) RecordGetContext(Context Id) RecordGetContextCookie {
cookie := c.newCookie(true, true)
c.newRequest(c.recordGetContextRequest(Context), cookie)
return RecordGetContextCookie{cookie}
}
func (c *Conn) RecordGetContextUnchecked(Context Id) RecordGetContextCookie {
cookie := c.newCookie(false, true)
c.newRequest(c.recordGetContextRequest(Context), cookie)
return RecordGetContextCookie{cookie}
}
// Request reply for RecordGetContext
// size: (32 + RecordClientInfoListSize(InterceptedClients))
type RecordGetContextReply struct {
Sequence uint16
Length uint32
Enabled bool
ElementHeader RecordElementHeader
// padding: 3 bytes
NumInterceptedClients uint32
// padding: 16 bytes
InterceptedClients []RecordClientInfo // size: RecordClientInfoListSize(InterceptedClients)
}
// Waits and reads reply data from request RecordGetContext
func (cook RecordGetContextCookie) Reply() (*RecordGetContextReply, error) {
buf, err := cook.reply()
if err != nil {
return nil, err
}
if buf == nil {
return nil, nil
}
return recordGetContextReply(buf), nil
}
// Read reply into structure from buffer for RecordGetContext
func recordGetContextReply(buf []byte) *RecordGetContextReply {
v := new(RecordGetContextReply)
b := 1 // skip reply determinant
if buf[b] == 1 {
v.Enabled = true
} else {
v.Enabled = false
}
b += 1
v.Sequence = Get16(buf[b:])
b += 2
v.Length = Get32(buf[b:]) // 4-byte units
b += 4
v.ElementHeader = RecordElementHeader(buf[b])
b += 1
b += 3 // padding
v.NumInterceptedClients = Get32(buf[b:])
b += 4
b += 16 // padding
v.InterceptedClients = make([]RecordClientInfo, v.NumInterceptedClients)
b += ReadRecordClientInfoList(buf[b:], v.InterceptedClients)
return v
}
func (cook RecordGetContextCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordGetContext
func (c *Conn) recordGetContextRequest(Context Id) []byte {
size := 8
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 4 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
return buf
}
// Request RecordEnableContext
// size: 8
type RecordEnableContextCookie struct {
*cookie
}
func (c *Conn) RecordEnableContext(Context Id) RecordEnableContextCookie {
cookie := c.newCookie(true, true)
c.newRequest(c.recordEnableContextRequest(Context), cookie)
return RecordEnableContextCookie{cookie}
}
func (c *Conn) RecordEnableContextUnchecked(Context Id) RecordEnableContextCookie {
cookie := c.newCookie(false, true)
c.newRequest(c.recordEnableContextRequest(Context), cookie)
return RecordEnableContextCookie{cookie}
}
// Request reply for RecordEnableContext
// size: (32 + pad(((int(Length) * 4) * 1)))
type RecordEnableContextReply struct {
Sequence uint16
Length uint32
Category byte
ElementHeader RecordElementHeader
ClientSwapped bool
// padding: 2 bytes
XidBase uint32
ServerTime uint32
RecSequenceNum uint32
// padding: 8 bytes
Data []byte // size: pad(((int(Length) * 4) * 1))
}
// Waits and reads reply data from request RecordEnableContext
func (cook RecordEnableContextCookie) Reply() (*RecordEnableContextReply, error) {
buf, err := cook.reply()
if err != nil {
return nil, err
}
if buf == nil {
return nil, nil
}
return recordEnableContextReply(buf), nil
}
// Read reply into structure from buffer for RecordEnableContext
func recordEnableContextReply(buf []byte) *RecordEnableContextReply {
v := new(RecordEnableContextReply)
b := 1 // skip reply determinant
v.Category = buf[b]
b += 1
v.Sequence = Get16(buf[b:])
b += 2
v.Length = Get32(buf[b:]) // 4-byte units
b += 4
v.ElementHeader = RecordElementHeader(buf[b])
b += 1
if buf[b] == 1 {
v.ClientSwapped = true
} else {
v.ClientSwapped = false
}
b += 1
b += 2 // padding
v.XidBase = Get32(buf[b:])
b += 4
v.ServerTime = Get32(buf[b:])
b += 4
v.RecSequenceNum = Get32(buf[b:])
b += 4
b += 8 // padding
v.Data = make([]byte, (int(v.Length) * 4))
copy(v.Data[:(int(v.Length)*4)], buf[b:])
b += pad(int((int(v.Length) * 4)))
return v
}
func (cook RecordEnableContextCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordEnableContext
func (c *Conn) recordEnableContextRequest(Context Id) []byte {
size := 8
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 5 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
return buf
}
// Request RecordDisableContext
// size: 8
type RecordDisableContextCookie struct {
*cookie
}
// Write request to wire for RecordDisableContext
func (c *Conn) RecordDisableContext(Context Id) RecordDisableContextCookie {
cookie := c.newCookie(false, false)
c.newRequest(c.recordDisableContextRequest(Context), cookie)
return RecordDisableContextCookie{cookie}
}
func (c *Conn) RecordDisableContextChecked(Context Id) RecordDisableContextCookie {
cookie := c.newCookie(true, false)
c.newRequest(c.recordDisableContextRequest(Context), cookie)
return RecordDisableContextCookie{cookie}
}
func (cook RecordDisableContextCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordDisableContext
func (c *Conn) recordDisableContextRequest(Context Id) []byte {
size := 8
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 6 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
return buf
}
// Request RecordFreeContext
// size: 8
type RecordFreeContextCookie struct {
*cookie
}
// Write request to wire for RecordFreeContext
func (c *Conn) RecordFreeContext(Context Id) RecordFreeContextCookie {
cookie := c.newCookie(false, false)
c.newRequest(c.recordFreeContextRequest(Context), cookie)
return RecordFreeContextCookie{cookie}
}
func (c *Conn) RecordFreeContextChecked(Context Id) RecordFreeContextCookie {
cookie := c.newCookie(true, false)
c.newRequest(c.recordFreeContextRequest(Context), cookie)
return RecordFreeContextCookie{cookie}
}
func (cook RecordFreeContextCookie) Check() error {
return cook.check()
}
// Write request to wire for RecordFreeContext
func (c *Conn) recordFreeContextRequest(Context Id) []byte {
size := 8
b := 0
buf := make([]byte, size)
buf[b] = c.extensions["RECORD"]
b += 1
buf[b] = 7 // request opcode
b += 1
Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
b += 2
Put32(buf[b:], uint32(Context))
b += 4
return buf
}