gofmt
This commit is contained in:
parent
e635de5e1d
commit
3658686aee
|
@ -162,7 +162,7 @@ func (c *Conn) dial(display string) error {
|
||||||
protocol = "tcp"
|
protocol = "tcp"
|
||||||
}
|
}
|
||||||
c.conn, err = net.Dial(protocol,
|
c.conn, err = net.Dial(protocol,
|
||||||
c.host+":"+strconv.Itoa(6000+c.DisplayNumber))
|
c.host+":"+strconv.Itoa(6000+c.DisplayNumber))
|
||||||
} else {
|
} else {
|
||||||
c.conn, err = net.Dial("unix", "/tmp/.X11-unix/X"+c.display)
|
c.conn, err = net.Dial("unix", "/tmp/.X11-unix/X"+c.display)
|
||||||
}
|
}
|
||||||
|
|
20
nexgb/doc.go
20
nexgb/doc.go
|
@ -15,8 +15,8 @@ https://github.com/BurntSushi/xgbutil
|
||||||
Example
|
Example
|
||||||
|
|
||||||
This is an extremely terse example that demonstrates how to connect to X,
|
This is an extremely terse example that demonstrates how to connect to X,
|
||||||
create a window, listen to StructureNotify events and Key{Press,Release}
|
create a window, listen to StructureNotify events and Key{Press,Release}
|
||||||
events, map the window, and print out all events received. An example with
|
events, map the window, and print out all events received. An example with
|
||||||
accompanying documentation can be found in examples/create-window.
|
accompanying documentation can be found in examples/create-window.
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
@ -111,11 +111,11 @@ evidence of this claim, please see the benchmarks in xproto/xproto_test.go.
|
||||||
|
|
||||||
Tests
|
Tests
|
||||||
|
|
||||||
xproto/xproto_test.go contains a number of contrived tests that stress
|
xproto/xproto_test.go contains a number of contrived tests that stress
|
||||||
particular corners of XGB that I presume could be problem areas. Namely:
|
particular corners of XGB that I presume could be problem areas. Namely:
|
||||||
requests with no replies, requests with replies, checked errors, unchecked
|
requests with no replies, requests with replies, checked errors, unchecked
|
||||||
errors, sequence number wrapping, cookie buffer flushing (i.e., forcing a round
|
errors, sequence number wrapping, cookie buffer flushing (i.e., forcing a round
|
||||||
trip every N requests made that don't have a reply), getting/setting properties
|
trip every N requests made that don't have a reply), getting/setting properties
|
||||||
and creating a window and listening to StructureNotify events.
|
and creating a window and listening to StructureNotify events.
|
||||||
|
|
||||||
Code Generator
|
Code Generator
|
||||||
|
@ -131,15 +131,15 @@ What works
|
||||||
|
|
||||||
I am reasonably confident that the core X protocol is in full working form. I've
|
I am reasonably confident that the core X protocol is in full working form. I've
|
||||||
also tested the Xinerama and RandR extensions sparingly. Many of the other
|
also tested the Xinerama and RandR extensions sparingly. Many of the other
|
||||||
existing extensions have Go source generated (and are compilable) and are
|
existing extensions have Go source generated (and are compilable) and are
|
||||||
included in this package, but I am currently unsure of their status. They
|
included in this package, but I am currently unsure of their status. They
|
||||||
*should* work.
|
*should* work.
|
||||||
|
|
||||||
What does not work
|
What does not work
|
||||||
|
|
||||||
XKB is the only extension that intentionally does not work, although I suspect
|
XKB is the only extension that intentionally does not work, although I suspect
|
||||||
that GLX also does not work (however, there is Go source code for GLX that
|
that GLX also does not work (however, there is Go source code for GLX that
|
||||||
compiles, unlike XKB). I don't currently have any intention of getting XKB
|
compiles, unlike XKB). I don't currently have any intention of getting XKB
|
||||||
working, due to its complexity and my current mental incapacity to test it.
|
working, due to its complexity and my current mental incapacity to test it.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
24
nexgb/xgb.go
24
nexgb/xgb.go
|
@ -29,7 +29,7 @@ const (
|
||||||
xidBuffer = 5
|
xidBuffer = 5
|
||||||
|
|
||||||
// seqBuffer represents the queue size of the sequence number channel.
|
// seqBuffer represents the queue size of the sequence number channel.
|
||||||
// I don't think this value matters much, since sequence number generation
|
// I don't think this value matters much, since sequence number generation
|
||||||
// is not that expensive.
|
// is not that expensive.
|
||||||
seqBuffer = 5
|
seqBuffer = 5
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ var NewEventFuncs = make(map[int]NewEventFun)
|
||||||
|
|
||||||
// NewExtEventFuncs is a temporary map that stores event constructor functions
|
// NewExtEventFuncs is a temporary map that stores event constructor functions
|
||||||
// for each extension. When an extension is initialized, each event for that
|
// for each extension. When an extension is initialized, each event for that
|
||||||
// extension is added to the 'NewEventFuncs' map. It should not be used. It is
|
// extension is added to the 'NewEventFuncs' map. It should not be used. It is
|
||||||
// exported for use in the extension sub-packages.
|
// exported for use in the extension sub-packages.
|
||||||
var NewExtEventFuncs = make(map[string]map[int]NewEventFun)
|
var NewExtEventFuncs = make(map[string]map[int]NewEventFun)
|
||||||
|
|
||||||
|
@ -195,11 +195,11 @@ func (conn *Conn) generateXIds() {
|
||||||
defer close(conn.xidChan)
|
defer close(conn.xidChan)
|
||||||
|
|
||||||
// This requires some explanation. From the horse's mouth:
|
// This requires some explanation. From the horse's mouth:
|
||||||
// "The resource-id-mask contains a single contiguous set of bits (at least
|
// "The resource-id-mask contains a single contiguous set of bits (at least
|
||||||
// 18). The client allocates resource IDs for types WINDOW, PIXMAP,
|
// 18). The client allocates resource IDs for types WINDOW, PIXMAP,
|
||||||
// CURSOR, FONT, GCONTEXT, and COLORMAP by choosing a value with only some
|
// CURSOR, FONT, GCONTEXT, and COLORMAP by choosing a value with only some
|
||||||
// subset of these bits set and ORing it with resource-id-base. Only values
|
// subset of these bits set and ORing it with resource-id-base. Only values
|
||||||
// constructed in this way can be used to name newly created resources over
|
// constructed in this way can be used to name newly created resources over
|
||||||
// this connection."
|
// this connection."
|
||||||
// So for example (using 8 bit integers), the mask might look like:
|
// So for example (using 8 bit integers), the mask might look like:
|
||||||
// 00111000
|
// 00111000
|
||||||
|
@ -240,7 +240,7 @@ func (c *Conn) newSequenceId() uint16 {
|
||||||
// own goroutine.
|
// own goroutine.
|
||||||
// A sequence id is generated for *every* request. It's the identifier used
|
// A sequence id is generated for *every* request. It's the identifier used
|
||||||
// to match up replies with requests.
|
// to match up replies with requests.
|
||||||
// Since sequence ids can only be 16 bit integers we start over at zero when it
|
// Since sequence ids can only be 16 bit integers we start over at zero when it
|
||||||
// comes time to wrap.
|
// comes time to wrap.
|
||||||
// N.B. As long as the cookie buffer is less than 2^16, there are no limitations
|
// N.B. As long as the cookie buffer is less than 2^16, there are no limitations
|
||||||
// on the number (or kind) of requests made in sequence.
|
// on the number (or kind) of requests made in sequence.
|
||||||
|
@ -266,7 +266,7 @@ type request struct {
|
||||||
cookie *Cookie
|
cookie *Cookie
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRequest takes the bytes and a cookie of a particular request, constructs
|
// NewRequest takes the bytes and a cookie of a particular request, constructs
|
||||||
// a request type, and sends it over the Conn.reqChan channel.
|
// a request type, and sends it over the Conn.reqChan channel.
|
||||||
// Note that the sequence number is added to the cookie after it is sent
|
// Note that the sequence number is added to the cookie after it is sent
|
||||||
// over the request channel, but before it is sent to X.
|
// over the request channel, but before it is sent to X.
|
||||||
|
@ -500,9 +500,9 @@ func (c *Conn) WaitForEvent() (Event, Error) {
|
||||||
return processEventOrError(<-c.eventChan)
|
return processEventOrError(<-c.eventChan)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PollForEvent returns the next event from the server if one is available in
|
// PollForEvent returns the next event from the server if one is available in
|
||||||
// the internal queue without blocking. Note that unlike WaitForEvent, both
|
// the internal queue without blocking. Note that unlike WaitForEvent, both
|
||||||
// Event and Error could be nil. Indeed, they are both nil when the event queue
|
// Event and Error could be nil. Indeed, they are both nil when the event queue
|
||||||
// is empty.
|
// is empty.
|
||||||
func (c *Conn) PollForEvent() (Event, Error) {
|
func (c *Conn) PollForEvent() (Event, Error) {
|
||||||
select {
|
select {
|
||||||
|
|
|
@ -322,7 +322,7 @@ func (e *FieldRef) Initialize(p *Protocol) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnumRef represents a reference to some enumeration field.
|
// EnumRef represents a reference to some enumeration field.
|
||||||
// EnumKind is the "group" an EnumItem is the name of the specific enumeration
|
// EnumKind is the "group" an EnumItem is the name of the specific enumeration
|
||||||
// value inside that group.
|
// value inside that group.
|
||||||
type EnumRef struct {
|
type EnumRef struct {
|
||||||
EnumKind Type
|
EnumKind Type
|
||||||
|
|
|
@ -138,7 +138,7 @@ func (f *ListField) Length() Size {
|
||||||
// Size computes the *size* of a list (in bytes).
|
// Size computes the *size* of a list (in bytes).
|
||||||
// It it typically a simple matter of multiplying the length of the list by
|
// It it typically a simple matter of multiplying the length of the list by
|
||||||
// the size of the type of the list.
|
// the size of the type of the list.
|
||||||
// But if it's a list of struct where the struct has a list field, we use a
|
// But if it's a list of struct where the struct has a list field, we use a
|
||||||
// special function written in go_struct.go to compute the size (since the
|
// special function written in go_struct.go to compute the size (since the
|
||||||
// size in this case can only be computed recursively).
|
// size in this case can only be computed recursively).
|
||||||
func (f *ListField) Size() Size {
|
func (f *ListField) Size() Size {
|
||||||
|
|
|
@ -27,7 +27,7 @@ func (s *Struct) Define(c *Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read for a struct creates a function 'ReadStructName' that takes a source
|
// Read for a struct creates a function 'ReadStructName' that takes a source
|
||||||
// byte slice (i.e., the buffer) and a destination struct, and returns
|
// byte slice (i.e., the buffer) and a destination struct, and returns
|
||||||
// the number of bytes read off the buffer.
|
// the number of bytes read off the buffer.
|
||||||
// 'ReadStructName' should only be used to read raw reply data from the wire.
|
// 'ReadStructName' should only be used to read raw reply data from the wire.
|
||||||
|
@ -49,7 +49,7 @@ func (s *Struct) Read(c *Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadList for a struct creates a function 'ReadStructNameList' that takes
|
// ReadList for a struct creates a function 'ReadStructNameList' that takes
|
||||||
// a source (i.e., the buffer) byte slice, and a destination slice and returns
|
// a source (i.e., the buffer) byte slice, and a destination slice and returns
|
||||||
// the number of bytes read from the byte slice.
|
// the number of bytes read from the byte slice.
|
||||||
func (s *Struct) ReadList(c *Context) {
|
func (s *Struct) ReadList(c *Context) {
|
||||||
c.Putln("// %sReadList reads a byte slice into a list of %s values.",
|
c.Putln("// %sReadList reads a byte slice into a list of %s values.",
|
||||||
|
|
|
@ -88,7 +88,7 @@ func (r *Request) Size(c *Context) Size {
|
||||||
size := newFixedSize(0)
|
size := newFixedSize(0)
|
||||||
|
|
||||||
// If this is a core protocol request, we squeeze in an extra byte of
|
// If this is a core protocol request, we squeeze in an extra byte of
|
||||||
// data (from the fields below) between the opcode and the size of the
|
// data (from the fields below) between the opcode and the size of the
|
||||||
// request. In an extension request, this byte is always occupied
|
// request. In an extension request, this byte is always occupied
|
||||||
// by the opcode of the request (while the first byte is always occupied
|
// by the opcode of the request (while the first byte is always occupied
|
||||||
// by the opcode of the extension).
|
// by the opcode of the extension).
|
||||||
|
|
|
@ -88,8 +88,8 @@ func TestCookieBuffer(t *testing.T) {
|
||||||
TestProperty(t)
|
TestProperty(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestSequenceWrap issues (2^16) + n requests w/ replies to guarantee that the
|
// TestSequenceWrap issues (2^16) + n requests w/ replies to guarantee that the
|
||||||
// sequence number (which is a 16 bit integer) will wrap. It then issues one
|
// sequence number (which is a 16 bit integer) will wrap. It then issues one
|
||||||
// final request to ensure things still work properly.
|
// final request to ensure things still work properly.
|
||||||
func TestSequenceWrap(t *testing.T) {
|
func TestSequenceWrap(t *testing.T) {
|
||||||
n := (1 << 16) + 10
|
n := (1 << 16) + 10
|
||||||
|
|
Loading…
Reference in New Issue