package door

import (
	"fmt"
	"syscall"
)

func Writer(handle syscall.Handle, writerChannel *chan string) {
	for output := range *writerChannel {
		l := uint32(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)
		}

		if (err != nil) || (l != DataWrite) {
			close(*writerChannel)
			break
		}
	}
}