/* * Copyright (c) 2010 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include namespace Swift { class XMPPLayer; class LowLayer; class StreamLayer; class SWIFTEN_API StreamStack { public: StreamStack(XMPPLayer* xmppLayer, LowLayer* physicalLayer); ~StreamStack(); void addLayer(StreamLayer*); XMPPLayer* getXMPPLayer() const { return xmppLayer_; } template T* getLayer() { for (size_t i = 0; i < layers_.size(); ++i) { T* layer = dynamic_cast(layers_[i]); if (layer) { return layer; } } return NULL; } private: XMPPLayer* xmppLayer_; LowLayer* physicalLayer_; std::vector layers_; }; }