diff --git a/listen.go b/listen.go new file mode 100644 index 0000000..623fb0b --- /dev/null +++ b/listen.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "time" + + "remote-mic/networking" + "remote-mic/audio" +) + + +func listen() error { + fmt.Print("Listening for connection on port 8080... ") + conn, err := networking.ListenAndAcceptTCP(":8080") + if err != nil { + return 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)) + } + + return nil +} + +func pulsectlExample() { + pulsectl := audio.NewPulsectl() + err := pulsectl.LoadPipeSourceModule() + if err != nil { + panic(err) + } + time.Sleep(10 * time.Second) + pulsectl.UnloadPipeSourceModule() +} diff --git a/main.go b/main.go index b4cff70..4d57807 100644 --- a/main.go +++ b/main.go @@ -2,93 +2,46 @@ package main import ( "fmt" - "io" + "log" "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() { + cmd := tryParseCmd() + err := dispatchCmd(cmd) + if err != nil { + log.Fatalln(err) + } +} + +func tryParseCmd() string { if len(os.Args) < 2 { usage() } - cmd := os.Args[1] + return os.Args[1] +} +func usage() { + fmt.Println("Usage: remote-mic [listen|stream]") + os.Exit(1) +} + +func dispatchCmd(cmd string) error { switch cmd { case "listen": - listen() + err := listen() + if err != nil { + return err + } case "stream": - stream() + err := stream() + if err != nil { + return err + } default: usage() } + + return nil } diff --git a/stream.go b/stream.go new file mode 100644 index 0000000..3dda85c --- /dev/null +++ b/stream.go @@ -0,0 +1,43 @@ +package main + +import ( + "fmt" + "io" + "os" + + "remote-mic/networking" + "remote-mic/audio" +) + + +func stream() error { + conn, err := networking.ConnectTCP("localhost:8080") + if err != nil { + return err + } + writer := networking.NewAsyncWriter(conn) + defer writer.Close() + + c := writer.SendChan() + c <- []byte("cicasajtok") + + fmt.Println("Exiting.") + + return nil +} + +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()) + } +}