00001 #ifndef _BULK_DATA_NT_SENDER_STREAM_H_ 00002 #define _BULK_DATA_NT_SENDER_STREAM_H_ 00003 /******************************************************************************* 00004 * ALMA - Atacama Large Millimiter Array 00005 * (c) European Southern Observatory, 2011 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 * 00021 * "@(#) $Id: bulkDataNTSenderStream.h,v 1.12 2012/04/26 15:04:27 bjeram Exp $" 00022 * 00023 * who when what 00024 * -------- -------- ---------------------------------------------- 00025 * bjeram 2011-04-19 created 00026 */ 00027 00028 /************************************************************************ 00029 * 00030 *---------------------------------------------------------------------- 00031 */ 00032 00033 #ifndef __cplusplus 00034 #error This is a C++ include file and cannot be used from plain C 00035 #endif 00036 00037 #include "bulkDataNTStream.h" 00038 #include "bulkDataNTSenderFlow.h" 00039 #include "bulkDataNTSenderFlowCallback.h" 00040 00041 #include <map> 00042 00043 00044 namespace AcsBulkdata 00045 { 00046 00047 class BulkDataNTSenderFlow; 00048 00049 class BulkDataNTSenderStream : public BulkDataNTStream 00050 { 00051 friend class BulkDataNTSenderFlow; 00052 public: 00053 00060 BulkDataNTSenderStream(const char* name, const SenderStreamConfiguration &cfg=SenderStreamConfiguration()); 00061 00065 virtual ~BulkDataNTSenderStream(); 00066 00067 00076 BulkDataNTSenderFlow* createFlow(const char* flowName, const SenderFlowConfiguration &cfg=SenderFlowConfiguration(), 00077 BulkDataNTSenderFlowCallback *cb=0, bool releaseCB=false); 00078 00079 00080 00081 //TBD should we use this and feps if QoS XML ? 00082 // now we have it just for backward compatibility 00083 // is this method the same for Receiver and Sender ? 00084 void createMultipleFlowsFromConfig(const char *config); 00085 00092 BulkDataNTSenderFlow* getFlow(const char* flowName); 00093 00099 bool existFlow(const char* flowName); 00100 00104 std::vector<std::string> getFlowNames(); 00105 00110 unsigned int getFlowNumber(); 00111 00112 protected: 00113 virtual void removeFlowFromMap(const char* flow); 00114 00115 typedef std::map<std::string, BulkDataNTSenderFlow*> SenderFlowMap; 00116 SenderFlowMap senderFlows_m; 00117 // we need a flag that prevents elements to be removed from map when we delete flows from dtor 00118 bool notRemoveFromMap_m; 00119 00121 BulkDataNTSenderStream(); 00123 void operator=(const BulkDataNTSenderStream&); 00125 BulkDataNTSenderStream(const BulkDataNTSenderStream&); 00126 };//class BulkDataNTSenderStream 00127 00128 }; 00129 00130 00131 #endif