Files
        @ a0e0c8e75b6a
    
        
              Branch filter: 
        
    Location: libtransport.git/include/Swiften/Server/ServerStanzaChannel.h - annotation
        
            
            a0e0c8e75b6a
            1.9 KiB
            text/plain
        
        
    
    Merge remote-tracking branch 'jadestorm/master'
    | 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 6b88ad945d30 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 c7f2b6298073 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 8f2ea32da3a3 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 31d37d82b596 31d37d82b596 31d37d82b596 31d37d82b596 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 a94eb22e7620 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 6aa3e6352021 6aa3e6352021 828ae9d2cb88 828ae9d2cb88 828ae9d2cb88 | /*
 * Copyright (c) 2010 Remko Tronçon
 * Licensed under the GNU General Public License v3.
 * See Documentation/Licenses/GPLv3.txt for more information.
 */
#pragma once
#include <boost/shared_ptr.hpp>
#include "Swiften/Base/IDGenerator.h"
#include "Swiften/Server/ServerFromClientSession.h"
#include "Swiften/Client/StanzaChannel.h"
#include "Swiften/Elements/Message.h"
#include "Swiften/Elements/IQ.h"
#include "Swiften/Elements/Presence.h"
#include "Swiften/TLS/Certificate.h"
namespace Swift {
	class Error;
	class ServerStanzaChannel : public StanzaChannel {
		public:
			void addSession(boost::shared_ptr<ServerFromClientSession> session);
			void removeSession(boost::shared_ptr<ServerFromClientSession> session);
			void sendIQ(boost::shared_ptr<IQ> iq);
			void sendMessage(boost::shared_ptr<Message> message);
			void sendPresence(boost::shared_ptr<Presence> presence);
			void finishSession(const JID& to, boost::shared_ptr<Element> element, bool last = false);
			bool getStreamManagementEnabled() const {
				return false;
			}
	
			bool isAvailable() const {
				return true;
			}
			
			std::vector<Certificate::ref> getPeerCertificateChain() const {
				return std::vector<Certificate::ref>();
			}
		private:
			std::string getNewIQID();
			void send(boost::shared_ptr<Stanza> stanza);
			void handleSessionFinished(const boost::optional<Session::SessionError>&, const boost::shared_ptr<ServerFromClientSession> &session);
			void handleElement(boost::shared_ptr<Element> element, const boost::shared_ptr<ServerFromClientSession> &session);
			void handleDataRead(const SafeByteArray &data, const boost::shared_ptr<ServerFromClientSession> &session);
			void handleSessionInitialized();
		private:
			IDGenerator idGenerator;
			// [JID][resources][ServerFromClientSession]
			std::map<std::string, std::list<boost::shared_ptr<ServerFromClientSession> > > sessions;
	};
}
 |