Bladeren bron

Merging in Windows support.

Steve Thielemann 3 jaren geleden
bovenliggende
commit
bfdea75372
4 gewijzigde bestanden met toevoegingen van 60 en 17 verwijderingen
  1. 0 17
      door/door_linux.go
  2. 0 0
      door/input_linux.go
  3. 23 0
      door/write_linux.go
  4. 37 0
      door/write_windows.go

+ 0 - 17
door/door.go → door/door_linux.go

@@ -312,23 +312,6 @@ func (d *Door) Init(doorname string) {
 	}
 }
 
-// Write string to client.
-func (d *Door) Write(output string) {
-	if d.Disconnected {
-		return
-	}
-	buffer := []byte(output)
-	n, err := syscall.Write(d.WRITEFD, buffer)
-	if err != nil {
-		log.Println("Write error/HANGUP?", n)
-		d.Disconnected = true
-	}
-	// No, this isn't it.  The # of bytes in buffer == bytes written.
-	if n != len(buffer) {
-		log.Printf("Write fail: %d != %d\n", len(buffer), n)
-	}
-}
-
 func Goto(x int, y int) string {
 	return fmt.Sprintf("\x1b[%d;%dH", y, x)
 }

+ 0 - 0
door/input.go → door/input_linux.go


+ 23 - 0
door/write_linux.go

@@ -0,0 +1,23 @@
+package door
+
+import (
+	"fmt"
+	"syscall"
+)
+
+// Write string to client.
+func (d *Door) Write(output string) {
+	if d.Disconnected {
+		return
+	}
+	buffer := []byte(output)
+	n, err := syscall.Write(d.WRITEFD, buffer)
+	if err != nil {
+		fmt.Println("Write error/HANGUP?", n)
+		d.Disconnected = true
+	}
+	// No, this isn't it.  The # of bytes in buffer == bytes written.
+	if n != len(buffer) {
+		fmt.Printf("Write fail: %d != %d\n", len(buffer), n)
+	}
+}

+ 37 - 0
door/write_windows.go

@@ -0,0 +1,37 @@
+package door
+
+import (
+	"fmt"
+	"syscall"
+)
+
+func Write(handle syscall.Handle, output string) {
+	l := len(output)
+	buffer := []byte(output)
+	WSA_Buffer := syscall.WSABuf{Len: uint32(l), Buf: &buffer[0]}
+	UitnZero_1 := uint32(0)
+	DataWrite := uint32(0)
+	err := syscall.WSASend(handle, &WSA_Buffer, 1, &DataWrite, UitnZero_1, nil, nil)
+	if err != nil {
+		fmt.Printf("write: %d bytes, error: %#v\n", DataWrite, err)
+	}
+}
+
+// Write string to client.
+func (d *Door) Write(output string) {
+	if d.Disconnected {
+		return
+	}
+
+	handle := syscall.Handle(d.WRITEFD)
+	l := len(output)
+	buffer := []byte(output)
+	WSA_Buffer := syscall.WSABuf{Len: uint32(l), Buf: &buffer[0]}
+	UitnZero_1 := uint32(0)
+	DataWrite := uint32(0)
+	err := syscall.WSASend(handle, &WSA_Buffer, 1, &DataWrite, UitnZero_1, nil, nil)
+	if err != nil {
+		fmt.Printf("write: %d bytes, error: %#v\n", DataWrite, err)
+		d.Disconnected = true
+	}
+}