|
@@ -15,12 +15,13 @@ import (
|
|
|
"net"
|
|
|
"os"
|
|
|
|
|
|
- "github.com/campoy/whispering-gophers/util"
|
|
|
+ "code.osinet.fr/fgm/whispering_gophers/util"
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
- peerAddr = flag.String("peer", "", "peer host:port")
|
|
|
- self string
|
|
|
+ listenAddr = flag.String("listen", "", "peer host:port")
|
|
|
+ peerAddr = flag.String("peer", "", "peer host:port")
|
|
|
+ self string
|
|
|
)
|
|
|
|
|
|
type Message struct {
|
|
@@ -31,7 +32,14 @@ type Message struct {
|
|
|
func main() {
|
|
|
flag.Parse()
|
|
|
|
|
|
- l, err := util.Listen()
|
|
|
+ var l net.Listener
|
|
|
+ var err error
|
|
|
+ // Create a new listener using util.Listen and put it in a variable named l.
|
|
|
+ if *listenAddr == "" {
|
|
|
+ l, err = util.ListenOnFirstUsableInterface()
|
|
|
+ } else {
|
|
|
+ l, err = net.Listen("tcp4", *listenAddr)
|
|
|
+ }
|
|
|
if err != nil {
|
|
|
log.Fatal(err)
|
|
|
}
|
|
@@ -64,7 +72,8 @@ func serve(c net.Conn) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// TODO: Make a new channel of Messages.
|
|
|
+// Make a new channel of Messages.
|
|
|
+var peer = make(chan Message)
|
|
|
|
|
|
func readInput() {
|
|
|
s := bufio.NewScanner(os.Stdin)
|
|
@@ -73,11 +82,13 @@ func readInput() {
|
|
|
Addr: self,
|
|
|
Body: s.Text(),
|
|
|
}
|
|
|
- // TODO: Send the message to the channel of messages.
|
|
|
+ // Send the message to the channel of messages.
|
|
|
+ peer <- m
|
|
|
}
|
|
|
if err := s.Err(); err != nil {
|
|
|
log.Fatal(err)
|
|
|
}
|
|
|
+ os.Exit(0)
|
|
|
}
|
|
|
|
|
|
func dial(addr string) {
|
|
@@ -90,7 +101,8 @@ func dial(addr string) {
|
|
|
|
|
|
e := json.NewEncoder(c)
|
|
|
|
|
|
- for /* TODO: Receive messages from the channel using range, storing them in the variable m. */ {
|
|
|
+ /* Receive messages from the channel using range, storing them in the variable m. */
|
|
|
+ for m := range peer {
|
|
|
err := e.Encode(m)
|
|
|
if err != nil {
|
|
|
log.Println(addr, err)
|