void RosterManager::handleSubscription( Stanza *stanza ) { if( !m_rosterListener ) return; switch( stanza->subtype() ) { case StanzaS10nSubscribe: { bool answer = m_rosterListener->handleSubscriptionRequest( stanza->from(), stanza->status() ); if( m_syncSubscribeReq ) { ackSubscriptionRequest( stanza->from(), answer ); } break; } case StanzaS10nSubscribed: { // Tag *p = new Tag( "presence" ); // p->addAttribute( "type", "subscribe" ); // p->addAttribute( "to", stanza->from().bare() ); // m_parent->send( p ); m_rosterListener->handleItemSubscribed( stanza->from() ); break; } case StanzaS10nUnsubscribe: { Tag *p = new Tag( "presence" ); p->addAttribute( "type", "unsubscribed" ); p->addAttribute( "to", stanza->from().bare() ); m_parent->send( p ); bool answer = m_rosterListener->handleUnsubscriptionRequest( stanza->from(), stanza->status() ); if( m_syncSubscribeReq && answer ) remove( stanza->from().bare() ); break; } case StanzaS10nUnsubscribed: { // Tag *p = new Tag( "presence" ); // p->addAttribute( "type", "unsubscribe" ); // p->addAttribute( "to", stanza->from().bare() ); // m_parent->send( p ); m_rosterListener->handleItemUnsubscribed( stanza->from() ); break; } default: break; } }
void RosterManager::handleSubscription( const Subscription& s10n ) { if( !m_rosterListener ) return; switch( s10n.subtype() ) { case Subscription::Subscribe: { bool answer = m_rosterListener->handleSubscriptionRequest( s10n.from(), s10n.status() ); if( m_syncSubscribeReq ) { ackSubscriptionRequest( s10n.from(), answer ); } break; } case Subscription::Subscribed: { // Subscription p( Subscription::Subscribe, s10n.from().bareJID() ); // m_parent->send( p ); m_rosterListener->handleItemSubscribed( s10n.from() ); break; } case Subscription::Unsubscribe: { Subscription p( Subscription::Unsubscribed, s10n.from().bareJID() ); m_parent->send( p ); bool answer = m_rosterListener->handleUnsubscriptionRequest( s10n.from(), s10n.status() ); if( m_syncSubscribeReq && answer ) remove( s10n.from().bare() ); break; } case Subscription::Unsubscribed: { // Subscription p( Subscription::Unsubscribe, s10n.from().bareJID() ); // m_parent->send( p ); m_rosterListener->handleItemUnsubscribed( s10n.from() ); break; } default: break; } }