gofmt
This commit is contained in:
		@@ -162,7 +162,7 @@ func (c *Conn) dial(display string) error {
 | 
			
		||||
			protocol = "tcp"
 | 
			
		||||
		}
 | 
			
		||||
		c.conn, err = net.Dial(protocol,
 | 
			
		||||
							   c.host+":"+strconv.Itoa(6000+c.DisplayNumber))
 | 
			
		||||
			c.host+":"+strconv.Itoa(6000+c.DisplayNumber))
 | 
			
		||||
	} else {
 | 
			
		||||
		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
 | 
			
		||||
 | 
			
		||||
This is an extremely terse example that demonstrates how to connect to X,
 | 
			
		||||
create a window, listen to StructureNotify events and Key{Press,Release} 
 | 
			
		||||
events, map the window, and print out all events received. An example with 
 | 
			
		||||
create a window, listen to StructureNotify events and Key{Press,Release}
 | 
			
		||||
events, map the window, and print out all events received. An example with
 | 
			
		||||
accompanying documentation can be found in examples/create-window.
 | 
			
		||||
 | 
			
		||||
	package main
 | 
			
		||||
@@ -111,11 +111,11 @@ evidence of this claim, please see the benchmarks in xproto/xproto_test.go.
 | 
			
		||||
 | 
			
		||||
Tests
 | 
			
		||||
 | 
			
		||||
xproto/xproto_test.go contains a number of contrived tests that stress 
 | 
			
		||||
particular corners of XGB that I presume could be problem areas. Namely: 
 | 
			
		||||
requests with no replies, requests with replies, checked errors, unchecked 
 | 
			
		||||
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 
 | 
			
		||||
xproto/xproto_test.go contains a number of contrived tests that stress
 | 
			
		||||
particular corners of XGB that I presume could be problem areas. Namely:
 | 
			
		||||
requests with no replies, requests with replies, checked errors, unchecked
 | 
			
		||||
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
 | 
			
		||||
and creating a window and listening to StructureNotify events.
 | 
			
		||||
 | 
			
		||||
Code Generator
 | 
			
		||||
@@ -131,15 +131,15 @@ What works
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
existing extensions have Go source generated (and are compilable) and are 
 | 
			
		||||
included in this package, but I am currently unsure of their status. They 
 | 
			
		||||
existing extensions have Go source generated (and are compilable) and are
 | 
			
		||||
included in this package, but I am currently unsure of their status. They
 | 
			
		||||
*should* work.
 | 
			
		||||
 | 
			
		||||
What does not work
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								nexgb/xgb.go
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								nexgb/xgb.go
									
									
									
									
									
								
							@@ -29,7 +29,7 @@ const (
 | 
			
		||||
	xidBuffer = 5
 | 
			
		||||
 | 
			
		||||
	// 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.
 | 
			
		||||
	seqBuffer = 5
 | 
			
		||||
 | 
			
		||||
@@ -132,7 +132,7 @@ var NewEventFuncs = make(map[int]NewEventFun)
 | 
			
		||||
 | 
			
		||||
// NewExtEventFuncs is a temporary map that stores event constructor functions
 | 
			
		||||
// 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.
 | 
			
		||||
var NewExtEventFuncs = make(map[string]map[int]NewEventFun)
 | 
			
		||||
 | 
			
		||||
@@ -195,11 +195,11 @@ func (conn *Conn) generateXIds() {
 | 
			
		||||
	defer close(conn.xidChan)
 | 
			
		||||
 | 
			
		||||
	// This requires some explanation. From the horse's mouth:
 | 
			
		||||
	// "The resource-id-mask contains a single contiguous set of bits (at least 
 | 
			
		||||
	// 18).  The client allocates resource IDs for types WINDOW, PIXMAP, 
 | 
			
		||||
	// 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 
 | 
			
		||||
	// constructed in this way can be used to name newly created resources over 
 | 
			
		||||
	// "The resource-id-mask contains a single contiguous set of bits (at least
 | 
			
		||||
	// 18).  The client allocates resource IDs for types WINDOW, PIXMAP,
 | 
			
		||||
	// 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
 | 
			
		||||
	// constructed in this way can be used to name newly created resources over
 | 
			
		||||
	// this connection."
 | 
			
		||||
	// So for example (using 8 bit integers), the mask might look like:
 | 
			
		||||
	// 00111000
 | 
			
		||||
@@ -240,7 +240,7 @@ func (c *Conn) newSequenceId() uint16 {
 | 
			
		||||
// own goroutine.
 | 
			
		||||
// A sequence id is generated for *every* request. It's the identifier used
 | 
			
		||||
// 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.
 | 
			
		||||
// 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.
 | 
			
		||||
@@ -266,7 +266,7 @@ type request struct {
 | 
			
		||||
	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.
 | 
			
		||||
// 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.
 | 
			
		||||
@@ -500,9 +500,9 @@ func (c *Conn) WaitForEvent() (Event, Error) {
 | 
			
		||||
	return processEventOrError(<-c.eventChan)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PollForEvent returns the next event from the server if one is available in 
 | 
			
		||||
// 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 
 | 
			
		||||
// PollForEvent returns the next event from the server if one is available in
 | 
			
		||||
// 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
 | 
			
		||||
// is empty.
 | 
			
		||||
func (c *Conn) PollForEvent() (Event, Error) {
 | 
			
		||||
	select {
 | 
			
		||||
 
 | 
			
		||||
@@ -322,7 +322,7 @@ func (e *FieldRef) Initialize(p *Protocol) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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.
 | 
			
		||||
type EnumRef struct {
 | 
			
		||||
	EnumKind Type
 | 
			
		||||
 
 | 
			
		||||
@@ -138,7 +138,7 @@ func (f *ListField) Length() Size {
 | 
			
		||||
// Size computes the *size* of a list (in bytes).
 | 
			
		||||
// It it typically a simple matter of multiplying the length of the list by
 | 
			
		||||
// 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
 | 
			
		||||
// size in this case can only be computed recursively).
 | 
			
		||||
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
 | 
			
		||||
// the number of bytes read off the buffer.
 | 
			
		||||
// '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
 | 
			
		||||
// 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.
 | 
			
		||||
func (s *Struct) ReadList(c *Context) {
 | 
			
		||||
	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)
 | 
			
		||||
 | 
			
		||||
	// 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
 | 
			
		||||
	// by the opcode of the request (while the first byte is always occupied
 | 
			
		||||
	// by the opcode of the extension).
 | 
			
		||||
 
 | 
			
		||||
@@ -88,8 +88,8 @@ func TestCookieBuffer(t *testing.T) {
 | 
			
		||||
	TestProperty(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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 
 | 
			
		||||
// 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
 | 
			
		||||
// final request to ensure things still work properly.
 | 
			
		||||
func TestSequenceWrap(t *testing.T) {
 | 
			
		||||
	n := (1 << 16) + 10
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user