examples/interact.go
branch20120108-close
changeset 63 c7f2edd25f4a
parent 57 e6cb3f049137
child 68 d693ecc11f29
equal deleted inserted replaced
62:6e2eea62ccca 63:c7f2edd25f4a
     8 	"cjyar/xmpp"
     8 	"cjyar/xmpp"
     9 	"flag"
     9 	"flag"
    10 	"fmt"
    10 	"fmt"
    11 	"log"
    11 	"log"
    12 	"os"
    12 	"os"
    13 	)
    13 	"time"
       
    14 )
    14 
    15 
    15 // Demonstrate the API, and allow the user to interact with an XMPP
    16 // Demonstrate the API, and allow the user to interact with an XMPP
    16 // server via the terminal.
    17 // server via the terminal.
    17 func main() {
    18 func main() {
    18 	var jid xmpp.JID
    19 	var jid xmpp.JID
    26 
    27 
    27 	c, err := xmpp.NewClient(&jid, *pw, nil)
    28 	c, err := xmpp.NewClient(&jid, *pw, nil)
    28 	if err != nil {
    29 	if err != nil {
    29 		log.Fatalf("NewClient(%v): %v", jid, err)
    30 		log.Fatalf("NewClient(%v): %v", jid, err)
    30 	}
    31 	}
    31 	defer c.Close()
    32 	defer close(c.Out)
    32 
    33 
    33 	err = c.StartSession(true, &xmpp.Presence{})
    34 	err = c.StartSession(true, &xmpp.Presence{})
    34 	if err != nil {
    35 	if err != nil {
    35 		log.Fatalf("StartSession: %v", err)
    36 		log.Fatalf("StartSession: %v", err)
    36 	}
    37 	}
    45 			fmt.Printf("s: %v\n", obj)
    46 			fmt.Printf("s: %v\n", obj)
    46 		}
    47 		}
    47 		fmt.Println("done reading")
    48 		fmt.Println("done reading")
    48 	}(c.In)
    49 	}(c.In)
    49 
    50 
    50 	p := make([]byte, 1024)
    51 	time.Sleep(1e9 * 5)
    51 	for {
    52 	fmt.Println("Shutting down.")
    52 		nr, _ := os.Stdin.Read(p)
    53 	close(c.Out)
    53 		if nr == 0 {
    54 	time.Sleep(1e9 * 5)
    54 			break
    55 	select {}
    55 		}
       
    56 		s := string(p)
       
    57 		stan, err := xmpp.ParseStanza(s)
       
    58 		if err == nil {
       
    59 			c.Out <- stan
       
    60 		} else {
       
    61 			fmt.Printf("Parse error: %v\n", err)
       
    62 			break
       
    63 		}
       
    64 	}
       
    65 	fmt.Println("done sending")
       
    66 }
    56 }