diff options
Diffstat (limited to 'nexgb/auto_record.go')
-rw-r--r-- | nexgb/auto_record.go | 1095 |
1 files changed, 0 insertions, 1095 deletions
diff --git a/nexgb/auto_record.go b/nexgb/auto_record.go deleted file mode 100644 index ec936d7..0000000 --- a/nexgb/auto_record.go +++ /dev/null @@ -1,1095 +0,0 @@ -package xgb - -/* - This file was generated by record.xml on May 10 2012 12:39:33pm EDT. - This file is automatically generated. Edit at your peril! -*/ - -// 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.") - } - - 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 - } - c.extLock.Unlock() - - return nil -} - -func init() { - newExtEventFuncs["RECORD"] = make(map[int]newEventFun) - newExtErrorFuncs["RECORD"] = make(map[int]newErrorFun) -} - -// 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' - -// 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' - -const ( - RecordHTypeFromServerTime = 1 - RecordHTypeFromClientTime = 2 - RecordHTypeFromClientSequence = 4 -) - -const ( - RecordCsCurrentClients = 1 - RecordCsFutureClients = 2 - RecordCsAllClients = 3 -) - -type RecordContext uint32 - -func (c *Conn) NewRecordContextId() (RecordContext, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return RecordContext(id), nil -} - -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() uint32 { - 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext, 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 RecordContext) RecordGetContextCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.recordGetContextRequest(Context), cookie) - return RecordGetContextCookie{cookie} -} - -func (c *Conn) RecordGetContextUnchecked(Context RecordContext) 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 RecordContext) []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 RecordContext) RecordEnableContextCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.recordEnableContextRequest(Context), cookie) - return RecordEnableContextCookie{cookie} -} - -func (c *Conn) RecordEnableContextUnchecked(Context RecordContext) 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 RecordContext) []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 RecordContext) RecordDisableContextCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.recordDisableContextRequest(Context), cookie) - return RecordDisableContextCookie{cookie} -} - -func (c *Conn) RecordDisableContextChecked(Context RecordContext) 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 RecordContext) []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 RecordContext) RecordFreeContextCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.recordFreeContextRequest(Context), cookie) - return RecordFreeContextCookie{cookie} -} - -func (c *Conn) RecordFreeContextChecked(Context RecordContext) 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 RecordContext) []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 -} |