added dummy client code, moved the lib stuffs into its own directory
3 files changed, 96 insertions(+), 0 deletions(-)

M gorcon.go => gorcon/gorcon.go
M gorcon_test.go => gorcon/gorcon_test.go
A => main.go
M gorcon.go => gorcon/gorcon.go +0 -0

        
M gorcon_test.go => gorcon/gorcon_test.go +0 -0

        
A => main.go +96 -0
@@ 0,0 1,96 @@ 
+package main
+
+import "fmt"
+import "log"
+import "net"
+import "./gorcon" // Relative imports! Woo hoo!
+import "io"
+import "bufio"
+import "encoding/binary"
+
+var _ = fmt.Println
+var _ = log.Println
+var _ = io.EOF
+
+type response struct {
+    Id  int32
+    Type gorcon.CmdType
+    Body []byte
+}
+
+func readResp(r io.Reader, ) (*response, error) {
+    var size int32
+    if err := binary.Read(r, binary.LittleEndian, &size); err != nil {
+        return nil, err
+    }
+    log.Println("size: ", size)
+    //if size < 10 {
+    //    return nil, "invalid response data, oh noes!"
+    //}
+
+    var id int32
+    if err := binary.Read(r, binary.LittleEndian, &id); err != nil {
+        return nil, err
+    }
+
+    var cmdtype gorcon.CmdType
+    if err := binary.Read(r, binary.LittleEndian, &cmdtype); err != nil {
+        return nil, err
+    }
+
+    body := make([]byte, size - 10)
+    if err := binary.Read(r, binary.LittleEndian, body); err != nil {
+        return nil, err
+    }
+
+    var end int16
+    err := binary.Read(r, binary.LittleEndian, &end)
+    if err != nil {
+        return nil, err
+    }
+
+    return &response{
+        Id: id,
+        Type: cmdtype,
+        Body: body,
+    }, nil
+}
+
+func main() {
+    log.Println("Hello, world!")
+
+    conn, err := net.Dial("tcp", "74.91.117.120:27015")
+    if err != nil {
+        log.Panicln(err)
+    }
+
+    done := make(chan bool)
+
+    go func() {
+        r := bufio.NewReader(conn)
+        for {
+            resp, err := readResp(r)
+            if err != nil {
+                if err == io.EOF {
+                    return
+                }
+                log.Panicln(err)
+            }
+            log.Println("<<< ", resp)
+        }
+        defer func() {
+            done<-true
+        }()
+    }()
+
+    log.Println(conn)
+
+    err = gorcon.WriteCommandString(conn, gorcon.SERVERDATA_AUTH, "passwrd")
+    if err != nil {
+        log.Panicln(err)
+    }
+
+    log.Println("waiting...")
+    <-done
+    log.Println("leaving...")
+}