本文整理汇总了C++中Poco::Timespan方法的典型用法代码示例。如果您正苦于以下问题:C++ Poco::Timespan方法的具体用法?C++ Poco::Timespan怎么用?C++ Poco::Timespan使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Poco
的用法示例。
在下文中一共展示了Poco::Timespan方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testArithmetics
void DateTimeTest::testArithmetics()
{
DateTime dt1(2005, 1, 1, 0, 15, 30);
DateTime dt2(2005, 1, 2, 0, 15, 30);
Timespan s = dt2 - dt1;
assert (s.days() == 1);
DateTime dt3 = dt1 + s;
assert (dt3 == dt2);
dt3 -= s;
assert (dt3 == dt1);
dt1 += s;
assert (dt1 == dt2);
static const struct
{
int lineNum; // source line number
int year1; // operand/result date1 year
int month1; // operand/result date1 month
unsigned int day1; // operand/result date1 day
int numDays; // operand/result 'int' number of days
int year2; // operand/result date2 year
int month2; // operand/result date2 month
unsigned int day2; // operand/result date2 day
} data[] =
{
// - - - -first- - - - - - - second - - -
//line no. year month day numDays year month day
//------- ----- ----- ----- ------- ----- ----- -----
{ __LINE__, 1, 1, 1, 1, 1, 1, 2 },
{ __LINE__, 10, 2, 28, 1, 10, 3, 1 },
{ __LINE__, 100, 3, 31, 2, 100, 4, 2 },
{ __LINE__, 1000, 4, 30, 4, 1000, 5, 4 },
{ __LINE__, 1000, 6, 1, -31, 1000, 5, 1 },
{ __LINE__, 1001, 1, 1, -365, 1000, 1, 1 },
{ __LINE__, 1100, 5, 31, 30, 1100, 6, 30 },
{ __LINE__, 1200, 6, 30, 32, 1200, 8, 1 },
{ __LINE__, 1996, 2, 28, 367, 1997, 3, 1 },
{ __LINE__, 1997, 2, 28, 366, 1998, 3, 1 },
{ __LINE__, 1998, 2, 28, 365, 1999, 2, 28 },
{ __LINE__, 1999, 2, 28, 364, 2000, 2, 27 },
{ __LINE__, 1999, 2, 28, 1096, 2002, 2, 28 },
{ __LINE__, 2002, 2, 28, -1096, 1999, 2, 28 },
};
const int num_data = sizeof data / sizeof *data;
for (int di = 0; di < num_data; ++di)
{
const int line = data[di].lineNum;
const int num_days = data[di].numDays;
DateTime x = DateTime(data[di].year1, data[di].month1, data[di].day1);
const DateTime& X = x;
x += Timespan(num_days, 0, 0, 0, 0);
loop_1_assert(line, data[di].year2 == X.year());
loop_1_assert(line, data[di].month2 == X.month());
loop_1_assert(line, data[di].day2 == X.day());
}
}
示例2: testUsage
void DateTimeTest::testUsage()
{
DateTime dt1(1776, 7, 4);
assert (dt1.year() == 1776);
assert (dt1.month() == 7);
assert (dt1.day() == 4);
DateTime dt2(dt1);
dt2 += Timespan(6, 0, 0, 0, 0);
assert (dt2.year() == 1776);
assert (dt2.month() == 7);
assert (dt2.day() == 10);
Timespan span = dt2 - dt1;
assert (span.days() == 6);
// TODO - When adding months and years we need to be
// able to specify the end-end convention.
// We cannot do this in POCO at the moment.
}
示例3: timeout
void KeyValueStore::InternalThread::outgoingRoutine()
{
unsigned currId = -1;
const Config::ServerInformation& info = config.getServerInformation();
Config::ThreadControl& control = config.getThreadControl();
Mutex& outMutex = control.getOutMutex();
Condition& cond = control.getOutCondition();
Timespan timeout(3, 0); // 3 seconds to receive response
bool connected = false;
unsigned contentLength = 0;
char* buf = NULL;
while(control.isLive()) {
outMutex.lock();
cond.wait(outMutex);
// Check if server changed
if(control.getReconnectedTo()) {
printKv("Reconnecting");
currId = control.getConnectedToId();
const Config::ServerInformation& nextInfo = config.getServerInformation(currId);
try {
if(connected)
sock.close();
sock.connect(SocketAddress(nextInfo.address, nextInfo.internalPort), Timespan(5, 0));
connected = true;
printKv("Connected to outgoing server: "<< nextInfo.id);
//sock.setReceiveTimeout(timeout);
KeyValueStore::replicateDB(sock, control.getMachineCount());
} catch(Exception& e) {
printKv("Could not connect to next key-value internal server ("<< e.displayText() <<")" << endl
<< "System may be inconsistent until next reconnect.");
connected = false;
}
}
while(!forwardQueue.isEmpty()) {
pair<char, string> req(forwardQueue.dequeue());
if(req.first == Protocol::REPL_INS || req.first == Protocol::REPL_REM) {
try {
KeyValueStore::sendRequest(sock, req);
} catch(Exception& e) {
printKv("Could not replicate: "<< e.displayText());
}
} else if(req.first == Protocol::INS_MOVIE) { // Requests without responses
KeyValueStore::sendRequest(sock, req); // Not waiting for a response
} else if(req.first == Protocol::LUP_MOVIE && false) { // This returns many responses need to get all
printKv("Received movie lookup forward");
KeyValueStore::sendRequest(sock, req);
pair<char, string> resp(KeyValueStore::rcvResponse(sock, buf));
while(resp.first != Protocol::MLOOKUP_DONE && resp.first != Protocol::LOOKUP_NO) {
resp = KeyValueStore::rcvResponse(sock, buf);
respBuffer.enqueue(resp);
// replyForward(); // Send as we get them
}
respBuffer.enqueue(resp); // Make sure we also send our done response
printKv("Served movies");
replyForward();
} else {
// Forward and wait for response.
try {
KeyValueStore::sendRequest(sock, req);
pair<char, string> resp(KeyValueStore::rcvResponse(sock, buf));
respBuffer.enqueue(resp);
replyForward();
} catch(Exception& e) {
// If we timeout or anything, treat request as failed
printKv("Exception while forwarding: "<< e.displayText());
respBuffer.enqueue(pair<char, string>(Protocol::REQ_FAIL, ""));
replyForward();
}
}
}
// if(!respBuffer.isEmpty())
// replyForward();
outMutex.unlock();
}
}
示例4: testIncrementDecrement
void DateTimeTest::testIncrementDecrement()
{
static const struct
{
int lineNum; // source line number
int year1; // (first) date year
int month1; // (first) date month
unsigned int day1; // (first) date day
int year2; // (second) date year
int month2; // (second) date month
unsigned int day2; // (second) date day
} data[] =
{
// - - - -first- - - - - - - second - - -
//line no. year month day year month day
//------- ----- ----- ----- ----- ----- -----
{ __LINE__, 1, 1, 1, 1, 1, 2 },
{ __LINE__, 10, 2, 28, 10, 3, 1 },
{ __LINE__, 100, 3, 31, 100, 4, 1 },
{ __LINE__, 1000, 4, 30, 1000, 5, 1 },
{ __LINE__, 1100, 5, 31, 1100, 6, 1 },
{ __LINE__, 1200, 6, 30, 1200, 7, 1 },
{ __LINE__, 1300, 7, 31, 1300, 8, 1 },
{ __LINE__, 1400, 8, 31, 1400, 9, 1 },
{ __LINE__, 1500, 9, 30, 1500, 10, 1 },
{ __LINE__, 1600, 10, 31, 1600, 11, 1 },
{ __LINE__, 1700, 11, 30, 1700, 12, 1 },
{ __LINE__, 1800, 12, 31, 1801, 1, 1 },
{ __LINE__, 1996, 2, 28, 1996, 2, 29 },
{ __LINE__, 1997, 2, 28, 1997, 3, 1 },
{ __LINE__, 1998, 2, 28, 1998, 3, 1 },
{ __LINE__, 1999, 2, 28, 1999, 3, 1 },
{ __LINE__, 2000, 2, 28, 2000, 2, 29 },
{ __LINE__, 2001, 2, 28, 2001, 3, 1 },
{ __LINE__, 2004, 2, 28, 2004, 2, 29 },
{ __LINE__, 2100, 2, 28, 2100, 3, 1 },
{ __LINE__, 2400, 2, 28, 2400, 2, 29 },
};
const int num_data = sizeof data / sizeof *data;
int di;
for (di = 0; di < num_data; ++di)
{
const int line = data[di].lineNum;
DateTime x = DateTime(data[di].year1, data[di].month1,
data[di].day1);
// Would do pre-increment of x here.
const DateTime& X = x;
x = x + Timespan(1,0,0,0,0);
DateTime y = x; const DateTime& Y = y;
loop_1_assert(line, data[di].year2 == X.year());
loop_1_assert(line, data[di].month2 == X.month());
loop_1_assert(line, data[di].day2 == X.day());
loop_1_assert(line, data[di].year2 == Y.year());
loop_1_assert(line, data[di].month2 == Y.month());
loop_1_assert(line, data[di].day2 == Y.day());
}
for (di = 0; di < num_data; ++di)
{
const int line = data[di].lineNum;
DateTime x = DateTime(data[di].year1, data[di].month1, data[di].day1);
DateTime x1 = DateTime(data[di].year1, data[di].month1, data[di].day1);
DateTime x2 = DateTime(data[di].year2, data[di].month2, data[di].day2);
DateTime y = x; const DateTime& Y = y;
// Would do post increment of x here.
const DateTime& X = x;
x = x + Timespan(1,0,0,0,0);
loop_1_assert(line, data[di].year2 == X.year());
loop_1_assert(line, data[di].month2 == X.month());
loop_1_assert(line, data[di].day2 == X.day());
loop_1_assert(line, data[di].year1 == Y.year());
loop_1_assert(line, data[di].month1 == Y.month());
loop_1_assert(line, data[di].day1 == Y.day());
}
for (di = 0; di < num_data; ++di)
{
const int line = data[di].lineNum;
DateTime x = DateTime(data[di].year2, data[di].month2, data[di].day2);
const DateTime& X = x;
x = x - Timespan(1,0,0,0,0);
DateTime y = x; DateTime Y = y;
loop_1_assert(line, data[di].year1 == X.year());
loop_1_assert(line, data[di].month1 == X.month());
loop_1_assert(line, data[di].day1 == X.day());
loop_1_assert(line, data[di].year1 == Y.year());
loop_1_assert(line, data[di].month1 == Y.month());
loop_1_assert(line, data[di].day1 == Y.day());
}
for (di = 0; di < num_data; ++di)
{
//.........这里部分代码省略.........