Esempio n. 1
0
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);

}
Esempio n. 2
0
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]);
}
Esempio n. 3
0
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;

}
Esempio n. 4
0
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;
}