enable/disable multipart functionnality for sending header if source policy has the proper signature

add comment to sendHeader
This commit is contained in:
NicolasWinckler
2015-11-06 12:03:36 +01:00
committed by Mohammad Al-Turany
parent 6ce6887212
commit 13d3729fec
3 changed files with 32 additions and 13 deletions

View File

@@ -43,7 +43,7 @@
*
* void BindSendHeader(std::function<void(int)> callback) // enabled if exists
* void BindGetSocketNumber(std::function<int()> callback) // enabled if exists
* void BindGetCurrentIndex(std::function<int()> callback) // enabled if exists
* void GetHeader(std::function<int()> callback) // enabled if exists
*
* -------- OUTPUT POLICY --------
* serialization_type::SerializeMsg(CONTAINER_TYPE) // must be there to compile
@@ -174,6 +174,17 @@ class base_GenericSampler : public FairMQDevice, public T, public U
source_type::BindGetSocketNumber(std::bind(&base_GenericSampler::GetSocketNumber,this) );
}
template<typename S = source_type,FairMQ::tools::enable_if_hasNot_GetHeader<S> = 0>
void SendHeader(int socketIdx) {}
template<typename S = source_type,FairMQ::tools::enable_if_has_GetHeader<S> = 0>
void SendHeader(int socketIdx)
{
std::unique_ptr<FairMQMessage> msg(fTransportFactory->CreateMessage());
serialization_type::SetMessage(msg.get());
// remark : serialization_type must have an overload of the SerializeMsg to serialize the Header structure
fChannels.at(fOutChanName).at(socketIdx).Send(serialization_type::SerializeMsg(source_type::GetHeader()), "snd-more");
}
template<typename S = source_type,FairMQ::tools::enable_if_hasNot_BindGetCurrentIndex<S> = 0>
void BindingGetCurrentIndex() {}
template<typename S = source_type,FairMQ::tools::enable_if_has_BindGetCurrentIndex<S> = 0>

View File

@@ -53,7 +53,7 @@ void base_GenericSampler<T,U,K,L>::Run()
{
for (fCurrentIdx = 0; fCurrentIdx < fNumEvents; fCurrentIdx++)
{
for (auto& p : fChannels[fOutChanName])
for (auto& p : fChannels.at(fOutChanName))
{
std::unique_ptr<FairMQMessage> msg(fTransportFactory->CreateMessage());
serialization_type::SetMessage(msg.get());
@@ -88,16 +88,6 @@ void base_GenericSampler<T,U,K,L>::Run()
}
template <typename T, typename U, typename K, typename L>
void base_GenericSampler<T,U,K,L>::SendHeader(int socketIdx)
{
std::unique_ptr<FairMQMessage> msg(fTransportFactory->CreateMessage());
serialization_type::SetMessage(msg.get());
fChannels.at(fOutChanName).at(socketIdx).Send(serialization_type::SerializeMsg(source_type::GetOutData()), "snd-more");
}
template <typename T, typename U, typename K, typename L>
int base_GenericSampler<T,U,K,L>::GetSocketNumber() const
{