/// <summary>
 /// Finish up configuration, taking the default room config.  Also known as
 /// an "Instant Room".  Suitable for use if the user cancels the configuration
 /// request, perhaps.
 /// </summary>
 private void FinishConfigDefault()
 {
     /*
     <iq from='[email protected]/desktop'
         id='create1'
         to='*****@*****.**'
         type='set'>
       <query xmlns='http://jabber.org/protocol/muc#owner'>
         <x xmlns='jabber:x:data' type='submit'/>
       </query>
     </iq>
      */
     m_state = STATE.configSet;
     OwnerIQ iq = new OwnerIQ(m_manager.Stream.Document);
     iq.Type = IQType.set;
     iq.To = m_room;
     OwnerQuery oq = iq.Instruction;
     Data form = oq.Form;
     form.Type = XDataType.submit;
     m_manager.BeginIQ(iq, new IqCB(Configured), null);
 }
        /// <summary>
        /// Configures the room. OnRoomConfig MUST be set first.
        /// OnRoomConfig will be called back in the GUI thread if there is an
        /// InvokeControl on your XmppStream.  Make sure that OnRoomConfig does not
        /// return until it has the answer, typically by popping up a modal dialog
        /// with the x:data form.
        /// </summary>
        public void Configure()
        {
            if (OnRoomConfig == null)
                throw new ArgumentNullException("Must set OnRoomConfig before calling Configure()", "OnRoomConfig");

            /*
            <iq id='create1'
                to='*****@*****.**'
                type='get'>
              <query xmlns='http://jabber.org/protocol/muc#owner'/>
            </iq>
             */
            m_state = STATE.configGet;
            OwnerIQ iq = new OwnerIQ(m_manager.Stream.Document);
            iq.Type = IQType.get;
            iq.To = m_room;
            m_manager.BeginIQ(iq, new IqCB(ConfigForm), null);
        }