blob: 3dd3d2b860143148214fe965d05c255f6748e6c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include "streamSinkWrapper.h"
#define LOCK(lock) std::lock_guard<std::mutex> _lock##__LINE_NO__##lock(lock);
StreamSinkWrapper::StreamSinkWrapper(const Stream::Sink & s, std::promise<int> & p) :
sink(s),
promise(p),
completed(false)
{
}
bool
StreamSinkWrapper::NewData(const P2PVR::Data & data, const Ice::Current &)
{
try {
sink(reinterpret_cast<const char *>(&data.front()), data.size());
return false;
}
catch (const std::ios_base::failure &) {
LOCK(lock) {
if (completed) return true;
completed = true;
promise.set_value(0);
return true;
}
}
}
|