Separate stream creation from XMPP use (client, component, etc).

The address of the server is not necessarily related to the JID, e.g.
DNS SRV lookups, manual configuration, etc. Splitting them up means
there's more control and flexibility over how things are put together.

We can always add convenience funcs later, e.g. something like
DialClient(jid, password), to handle the common case.
This commit is contained in:
Matt Goodall 2012-07-08 23:29:51 +01:00
parent 381c04b8b3
commit c9c8526476
4 changed files with 23 additions and 16 deletions

View File

@ -12,12 +12,20 @@ var (
)
func main() {
// Parse args.
flag.Parse()
jid, _ := xmpp.ParseJID(*jid)
password := *password
x, err := xmpp.NewClientXMPP(jid, password, &xmpp.ClientConfig{InsecureSkipVerify: true})
// Create stream.
stream, err := xmpp.NewStream(jid.Domain + ":5222")
if err != nil {
log.Fatal(err)
}
// Configure stream as a client connection.
x, err := xmpp.NewClientXMPP(stream, jid, password, &xmpp.ClientConfig{InsecureSkipVerify: true})
if err != nil {
log.Fatal(err)
}

View File

@ -7,16 +7,25 @@ import (
)
var (
addr = flag.String("a", "", "Server component address")
jid = flag.String("j", "", "JID")
secret = flag.String("s", "", "Component secret")
)
func main() {
flag.Parse()
addr := *addr
jid, _ := xmpp.ParseJID(*jid)
secret := *secret
x, err := xmpp.NewComponentXMPP("localhost:5347", jid, secret)
// Create stream.
stream, err := xmpp.NewStream(addr)
if err != nil {
log.Fatal(err)
}
// Configure stream as a component connection.
x, err := xmpp.NewComponentXMPP(stream, jid, secret)
if err != nil {
log.Fatal(err)
}

View File

@ -19,13 +19,8 @@ type ClientConfig struct {
InsecureSkipVerify bool
}
// Create a client XMPP stream.
func NewClientXMPP(jid JID, password string, config *ClientConfig) (*XMPP, error) {
stream, err := NewStream(jid.Domain + ":5222")
if err != nil {
return nil, err
}
// Create a client XMPP over the stream.
func NewClientXMPP(stream *Stream, jid JID, password string, config *ClientConfig) (*XMPP, error) {
for {

View File

@ -7,13 +7,8 @@ import (
"fmt"
)
// Create a component XMPP connection.
func NewComponentXMPP(addr string, jid JID, secret string) (*XMPP, error) {
stream, err := NewStream(addr)
if err != nil {
return nil, err
}
// Create a component XMPP connection over the stream.
func NewComponentXMPP(stream *Stream, jid JID, secret string) (*XMPP, error) {
streamId, err := startComponent(stream, jid)
if err != nil {