package main import ( "fmt" "io" "os" "remote-mic/audio" "remote-mic/networking" "time" ) func pulsectlExample() { pulsectl := audio.NewPulsectl() err := pulsectl.LoadPipeSourceModule() if err != nil { panic(err) } time.Sleep(10 * time.Second) pulsectl.UnloadPipeSourceModule() } func micStreamExample() { mic, err := audio.NewMicrophone() if err != nil { panic(err) } err = mic.Start() if err != nil { panic(err) } defer mic.Stop() for { io.Copy(os.Stdout, mic.AudioStream()) } } func usage() { fmt.Println("Usage: remote-mic ") os.Exit(1) } func listen() { fmt.Print("Listening for connection on port 8080... ") conn, err := networking.ListenAndAcceptTCP(":8080") if err != nil { panic(err) } reader := networking.NewAsyncReader(conn) defer reader.Close() fmt.Println("Connection accepted!") recvChan := reader.RecvChan() for { buf, open := <-recvChan if !open { break } fmt.Printf("Bytes read: %d\n", len(buf)) fmt.Printf("Buf: %v\n", buf) fmt.Printf("%v\n", string(buf)) } } func stream() { conn, err := networking.ConnectTCP("localhost:8080") if err != nil { panic(err) } writer := networking.NewAsyncWriter(conn) defer writer.Close() c := writer.SendChan() c <- []byte("cicasajtok") fmt.Println("Exiting.") } func main() { if len(os.Args) < 2 { usage() } cmd := os.Args[1] switch cmd { case "listen": listen() case "stream": stream() default: usage() } }