Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

channels.h

00001 #ifndef CRYPTOPP_CHANNELS_H 00002 #define CRYPTOPP_CHANNELS_H 00003 00004 #include "simple.h" 00005 #include "smartptr.h" 00006 #include <map> 00007 #include <list> 00008 00009 NAMESPACE_BEGIN(CryptoPP) 00010 00011 #if 0 00012 //! Route input on default channel to different and/or multiple channels based on message sequence number 00013 class MessageSwitch : public Sink 00014 { 00015 public: 00016 void AddDefaultRoute(BufferedTransformation &destination, const std::string &channel); 00017 void AddRoute(unsigned int begin, unsigned int end, BufferedTransformation &destination, const std::string &channel); 00018 00019 void Put(byte inByte); 00020 void Put(const byte *inString, unsigned int length); 00021 00022 void Flush(bool completeFlush, int propagation=-1); 00023 void MessageEnd(int propagation=-1); 00024 void PutMessageEnd(const byte *inString, unsigned int length, int propagation=-1); 00025 void MessageSeriesEnd(int propagation=-1); 00026 00027 private: 00028 typedef std::pair<BufferedTransformation *, std::string> Route; 00029 struct RangeRoute 00030 { 00031 RangeRoute(unsigned int begin, unsigned int end, const Route &route) 00032 : begin(begin), end(end), route(route) {} 00033 bool operator<(const RangeRoute &rhs) const {return begin < rhs.begin;} 00034 unsigned int begin, end; 00035 Route route; 00036 }; 00037 00038 typedef std::list<RangeRoute> RouteList; 00039 typedef std::list<Route> DefaultRouteList; 00040 00041 RouteList m_routes; 00042 DefaultRouteList m_defaultRoutes; 00043 unsigned int m_nCurrentMessage; 00044 }; 00045 #endif 00046 00047 //! Route input to different and/or multiple channels based on channel ID 00048 class ChannelSwitch : public Multichannel<Sink> 00049 { 00050 public: 00051 ChannelSwitch() {} 00052 ChannelSwitch(BufferedTransformation &destination) 00053 { 00054 AddDefaultRoute(destination); 00055 } 00056 ChannelSwitch(BufferedTransformation &destination, const std::string &outChannel) 00057 { 00058 AddDefaultRoute(destination, outChannel); 00059 } 00060 00061 unsigned int ChannelPut2(const std::string &channel, const byte *begin, unsigned int length, int messageEnd, bool blocking); 00062 unsigned int ChannelPutModifiable2(const std::string &channel, byte *begin, unsigned int length, int messageEnd, bool blocking); 00063 00064 void ChannelInitialize(const std::string &channel, const NameValuePairs &parameters=g_nullNameValuePairs, int propagation=-1); 00065 bool ChannelFlush(const std::string &channel, bool completeFlush, int propagation=-1, bool blocking=true); 00066 bool ChannelMessageSeriesEnd(const std::string &channel, int propagation=-1, bool blocking=true); 00067 00068 byte * ChannelCreatePutSpace(const std::string &channel, unsigned int &size); 00069 00070 void AddDefaultRoute(BufferedTransformation &destination); 00071 void RemoveDefaultRoute(BufferedTransformation &destination); 00072 void AddDefaultRoute(BufferedTransformation &destination, const std::string &outChannel); 00073 void RemoveDefaultRoute(BufferedTransformation &destination, const std::string &outChannel); 00074 void AddRoute(const std::string &inChannel, BufferedTransformation &destination, const std::string &outChannel); 00075 void RemoveRoute(const std::string &inChannel, BufferedTransformation &destination, const std::string &outChannel); 00076 00077 private: 00078 typedef std::pair<BufferedTransformation *, std::string> Route; 00079 typedef std::multimap<std::string, Route> RouteMap; 00080 RouteMap m_routeMap; 00081 00082 typedef std::pair<BufferedTransformation *, value_ptr<std::string> > DefaultRoute; 00083 typedef std::list<DefaultRoute> DefaultRouteList; 00084 DefaultRouteList m_defaultRoutes; 00085 00086 friend class ChannelRouteIterator; 00087 }; 00088 00089 NAMESPACE_END 00090 00091 #endif

Generated on Wed Jul 28 08:07:06 2004 for Crypto++ by doxygen 1.3.7