|
@@ -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
|
|
|
|
+ }
|
|
|
|
+}
|