# Io Reference

Networking / Loudmouth / Loudmouth

|  | Loudmouth is an async XMPP library written in C. Example usage: `
    acc := Loudmouth with("user@server.com", "super password") do(
      handleConnect = method(
        "Connected!" println)

      handleMessage = method(msg
        "#{msg from} > #{msg plainBody}" println
        body :=  msg plainBody

        if(body indexOf("#") == 0,
          body = doString(body) asString)

        # This way you can manipulate
        # XML nodes with SGML addon
        XmppChatMessage create\
          setPlainBody(body)\
          setTo(msg from)\
          sendVia(self)

        # or simply send the message (must be a Sequence)
        # (this is obviously faster)
        #self send(msg from, body))
    )

    acc connect
    # Any Io code after this line won't be executed
    # (unless called as Loudmouth callback or run in separate thread)
    Loudmouth startMainLoop
`
|  | connect Connects to the server. Returns `self`. disconnect Disconnects from server and returns `true` if it succeeds. handleAuthenticated Slot called upon successful authentication. handleAuthenticationFailure Slot called if username/password combinaton is wrong. handleConnect Slot called once connection is established. handleConnectFailure Slot called when server is not reachable. handleDisconnect Slot called upon closing the connection with the server. handleMessage(xmppMessage) Slot called when a message arrives via XMPP stream. `xmppMessage` is a `LoudmouthMessage` object. handleSslFailure Slot called if SSL-related problems arrive. Method should return `true` if it wishes to make a connection without SSL, `false` otherwise. isConnected isSslSupported registerAccount(server, username, password) Registers a new account at XMPP server. Returns `true` or `false`. send(toJid, message) Sends a message (`Sequence`) to provided JID (`Sequence`). Returns `true` or `false`. sendRaw(body) Sends raw text over XMPP stream. Returns `true` if no errors occur. setPresence(presence[, statusMessage]) Sets availability/presence and status message. setStatusMessage(statusMessage) Sets status message. startMainLoop Starts GMainLoop. Should be called after a connection is established with the server. status Returns status connection. Possible return values are: `Loudmouth types CLOSED` `Loudmouth types OPENING` `Loudmouth types OPEN` `Loudmouth types AUTHENTICATING` `Loudmouth types AUTHENTICATED` stopMainLoop types Object containing status codes and message types.
      Loudmouth with("username@server.com", "password") do(
        handleConnect = method(
          self setPresence(Loudmouth types AVAILABLE), "Drinking lemonade...")
      )
with(jid, password) Creates a new Loudmouth clone with server details provided in `jid`.