Commit 6238964d authored by Robert Griesemer's avatar Robert Griesemer

gofmt-ify nacl

R=rsc
http://go/go-review/1018062
parent 77334b98
...@@ -21,13 +21,13 @@ import ( ...@@ -21,13 +21,13 @@ import (
"unsafe"; "unsafe";
) )
var srpcEnabled = srpc.Enabled(); var srpcEnabled = srpc.Enabled()
// native_client/src/trusted/service_runtime/include/sys/audio_video.h // native_client/src/trusted/service_runtime/include/sys/audio_video.h
// Subsystem values for Init. // Subsystem values for Init.
const ( const (
SubsystemVideo = 1<<iota; SubsystemVideo = 1<<iota;
SubsystemAudio; SubsystemAudio;
SubsystemEmbed; SubsystemEmbed;
) )
...@@ -35,20 +35,20 @@ const ( ...@@ -35,20 +35,20 @@ const (
// Audio formats. // Audio formats.
const ( const (
AudioFormatStereo44K = iota; AudioFormatStereo44K = iota;
AudioFormatStereo48K; AudioFormatStereo48K;
) )
// A Window represents a connection to the Native Client window. // A Window represents a connection to the Native Client window.
// It implements draw.Context. // It implements draw.Context.
type Window struct { type Window struct {
Embedded bool; // running as part of a web page? Embedded bool; // running as part of a web page?
*Image; // screen image *Image; // screen image
mousec chan draw.Mouse; mousec chan draw.Mouse;
kbdc chan int; kbdc chan int;
quitc chan bool; quitc chan bool;
resizec chan bool; resizec chan bool;
} }
// *Window implements draw.Context // *Window implements draw.Context
...@@ -89,7 +89,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) { ...@@ -89,7 +89,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) {
xsubsys := subsys; xsubsys := subsys;
if srpcEnabled { if srpcEnabled {
waitBridge(); waitBridge();
xsubsys &^= SubsystemVideo|SubsystemEmbed; xsubsys &^= SubsystemVideo | SubsystemEmbed;
} }
if xsubsys & SubsystemEmbed != 0 { if xsubsys & SubsystemEmbed != 0 {
...@@ -102,7 +102,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) { ...@@ -102,7 +102,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) {
return nil, err; return nil, err;
} }
if subsys&SubsystemVideo != 0 { if subsys & SubsystemVideo != 0 {
if dx, dy, err = videoInit(dx, dy); err != nil { if dx, dy, err = videoInit(dx, dy); err != nil {
return nil, err; return nil, err;
} }
...@@ -113,7 +113,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) { ...@@ -113,7 +113,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) {
w.quitc = make(chan bool); w.quitc = make(chan bool);
} }
if subsys&SubsystemAudio != 0 { if subsys & SubsystemAudio != 0 {
var n int; var n int;
if n, err = audioInit(AudioFormatStereo44K, 2048); err != nil { if n, err = audioInit(AudioFormatStereo44K, 2048); err != nil {
return nil, err; return nil, err;
...@@ -121,7 +121,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) { ...@@ -121,7 +121,7 @@ func Init(subsys int, dx, dy int) (*Window, os.Error) {
println("audio", n); println("audio", n);
} }
if subsys&SubsystemVideo != 0 { if subsys & SubsystemVideo != 0 {
go w.readEvents(); go w.readEvents();
} }
...@@ -158,7 +158,7 @@ func videoUpdate(data []Color) (err os.Error) { ...@@ -158,7 +158,7 @@ func videoUpdate(data []Color) (err os.Error) {
return os.NewSyscallError("video_update", syscall.VideoUpdate((*uint32)(&data[0]))); return os.NewSyscallError("video_update", syscall.VideoUpdate((*uint32)(&data[0])));
} }
var noEvents = os.NewError("no events"); var noEvents = os.NewError("no events")
func videoPollEvent(ev []byte) (err os.Error) { func videoPollEvent(ev []byte) (err os.Error) {
if srpcEnabled { if srpcEnabled {
...@@ -167,7 +167,7 @@ func videoPollEvent(ev []byte) (err os.Error) { ...@@ -167,7 +167,7 @@ func videoPollEvent(ev []byte) (err os.Error) {
return noEvents; return noEvents;
} }
bytes.Copy(ev, &bridge.share.eq.event[r]); bytes.Copy(ev, &bridge.share.eq.event[r]);
bridge.share.eq.ri = (r+1) % eqsize; bridge.share.eq.ri = (r+1)%eqsize;
return nil; return nil;
} }
return os.NewSyscallError("video_poll_event", syscall.VideoPollEvent(&ev[0])); return os.NewSyscallError("video_poll_event", syscall.VideoPollEvent(&ev[0]));
...@@ -209,13 +209,13 @@ func AudioStream(data []uint16) (nextSize int, err os.Error) { ...@@ -209,13 +209,13 @@ func AudioStream(data []uint16) (nextSize int, err os.Error) {
// Synchronization structure to wait for bridge to become ready. // Synchronization structure to wait for bridge to become ready.
var bridge struct { var bridge struct {
c chan bool; c chan bool;
displayFd int; displayFd int;
rpcFd int; rpcFd int;
share *videoShare; share *videoShare;
pixel []Color; pixel []Color;
client *srpc.Client; client *srpc.Client;
flushRPC *srpc.RPC; flushRPC *srpc.RPC;
} }
// Wait for bridge to become ready. // Wait for bridge to become ready.
...@@ -227,27 +227,27 @@ func waitBridge() { ...@@ -227,27 +227,27 @@ func waitBridge() {
bridge.c <- <-bridge.c; bridge.c <- <-bridge.c;
} }
const eqsize = 64; const eqsize = 64
// Data structure shared with host via mmap. // Data structure shared with host via mmap.
type videoShare struct { type videoShare struct {
revision int32; // definition below is rev 100 unless noted revision int32; // definition below is rev 100 unless noted
mapSize int32; mapSize int32;
// event queue // event queue
eq struct { eq struct {
ri uint32; // read index [0,eqsize) ri uint32; // read index [0,eqsize)
wi uint32; // write index [0,eqsize) wi uint32; // write index [0,eqsize)
eof int32; eof int32;
event [eqsize][64]byte; event [eqsize][64]byte;
}; };
// now unused // now unused
_, _, _, _ int32; _, _, _, _ int32;
// video backing store information // video backing store information
width, height, _, size int32; width, height, _, size int32;
ready int32; // rev 0x101 ready int32; // rev 0x101
} }
// The frame buffer data is videoShareSize bytes after // The frame buffer data is videoShareSize bytes after
...@@ -271,7 +271,7 @@ func (multimediaBridge) Run(arg, ret []interface{}, size []int) srpc.Errno { ...@@ -271,7 +271,7 @@ func (multimediaBridge) Run(arg, ret []interface{}, size []int) srpc.Errno {
addr, _, errno := syscall.Syscall6(syscall.SYS_MMAP, addr, _, errno := syscall.Syscall6(syscall.SYS_MMAP,
0, 0,
uintptr(st.Size), uintptr(st.Size),
syscall.PROT_READ|syscall.PROT_WRITE, syscall.PROT_READ | syscall.PROT_WRITE,
syscall.MAP_SHARED, syscall.MAP_SHARED,
uintptr(bridge.displayFd), uintptr(bridge.displayFd),
0); 0);
...@@ -284,8 +284,8 @@ func (multimediaBridge) Run(arg, ret []interface{}, size []int) srpc.Errno { ...@@ -284,8 +284,8 @@ func (multimediaBridge) Run(arg, ret []interface{}, size []int) srpc.Errno {
// Overestimate frame buffer size // Overestimate frame buffer size
// (must use a compile-time constant) // (must use a compile-time constant)
// and then reslice. 256 megapixels (1 GB) should be enough. // and then reslice. 256 megapixels (1 GB) should be enough.
fb := (*[256*1024*1024]Color)(unsafe.Pointer(addr+videoShareSize)); fb := (*[256*1024*1024]Color)(unsafe.Pointer(addr + videoShareSize));
bridge.pixel = fb[0:(st.Size - videoShareSize)/4]; bridge.pixel = fb[0 : (st.Size - videoShareSize)/4];
// Configure RPC connection back to client. // Configure RPC connection back to client.
var err os.Error; var err os.Error;
...@@ -308,4 +308,3 @@ func init() { ...@@ -308,4 +308,3 @@ func init() {
srpc.Add("nacl_multimedia_bridge", "hh:", multimediaBridge{}); srpc.Add("nacl_multimedia_bridge", "hh:", multimediaBridge{});
} }
} }
...@@ -19,9 +19,10 @@ import ( ...@@ -19,9 +19,10 @@ import (
) )
// An eventType identifies the type of a Native Client Event. // An eventType identifies the type of a Native Client Event.
type eventType uint8; type eventType uint8
const ( const (
eventActive = 1+iota; eventActive = 1+iota;
eventExpose; eventExpose;
eventKeyDown; eventKeyDown;
eventKeyUp; eventKeyUp;
...@@ -34,299 +35,301 @@ const ( ...@@ -34,299 +35,301 @@ const (
// A key represents a key on a keyboard. // A key represents a key on a keyboard.
type key uint16 type key uint16
const ( const (
keyUnknown = 0; keyUnknown = 0;
keyFirst = 0; keyFirst = 0;
keyBackspace = 8; keyBackspace = 8;
keyTab = 9; keyTab = 9;
keyClear = 12; keyClear = 12;
keyReturn = 13; keyReturn = 13;
keyPause = 19; keyPause = 19;
keyEscape = 27; keyEscape = 27;
keySpace = 32; keySpace = 32;
keyExclaim = 33; keyExclaim = 33;
keyQuotedbl = 34; keyQuotedbl = 34;
keyHash = 35; keyHash = 35;
keyDollar = 36; keyDollar = 36;
keyAmpersand = 38; keyAmpersand = 38;
keyQuote = 39; keyQuote = 39;
keyLeftparen = 40; keyLeftparen = 40;
keyRightparen = 41; keyRightparen = 41;
keyAsterisk = 42; keyAsterisk = 42;
keyPlus = 43; keyPlus = 43;
keyComma = 44; keyComma = 44;
keyMinus = 45; keyMinus = 45;
keyPeriod = 46; keyPeriod = 46;
keySlash = 47; keySlash = 47;
key0 = 48; key0 = 48;
key1 = 49; key1 = 49;
key2 = 50; key2 = 50;
key3 = 51; key3 = 51;
key4 = 52; key4 = 52;
key5 = 53; key5 = 53;
key6 = 54; key6 = 54;
key7 = 55; key7 = 55;
key8 = 56; key8 = 56;
key9 = 57; key9 = 57;
keyColon = 58; keyColon = 58;
keySemicolon = 59; keySemicolon = 59;
keyLess = 60; keyLess = 60;
keyEquals = 61; keyEquals = 61;
keyGreater = 62; keyGreater = 62;
keyQuestion = 63; keyQuestion = 63;
keyAt = 64; keyAt = 64;
keyLeftbracket = 91; keyLeftbracket = 91;
keyBackslash = 92; keyBackslash = 92;
keyRightbracket = 93; keyRightbracket = 93;
keyCaret = 94; keyCaret = 94;
keyUnderscore = 95; keyUnderscore = 95;
keyBackquote = 96; keyBackquote = 96;
keyA = 97; keyA = 97;
keyB = 98; keyB = 98;
keyC = 99; keyC = 99;
keyD = 100; keyD = 100;
keyE = 101; keyE = 101;
keyF = 102; keyF = 102;
keyG = 103; keyG = 103;
keyH = 104; keyH = 104;
keyI = 105; keyI = 105;
keyJ = 106; keyJ = 106;
keyK = 107; keyK = 107;
keyL = 108; keyL = 108;
keyM = 109; keyM = 109;
keyN = 110; keyN = 110;
keyO = 111; keyO = 111;
keyP = 112; keyP = 112;
keyQ = 113; keyQ = 113;
keyR = 114; keyR = 114;
keyS = 115; keyS = 115;
keyT = 116; keyT = 116;
keyU = 117; keyU = 117;
keyV = 118; keyV = 118;
keyW = 119; keyW = 119;
keyX = 120; keyX = 120;
keyY = 121; keyY = 121;
keyZ = 122; keyZ = 122;
keyDelete = 127; keyDelete = 127;
keyWorld0 = 160; keyWorld0 = 160;
keyWorld1 = 161; keyWorld1 = 161;
keyWorld2 = 162; keyWorld2 = 162;
keyWorld3 = 163; keyWorld3 = 163;
keyWorld4 = 164; keyWorld4 = 164;
keyWorld5 = 165; keyWorld5 = 165;
keyWorld6 = 166; keyWorld6 = 166;
keyWorld7 = 167; keyWorld7 = 167;
keyWorld8 = 168; keyWorld8 = 168;
keyWorld9 = 169; keyWorld9 = 169;
keyWorld10 = 170; keyWorld10 = 170;
keyWorld11 = 171; keyWorld11 = 171;
keyWorld12 = 172; keyWorld12 = 172;
keyWorld13 = 173; keyWorld13 = 173;
keyWorld14 = 174; keyWorld14 = 174;
keyWorld15 = 175; keyWorld15 = 175;
keyWorld16 = 176; keyWorld16 = 176;
keyWorld17 = 177; keyWorld17 = 177;
keyWorld18 = 178; keyWorld18 = 178;
keyWorld19 = 179; keyWorld19 = 179;
keyWorld20 = 180; keyWorld20 = 180;
keyWorld21 = 181; keyWorld21 = 181;
keyWorld22 = 182; keyWorld22 = 182;
keyWorld23 = 183; keyWorld23 = 183;
keyWorld24 = 184; keyWorld24 = 184;
keyWorld25 = 185; keyWorld25 = 185;
keyWorld26 = 186; keyWorld26 = 186;
keyWorld27 = 187; keyWorld27 = 187;
keyWorld28 = 188; keyWorld28 = 188;
keyWorld29 = 189; keyWorld29 = 189;
keyWorld30 = 190; keyWorld30 = 190;
keyWorld31 = 191; keyWorld31 = 191;
keyWorld32 = 192; keyWorld32 = 192;
keyWorld33 = 193; keyWorld33 = 193;
keyWorld34 = 194; keyWorld34 = 194;
keyWorld35 = 195; keyWorld35 = 195;
keyWorld36 = 196; keyWorld36 = 196;
keyWorld37 = 197; keyWorld37 = 197;
keyWorld38 = 198; keyWorld38 = 198;
keyWorld39 = 199; keyWorld39 = 199;
keyWorld40 = 200; keyWorld40 = 200;
keyWorld41 = 201; keyWorld41 = 201;
keyWorld42 = 202; keyWorld42 = 202;
keyWorld43 = 203; keyWorld43 = 203;
keyWorld44 = 204; keyWorld44 = 204;
keyWorld45 = 205; keyWorld45 = 205;
keyWorld46 = 206; keyWorld46 = 206;
keyWorld47 = 207; keyWorld47 = 207;
keyWorld48 = 208; keyWorld48 = 208;
keyWorld49 = 209; keyWorld49 = 209;
keyWorld50 = 210; keyWorld50 = 210;
keyWorld51 = 211; keyWorld51 = 211;
keyWorld52 = 212; keyWorld52 = 212;
keyWorld53 = 213; keyWorld53 = 213;
keyWorld54 = 214; keyWorld54 = 214;
keyWorld55 = 215; keyWorld55 = 215;
keyWorld56 = 216; keyWorld56 = 216;
keyWorld57 = 217; keyWorld57 = 217;
keyWorld58 = 218; keyWorld58 = 218;
keyWorld59 = 219; keyWorld59 = 219;
keyWorld60 = 220; keyWorld60 = 220;
keyWorld61 = 221; keyWorld61 = 221;
keyWorld62 = 222; keyWorld62 = 222;
keyWorld63 = 223; keyWorld63 = 223;
keyWorld64 = 224; keyWorld64 = 224;
keyWorld65 = 225; keyWorld65 = 225;
keyWorld66 = 226; keyWorld66 = 226;
keyWorld67 = 227; keyWorld67 = 227;
keyWorld68 = 228; keyWorld68 = 228;
keyWorld69 = 229; keyWorld69 = 229;
keyWorld70 = 230; keyWorld70 = 230;
keyWorld71 = 231; keyWorld71 = 231;
keyWorld72 = 232; keyWorld72 = 232;
keyWorld73 = 233; keyWorld73 = 233;
keyWorld74 = 234; keyWorld74 = 234;
keyWorld75 = 235; keyWorld75 = 235;
keyWorld76 = 236; keyWorld76 = 236;
keyWorld77 = 237; keyWorld77 = 237;
keyWorld78 = 238; keyWorld78 = 238;
keyWorld79 = 239; keyWorld79 = 239;
keyWorld80 = 240; keyWorld80 = 240;
keyWorld81 = 241; keyWorld81 = 241;
keyWorld82 = 242; keyWorld82 = 242;
keyWorld83 = 243; keyWorld83 = 243;
keyWorld84 = 244; keyWorld84 = 244;
keyWorld85 = 245; keyWorld85 = 245;
keyWorld86 = 246; keyWorld86 = 246;
keyWorld87 = 247; keyWorld87 = 247;
keyWorld88 = 248; keyWorld88 = 248;
keyWorld89 = 249; keyWorld89 = 249;
keyWorld90 = 250; keyWorld90 = 250;
keyWorld91 = 251; keyWorld91 = 251;
keyWorld92 = 252; keyWorld92 = 252;
keyWorld93 = 253; keyWorld93 = 253;
keyWorld94 = 254; keyWorld94 = 254;
keyWorld95 = 255; keyWorld95 = 255;
// Numeric keypad // Numeric keypad
keyKp0 = 256; keyKp0 = 256;
keyKp1 = 257; keyKp1 = 257;
keyKp2 = 258; keyKp2 = 258;
keyKp3 = 259; keyKp3 = 259;
keyKp4 = 260; keyKp4 = 260;
keyKp5 = 261; keyKp5 = 261;
keyKp6 = 262; keyKp6 = 262;
keyKp7 = 263; keyKp7 = 263;
keyKp8 = 264; keyKp8 = 264;
keyKp9 = 265; keyKp9 = 265;
keyKpPeriod = 266; keyKpPeriod = 266;
keyKpDivide = 267; keyKpDivide = 267;
keyKpMultiply = 268; keyKpMultiply = 268;
keyKpMinus = 269; keyKpMinus = 269;
keyKpPlus = 270; keyKpPlus = 270;
keyKpEnter = 271; keyKpEnter = 271;
keyKpEquals = 272; keyKpEquals = 272;
// Arrow & insert/delete pad // Arrow & insert/delete pad
keyUp = 273; keyUp = 273;
keyDown = 274; keyDown = 274;
keyRight = 275; keyRight = 275;
keyLeft = 276; keyLeft = 276;
keyInsert = 277; keyInsert = 277;
keyHome = 278; keyHome = 278;
keyEnd = 279; keyEnd = 279;
keyPageup = 280; keyPageup = 280;
keyPagedown = 281; keyPagedown = 281;
// Function keys // Function keys
keyF1 = 282; keyF1 = 282;
keyF2 = 283; keyF2 = 283;
keyF3 = 284; keyF3 = 284;
keyF4 = 285; keyF4 = 285;
keyF5 = 286; keyF5 = 286;
keyF6 = 287; keyF6 = 287;
keyF7 = 288; keyF7 = 288;
keyF8 = 289; keyF8 = 289;
keyF9 = 290; keyF9 = 290;
keyF10 = 291; keyF10 = 291;
keyF11 = 292; keyF11 = 292;
keyF12 = 293; keyF12 = 293;
keyF13 = 294; keyF13 = 294;
keyF14 = 295; keyF14 = 295;
keyF15 = 296; keyF15 = 296;
// Modifier keys // Modifier keys
keyNumlock = 300; keyNumlock = 300;
keyCapslock = 301; keyCapslock = 301;
keyScrollock = 302; keyScrollock = 302;
keyRshift = 303; keyRshift = 303;
keyLshift = 304; keyLshift = 304;
keyRctrl = 305; keyRctrl = 305;
keyLctrl = 306; keyLctrl = 306;
keyRalt = 307; keyRalt = 307;
keyLalt = 308; keyLalt = 308;
keyRmeta = 309; keyRmeta = 309;
keyLmeta = 310; keyLmeta = 310;
keyLsuper = 311; keyLsuper = 311;
keyRsuper = 312; keyRsuper = 312;
keyMode = 313; keyMode = 313;
keyCompose = 314; keyCompose = 314;
// Misc keys // Misc keys
keyHelp = 315; keyHelp = 315;
keyPrint = 316; keyPrint = 316;
keySysreq = 317; keySysreq = 317;
keyBreak = 318; keyBreak = 318;
keyMenu = 319; keyMenu = 319;
keyPower = 320; keyPower = 320;
keyEuro = 321; keyEuro = 321;
keyUndo = 322; keyUndo = 322;
// Add any other keys here // Add any other keys here
keyLast keyLast;
) )
// A keymod is a set of bit flags // A keymod is a set of bit flags
type keymod uint16 type keymod uint16
const ( const (
keymodNone = 0x0000; keymodNone = 0x0000;
keymodLshift= 0x0001; keymodLshift = 0x0001;
keymodRshift= 0x0002; keymodRshift = 0x0002;
keymodLctrl = 0x0040; keymodLctrl = 0x0040;
keymodRctrl = 0x0080; keymodRctrl = 0x0080;
keymodLalt = 0x0100; keymodLalt = 0x0100;
keymodRalt = 0x0200; keymodRalt = 0x0200;
keymodLmeta = 0x0400; keymodLmeta = 0x0400;
keymodRmeta = 0x0800; keymodRmeta = 0x0800;
keymodNum = 0x1000; keymodNum = 0x1000;
keymodCaps = 0x2000; keymodCaps = 0x2000;
keymodMode = 0x4000; keymodMode = 0x4000;
keymodReserved = 0x8000 keymodReserved = 0x8000;
) )
const ( const (
mouseButtonLeft = 1; mouseButtonLeft = 1;
mouseButtonMiddle = 2; mouseButtonMiddle = 2;
mouseButtonRight = 3; mouseButtonRight = 3;
mouseScrollUp = 4; mouseScrollUp = 4;
mouseScrollDown = 5 mouseScrollDown = 5;
) )
const ( const (
mouseStateLeftButtonPressed = 1; mouseStateLeftButtonPressed = 1;
mouseStateMiddleButtonPressed = 2; mouseStateMiddleButtonPressed = 2;
mouseStateRightButtonPressed = 4 mouseStateRightButtonPressed = 4;
) )
const ( const (
activeMouse = 1; // mouse leaving/entering activeMouse = 1; // mouse leaving/entering
activeInputFocus = 2; // input focus lost/restored activeInputFocus = 2; // input focus lost/restored
activeApplication = 4 // application minimized/restored activeApplication = 4; // application minimized/restored
) )
const maxEventBytes = 64 const maxEventBytes = 64
type activeEvent struct { type activeEvent struct {
EventType eventType; EventType eventType;
Gain uint8; Gain uint8;
State uint8; State uint8;
} }
type exposeEvent struct { type exposeEvent struct {
...@@ -334,48 +337,47 @@ type exposeEvent struct { ...@@ -334,48 +337,47 @@ type exposeEvent struct {
} }
type keyboardEvent struct { type keyboardEvent struct {
EventType eventType; EventType eventType;
Device uint8; Device uint8;
State uint8; State uint8;
Pad uint8; Pad uint8;
ScanCode uint8; ScanCode uint8;
Pad1 uint8; Pad1 uint8;
Key key; Key key;
Mod keymod; Mod keymod;
Unicode uint16; Unicode uint16;
} }
type mouseMotionEvent struct { type mouseMotionEvent struct {
EventType eventType; EventType eventType;
Device uint8; Device uint8;
Buttons uint8; Buttons uint8;
Pad uint8; Pad uint8;
X uint16; X uint16;
Y uint16; Y uint16;
Xrel int16; Xrel int16;
Yrel int16; Yrel int16;
} }
type mouseButtonEvent struct { type mouseButtonEvent struct {
EventType eventType; EventType eventType;
Device uint8; Device uint8;
Button uint8; Button uint8;
State uint8; State uint8;
X uint16; X uint16;
Y uint16; Y uint16;
} }
type quitEvent struct { type quitEvent struct {
EventType eventType; EventType eventType;
} }
type syncEvent struct { type syncEvent struct{}
}
type event interface { type event interface{}
}
type reader []byte type reader []byte
func (r *reader) Read(p []byte) (n int, err os.Error) { func (r *reader) Read(p []byte) (n int, err os.Error) {
b := *r; b := *r;
if len(b) == 0 && len(p) > 0 { if len(b) == 0 && len(p) > 0 {
...@@ -390,12 +392,12 @@ func (w *Window) readEvents() { ...@@ -390,12 +392,12 @@ func (w *Window) readEvents() {
buf := make([]byte, maxEventBytes); buf := make([]byte, maxEventBytes);
clean := false; clean := false;
var ( var (
ea *activeEvent; ea *activeEvent;
ee *exposeEvent; ee *exposeEvent;
ke *keyboardEvent; ke *keyboardEvent;
mme *mouseMotionEvent; mme *mouseMotionEvent;
mbe *mouseButtonEvent; mbe *mouseButtonEvent;
qe *quitEvent; qe *quitEvent;
) )
var m draw.Mouse; var m draw.Mouse;
for { for {
...@@ -439,7 +441,7 @@ func (w *Window) readEvents() { ...@@ -439,7 +441,7 @@ func (w *Window) readEvents() {
// log.Stdoutf("%#v\n", e); // log.Stdoutf("%#v\n", e);
switch buf[0] { switch buf[0] {
case eventExpose: case eventExpose:
w.resizec <- true w.resizec <- true;
case eventKeyDown: case eventKeyDown:
w.kbdc <- int(ke.Key); w.kbdc <- int(ke.Key);
case eventKeyUp: case eventKeyUp:
...@@ -454,14 +456,14 @@ func (w *Window) readEvents() { ...@@ -454,14 +456,14 @@ func (w *Window) readEvents() {
m.X = int(mbe.X); m.X = int(mbe.X);
m.Y = int(mbe.Y); m.Y = int(mbe.Y);
// TODO(rsc): Remove uint cast once 8g bug is fixed. // TODO(rsc): Remove uint cast once 8g bug is fixed.
m.Buttons |= 1<<uint(mbe.Button-1); m.Buttons |= 1<<uint(mbe.Button - 1);
m.Nsec = time.Nanoseconds(); m.Nsec = time.Nanoseconds();
_ = w.mousec <- m; _ = w.mousec <- m;
case eventMouseButtonUp: case eventMouseButtonUp:
m.X = int(mbe.X); m.X = int(mbe.X);
m.Y = int(mbe.Y); m.Y = int(mbe.Y);
// TODO(rsc): Remove uint cast once 8g bug is fixed. // TODO(rsc): Remove uint cast once 8g bug is fixed.
m.Buttons &^= 1<<uint(mbe.Button-1); m.Buttons &^= 1<<uint(mbe.Button - 1);
m.Nsec = time.Nanoseconds(); m.Nsec = time.Nanoseconds();
_ = w.mousec <- m; _ = w.mousec <- m;
case eventQuit: case eventQuit:
......
...@@ -16,11 +16,11 @@ import ( ...@@ -16,11 +16,11 @@ import (
// linear slice or as a two-dimensional slice of slices. // linear slice or as a two-dimensional slice of slices.
// Image implements image.Image. // Image implements image.Image.
type Image struct { type Image struct {
Linear []Color; Linear []Color;
Pixel [][]Color; Pixel [][]Color;
} }
var _ image.Image = (*Image)(nil); var _ image.Image = (*Image)(nil)
func (m *Image) ColorModel() image.ColorModel { func (m *Image) ColorModel() image.ColorModel {
return ColorModel; return ColorModel;
...@@ -62,18 +62,19 @@ func newImage(dx, dy int, linear []Color) *Image { ...@@ -62,18 +62,19 @@ func newImage(dx, dy int, linear []Color) *Image {
// A Color represents a Native Client color value, // A Color represents a Native Client color value,
// a 32-bit R, G, B, A value packed as 0xAARRGGBB. // a 32-bit R, G, B, A value packed as 0xAARRGGBB.
type Color uint32 type Color uint32
func (p Color) RGBA() (r, g, b, a uint32) { func (p Color) RGBA() (r, g, b, a uint32) {
x := uint32(p); x := uint32(p);
a = x>>24; a = x>>24;
a |= a<<8; a |= a<<8;
a |= a<<16; a |= a<<16;
r = (x>>16) & 0xFF; r = (x>>16)&0xFF;
r |= r<<8; r |= r<<8;
r |= r<<16; r |= r<<16;
g = (x>>8) & 0xFF; g = (x>>8)&0xFF;
g |= g<<8; g |= g<<8;
g |= g<<16; g |= g<<16;
b = x & 0xFF; b = x&0xFF;
b |= b<<8; b |= b<<8;
b |= b<<16; b |= b<<16;
return; return;
...@@ -91,5 +92,4 @@ func toColor(color image.Color) image.Color { ...@@ -91,5 +92,4 @@ func toColor(color image.Color) image.Color {
} }
// ColorModel is the color model corresponding to the Native Client Color. // ColorModel is the color model corresponding to the Native Client Color.
var ColorModel = image.ColorModelFunc(toColor); var ColorModel = image.ColorModelFunc(toColor)
...@@ -14,30 +14,30 @@ import ( ...@@ -14,30 +14,30 @@ import (
// A Client represents the client side of an SRPC connection. // A Client represents the client side of an SRPC connection.
type Client struct { type Client struct {
fd int; // fd to server fd int; // fd to server
r msgReceiver; r msgReceiver;
s msgSender; s msgSender;
service map[string]srv; // services by name service map[string]srv; // services by name
out chan *msg; // send to out to write to connection out chan *msg; // send to out to write to connection
mu sync.Mutex; // protects pending, idGen mu sync.Mutex; // protects pending, idGen
pending map[uint64]*RPC; pending map[uint64]*RPC;
idGen uint64; // generator for request IDs idGen uint64; // generator for request IDs
} }
// A srv is a single method that the server offers. // A srv is a single method that the server offers.
type srv struct { type srv struct {
num uint32; // method number num uint32; // method number
fmt string; // argument format fmt string; // argument format
} }
// An RPC represents a single RPC issued by a client. // An RPC represents a single RPC issued by a client.
type RPC struct { type RPC struct {
Ret []interface{}; // Return values Ret []interface{}; // Return values
Done chan *RPC; // Channel where notification of done arrives Done chan *RPC; // Channel where notification of done arrives
Errno Errno; // Status code Errno Errno; // Status code
c *Client; c *Client;
id uint64; // request id id uint64; // request id
} }
// NewClient allocates a new client using the file descriptor fd. // NewClient allocates a new client using the file descriptor fd.
...@@ -53,8 +53,8 @@ func NewClient(fd int) (c *Client, err os.Error) { ...@@ -53,8 +53,8 @@ func NewClient(fd int) (c *Client, err os.Error) {
m := &msg{ m := &msg{
protocol: protocol, protocol: protocol,
isReq: true, isReq: true,
Ret: []interface{}{ []byte(nil) }, Ret: []interface{}{[]byte(nil)},
Size: []int{ 4000 }, Size: []int{4000},
}; };
m.packRequest(); m.packRequest();
c.s.send(m); c.s.send(m);
...@@ -72,7 +72,7 @@ func NewClient(fd int) (c *Client, err os.Error) { ...@@ -72,7 +72,7 @@ func NewClient(fd int) (c *Client, err os.Error) {
if i < 0 { if i < 0 {
continue; continue;
} }
c.service[string(line[0:i])] = srv{uint32(n), string(line[i+1:len(line)])}; c.service[string(line[0:i])] = srv{uint32(n), string(line[i+1 : len(line)])};
} }
c.out = make(chan *msg); c.out = make(chan *msg);
...@@ -159,11 +159,11 @@ func (r *RPC) Start(name string, arg []interface{}) { ...@@ -159,11 +159,11 @@ func (r *RPC) Start(name string, arg []interface{}) {
for srv.fmt[i] != ':' { for srv.fmt[i] != ':' {
i++; i++;
} }
fmt := srv.fmt[i+1:len(srv.fmt)]; fmt := srv.fmt[i+1 : len(srv.fmt)];
// Now the return prototypes. // Now the return prototypes.
m.Ret = make([]interface{}, len(fmt) - i); m.Ret = make([]interface{}, len(fmt)-i);
m.Size = make([]int, len(fmt) - i); m.Size = make([]int, len(fmt)-i);
for i := 0; i < len(fmt); i++ { for i := 0; i < len(fmt); i++ {
switch fmt[i] { switch fmt[i] {
default: default:
......
...@@ -17,8 +17,9 @@ import ( ...@@ -17,8 +17,9 @@ import (
// An Errno is an SRPC status code. // An Errno is an SRPC status code.
type Errno uint32 type Errno uint32
const ( const (
OK Errno = 256 + iota; OK Errno = 256+iota;
ErrBreak; ErrBreak;
ErrMessageTruncated; ErrMessageTruncated;
ErrNoMemory; ErrNoMemory;
...@@ -33,27 +34,27 @@ const ( ...@@ -33,27 +34,27 @@ const (
ErrAppError; ErrAppError;
) )
var errstr = [...]string { var errstr = [...]string{
OK-OK: "ok", OK-OK: "ok",
ErrBreak-OK: "break", ErrBreak-OK: "break",
ErrMessageTruncated-OK: "message truncated", ErrMessageTruncated - OK: "message truncated",
ErrNoMemory-OK: "out of memory", ErrNoMemory - OK: "out of memory",
ErrProtocolMismatch-OK: "protocol mismatch", ErrProtocolMismatch - OK: "protocol mismatch",
ErrBadRPCNumber-OK: "invalid RPC method number", ErrBadRPCNumber - OK: "invalid RPC method number",
ErrBadArgType-OK: "unexpected argument type", ErrBadArgType - OK: "unexpected argument type",
ErrTooFewArgs-OK: "too few arguments", ErrTooFewArgs - OK: "too few arguments",
ErrTooManyArgs-OK: "too many arguments", ErrTooManyArgs - OK: "too many arguments",
ErrInArgTypeMismatch-OK: "input argument type mismatch", ErrInArgTypeMismatch - OK: "input argument type mismatch",
ErrOutArgTypeMismatch-OK: "output argument type mismatch", ErrOutArgTypeMismatch - OK: "output argument type mismatch",
ErrInternalError-OK: "internal error", ErrInternalError - OK: "internal error",
ErrAppError-OK: "application error", ErrAppError - OK: "application error",
} }
func (e Errno) String() string { func (e Errno) String() string {
if e < OK || int(e-OK) >= len(errstr) { if e < OK || int(e-OK) >= len(errstr) {
return "Errno(" + strconv.Itoa64(int64(e)) + ")" return "Errno(" + strconv.Itoa64(int64(e)) + ")";
} }
return errstr[e - OK]; return errstr[e-OK];
} }
// A *msgHdr is the data argument to the imc_recvmsg // A *msgHdr is the data argument to the imc_recvmsg
...@@ -61,45 +62,45 @@ func (e Errno) String() string { ...@@ -61,45 +62,45 @@ func (e Errno) String() string {
// counts trusted by the system calls, the data structure is unsafe // counts trusted by the system calls, the data structure is unsafe
// to expose to package clients. // to expose to package clients.
type msgHdr struct { type msgHdr struct {
iov *iov; iov *iov;
niov int32; niov int32;
desc *int32; desc *int32;
ndesc int32; ndesc int32;
flags uint32; flags uint32;
} }
// A single region for I/O. Just as unsafe as msgHdr. // A single region for I/O. Just as unsafe as msgHdr.
type iov struct { type iov struct {
base *byte; base *byte;
len int32; len int32;
} }
// A msg is the Go representation of a message. // A msg is the Go representation of a message.
type msg struct { type msg struct {
rdata []byte; // data being consumed during message parsing rdata []byte; // data being consumed during message parsing
rdesc []int32; // file descriptors being consumed during message parsing rdesc []int32; // file descriptors being consumed during message parsing
wdata []byte; // data being generated when replying wdata []byte; // data being generated when replying
// parsed version of message // parsed version of message
protocol uint32; protocol uint32;
requestId uint64; requestId uint64;
isReq bool; isReq bool;
rpcNumber uint32; rpcNumber uint32;
gotHeader bool; gotHeader bool;
status Errno; // error code sent in response status Errno; // error code sent in response
Arg []interface{}; // method arguments Arg []interface{}; // method arguments
Ret []interface{}; // method results Ret []interface{}; // method results
Size []int; // max sizes for arrays in method results Size []int; // max sizes for arrays in method results
fmt string; // accumulated format string of arg+":"+ret fmt string; // accumulated format string of arg+":"+ret
} }
// A msgReceiver receives messages from a file descriptor. // A msgReceiver receives messages from a file descriptor.
type msgReceiver struct { type msgReceiver struct {
fd int; fd int;
data [128*1024]byte; data [128*1024]byte;
desc [8]int32; desc [8]int32;
hdr msgHdr; hdr msgHdr;
iov iov; iov iov;
} }
func (r *msgReceiver) recv() (*msg, os.Error) { func (r *msgReceiver) recv() (*msg, os.Error) {
...@@ -136,10 +137,9 @@ func (r *msgReceiver) recv() (*msg, os.Error) { ...@@ -136,10 +137,9 @@ func (r *msgReceiver) recv() (*msg, os.Error) {
// A msgSender sends messages on a file descriptor. // A msgSender sends messages on a file descriptor.
type msgSender struct { type msgSender struct {
fd int; fd int;
hdr msgHdr; hdr msgHdr;
iov iov; iov iov;
} }
func (s *msgSender) send(m *msg) os.Error { func (s *msgSender) send(m *msg) os.Error {
...@@ -222,8 +222,8 @@ func (m *msg) grow(n int) []byte { ...@@ -222,8 +222,8 @@ func (m *msg) grow(n int) []byte {
bytes.Copy(a, m.wdata); bytes.Copy(a, m.wdata);
m.wdata = a; m.wdata = a;
} }
m.wdata = m.wdata[0:i+n]; m.wdata = m.wdata[0 : i+n];
return m.wdata[i:i+n]; return m.wdata[i : i+n];
} }
func (m *msg) wuint8(x uint8) { func (m *msg) wuint8(x uint8) {
...@@ -529,4 +529,3 @@ func (m *msg) packResponse() { ...@@ -529,4 +529,3 @@ func (m *msg) packResponse() {
m.wuint32(uint32(len(m.Ret))); m.wuint32(uint32(len(m.Ret)));
m.packValues(m.Ret); m.packValues(m.Ret);
} }
...@@ -22,13 +22,13 @@ import ( ...@@ -22,13 +22,13 @@ import (
// It reads arguments from arg, checks size for array limits, // It reads arguments from arg, checks size for array limits,
// writes return values to ret, and returns an Errno status code. // writes return values to ret, and returns an Errno status code.
type Handler interface { type Handler interface {
Run(arg, ret []interface{}, size []int) Errno Run(arg, ret []interface{}, size []int) Errno;
} }
type method struct { type method struct {
name string; name string;
fmt string; fmt string;
handler Handler; handler Handler;
} }
var rpcMethod []method var rpcMethod []method
...@@ -61,7 +61,7 @@ func Add(name, fmt string, handler Handler) { ...@@ -61,7 +61,7 @@ func Add(name, fmt string, handler Handler) {
} }
rpcMethod = a; rpcMethod = a;
} }
rpcMethod = rpcMethod[0:n+1]; rpcMethod = rpcMethod[0 : n+1];
rpcMethod[n] = method{name, fmt, handler}; rpcMethod[n] = method{name, fmt, handler};
} }
...@@ -175,7 +175,7 @@ func getFd() (fd int, err os.Error) { ...@@ -175,7 +175,7 @@ func getFd() (fd int, err os.Error) {
// Enabled returns true if SRPC is enabled in the Native Client runtime. // Enabled returns true if SRPC is enabled in the Native Client runtime.
func Enabled() bool { func Enabled() bool {
_, err:= getFd(); _, err := getFd();
return err == nil; return err == nil;
} }
...@@ -201,4 +201,3 @@ func (serviceDiscovery) Run(arg, ret []interface{}, size []int) Errno { ...@@ -201,4 +201,3 @@ func (serviceDiscovery) Run(arg, ret []interface{}, size []int) Errno {
func init() { func init() {
Add("service_discovery", ":C", serviceDiscovery{}); Add("service_discovery", ":C", serviceDiscovery{});
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment