void TestMaster::testIntegrityPoll() { Master* master_p; DummyDb db; DummyTimer timer; int debugLevel = -1; DummyTx tx(&debugLevel, 'M', 'S'); int integrityPollInterval = 10; Master::MasterConfig masterConfig; Datalink::DatalinkConfig datalinkConfig; Station::StationConfig stationConfig; masterConfig.addr = 1; masterConfig.consecutiveTimeoutsForCommsFail = 3; masterConfig.integrityPollInterval_p = &integrityPollInterval; masterConfig.debugLevel_p = &debugLevel; stationConfig.addr = 2; stationConfig.debugLevel_p = &debugLevel; datalinkConfig.addr = masterConfig.addr; datalinkConfig.isMaster = 1; datalinkConfig.keepAliveInterval_ms = 10000; datalinkConfig.tx_p = &tx; datalinkConfig.debugLevel_p = &debugLevel; master_p = new Master (masterConfig, datalinkConfig, &stationConfig, 1, &db, &timer); // full resp to an integrity poll unsigned char r[] ={ 0x05, 0x64, 0x10, 0x44, 0x01, 0x00, 0x02, 0x00, 0x50, 0x8e, 0xc0, 0xc5, 0x81, 0x80, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xff, 0xde, 0xa7 }; // first test the repsonse without sending the poll Bytes bytes1(r, r+sizeof(r)); master_p->rxData( &bytes1, 0); QVERIFY (master_p->getStat(2, TransportStats::RX_SEGMENT) == 1); QVERIFY (master_p->getStat(2, TransportStats::RX_FRAGMENT) == 1); QVERIFY (master_p->getStat(2, Station ::RX_UNEXP_RESPONSE) == 1); // send the poll master_p->poll( Master::INTEGRITY); QVERIFY (master_p->getStat(2, TransportStats::TX_SEGMENT) == 1); QVERIFY (master_p->getStat(2, TransportStats::TX_FRAGMENT) == 1); QVERIFY (master_p->getStat(2, Station ::TX_INTEGRITY_POLL) == 1); QVERIFY (master_p->getStat(2, Station ::TX_READ_REQUEST) == 1); // send a response to the poll Bytes bytes2(r, r+sizeof(r)); master_p->rxData( &bytes2, 0); QVERIFY (master_p->getStat(2, TransportStats::RX_SEGMENT) == 2); QVERIFY (master_p->getStat(2, TransportStats::RX_FRAGMENT) == 2); QVERIFY (master_p->getStat(2, Station ::RX_RESPONSE) == 1); }
TEST (uint256_union, big_endian_union_constructor) { boost::multiprecision::uint256_t value1 (1); rai::uint256_union bytes1 (value1); ASSERT_EQ (1, bytes1.bytes [31]); boost::multiprecision::uint512_t value2 (1); rai::uint512_union bytes2 (value2); ASSERT_EQ (1, bytes2.bytes [63]); }
char *escape (unsigned char *s) { int i, j, n; unsigned long c; j = 0; for (i = 0; s [i]; i += n) { n = charlen (s[i]); switch (n){ case 1: c = (unsigned char) s [i]; break; case 2: c = bytes2 (s + i); break; case 3: c = bytes3 (s + i); break; case 4: c = bytes4 (s + i); break; case 5: c = bytes5 (s + i); break; case 6: c = bytes6 (s + i); break; default: c = 32; } if (c == 43 || c == 45 || (c >= 48 && c <= 57) || (c >= 65 && c <= 90) || (c >= 97 && c <= 122)) buffer6[j++] = (char) c; else { sprintf (buffer6 + j, "_%lu_", c); for ( ; buffer6 [j]; j++) ; } } if (! j) { buffer6 [j++] = '_'; buffer6 [j++] = '_'; } buffer6 [j] = '\0'; return buffer6; }
std::map<std::string, std::string> read_flv_meta_info(const std::string& filename) { std::map<std::string, std::string> values; if(boost::filesystem2::path(filename).extension() != ".flv") return values; try { if(!boost::filesystem2::exists(filename)) BOOST_THROW_EXCEPTION(caspar_exception()); std::fstream fileStream = std::fstream(filename, std::fstream::in); std::vector<char> bytes2(256); fileStream.read(bytes2.data(), bytes2.size()); auto ptr = bytes2.data(); ptr += 27; if(std::string(ptr, ptr+10) == "onMetaData") { ptr += 16; for(int n = 0; n < 16; ++n) { char name_size = *ptr++; if(name_size == 0) break; auto name = std::string(ptr, ptr + name_size); ptr += name_size; char data_type = *ptr++; switch(data_type) { case 0: // double { static_assert(sizeof(double) == 8, ""); std::reverse(ptr, ptr+8); values[name] = boost::lexical_cast<std::string>(*(double*)(ptr)); ptr += 9; break; } case 1: // bool { values[name] = boost::lexical_cast<std::string>(*ptr != 0); ptr += 2; break; } } } } } catch(...) { CASPAR_LOG_CURRENT_EXCEPTION(); } return values; }