Example #1
0
void Epoll::wait(Events& p_events) const
{
  boost::scoped_array<epoll_event> events(new epoll_event[m_size]);
  ::memset(events.get(), 0, m_size * sizeof (epoll_event));

  int eventsLen = ::epoll_wait(m_epollFd, events.get(), m_size, -1);
  if (eventsLen < 0)
  {
    throw std::runtime_error("Epoll wait failed");
  }

  for (int i = 0; i < eventsLen; ++i)
  {
    if (events[i].data.fd == m_selfStopPipes[0])
    {
      p_events.clear();
      break;
    }
    else
    {
      EventTypes ets;
      nativeEvents(events[i].events, ets);
      p_events.push_back(Event(ets, events[i].data.fd));
    }
  }
}
Example #2
0
static void
list_assembly(const SqlDatabase::TransactionPtr &tx, int func_id)
{
    Events events;
    gather_events(tx, func_id);
    load_events(tx, func_id, events);

    SqlDatabase::StatementPtr stmt = tx->statement("select address, assembly from semantic_instructions where func_id = ?"
                                                   " order by position")->bind(0, func_id);
    for (SqlDatabase::Statement::iterator insn=stmt->begin(); insn!=stmt->end(); ++insn) {
        rose_addr_t addr = insn.get<rose_addr_t>(0);
        std::string assembly = insn.get<std::string>(1);
        Events::const_iterator ei=events.find(addr);

        // Assembly line prefix
        if (ei!=events.end() && ei->second.nexecuted>0) {
            std::cout <<std::setw(9) <<std::right <<ei->second.nexecuted <<"x ";
        } else {
            std::cout <<std::string(11, ' ');
        }

        // Assembly instruction
        std::cout <<"| " <<StringUtility::addrToString(addr) <<":  " <<assembly <<"\n";

        if (ei!=events.end())
            show_events(ei->second);
    }
}
Example #3
0
void Client::init() {
    Debug::log("INIT");
    
    // INIT WINDOW
    WSFML *window = WSFML::instance();
    
    // CREATE CONTROL
    c = Control::instance();
    
    // CAMERA
    cam = Camera::instance();
    
    // TIME
    t = new Timer();
    
    hasStartEvent = false;

    window->getWindow()->setActive(false);
    
    sf::Thread thread_game(&Client::startGameLoop, this);
    thread_game.launch();
    
    Net *net = new Net();
    sf::Thread thread_net(&Net::startNet, net);
    thread_net.launch();
    
    while(hasStartEvent == false)
        sf::sleep(sf::milliseconds(1));
    
    printf("START\n");
    
    Events e;
    e.startListening(w->getPlayer());
}
Example #4
0
 void clear()
 {
     while (!events.empty())
     {
         delete events.top();
         events.pop();
     }
 }
Example #5
0
int main(int, char**)
{
    Events<> e0; Events<int> e1; Events<bool, int> e2; Variable<int> v; Variable<int*> va;
    auto vf = constant([] (int x) { return x * 9; });
    auto vb = constant([] (int x) { return x > 9; });
    Events<Events<int>> ee;
    Variable<Variable<int>> vv;
    Events<void (*)()> ex;
    Variable<Events<>> ve;

    {
        Events<int> a(e1);
        Events<int> b = e1.mergedWith(a);
        Events<bool> c = e2.transformedBy([] (bool b, int n) { return b || n > 9; });
        Events<int> d = b.transformedBy(vf);
        Events<bool, int> e = e2.filteredBy([] (bool b, int) { return b; });
        //Events<bool, int> f = e.filteredBy(v.transformedBy([] (int n) { return n < 0; }));
        //Events<int> g = e1.filteredBy(vb);
        std::array<Events<int>, 4> h = e1.partitionedBy<4>([] (int n) { return n % 4; });
        Events<bool> i = e0.taggedWith(false);
        Events<bool, int> j = e1.taggedAtFrontWith(true);
        Events<int> k = e0.withSnapshotOf(v);
        Events<int, int> l = k.withSnapshotAtFrontOf(v);
        Events<int, bool, bool, bool> m = e2.positions<1, 0, 0, 0>();
        Events<std::tuple<bool, int>> n = e2.tupled();
        Events<bool, int> o = n.untupled();
        Events<int> p = ee.flattened();
        Variable<int> q = e1.lastValueStartingWith(0);
        Variable<std::array<int, 5>> r = e1.historyStartingWithDefaults<5>();
        Variable<std::vector<int>> s = e1.history(9);
        Variable<int> t = e2.count();
        ex.exec();
        Events<int> u = r.changes()[4];
        Events<int> w = r.changes()[v];
        Events<bool> x = vb.changes()(9);
        Events<bool> y = vb.changes()(v);
        Events<int> z = u * 9 - v;
    }

    {
        Variable<int> a(5);
        Variable<int> b(5, e1);
        Variable<int> c(b);
        Variable<bool> d = a.transformedBy([] (int n) { return n < 55; });
        Variable<bool> e = b.transformedBy(vb);
        Variable<int> f = vv.flattened();
        Variable<int> g = va[5];
        Variable<int> h = va[v];
        Variable<bool> i = vb(9);
        Variable<bool> j = vb(v);
        Variable<bool> k = (vf((a + b * c) << 9) < g) || i;
        Variable<std::tuple<bool, int, int>> l = tupled(d, b, a);
        Variable<int> m = sample([] () { return 99; }, e0);
        Events<> n = variableEvents(ve);
        Mutable<int> o;
        o /= 9;
    }
}
Example #6
0
Events Database::fillEvent()
{
    Events e;
    this->query.first();
    this->record = this->query.record();
    e.setId(this->query.value(this->record.indexOf("id")).toUInt());
    e.setDescription(this->query.value(this->record.indexOf("name")).toString());
    return e;
}
Example #7
0
void Events::deviceEventCallback(int deviceId, int method, const char *data, int callbackId, void *context) {
	Events *e = reinterpret_cast<Events *>(context);
	if (e) {
		/** Please note!
		 * We are here in another thread than the main. Some measures to syncronize
		 * this must be taken!
		 **/
		e->deviceEvent(deviceId, method, data);
	}
}
Example #8
0
// Create the tmp_insns table to hold all the instructions for the function-to-be-listed and all the instructions of all
// the functions that are mentioned in events.
static void
gather_instructions(const SqlDatabase::TransactionPtr tx, int func_id, const Events &events)
{
    std::set<std::string> func_ids;
    func_ids.insert(StringUtility::numberToString(func_id));
    for (Events::const_iterator ei=events.begin(); ei!=events.end(); ++ei)
        func_ids.insert(StringUtility::numberToString(ei->second.func_id));
    std::string sql = "create temporary table tmp_insns as"
                      " select * from semantic_instructions"
                      " where func_id in ("+StringUtility::join_range(", ", func_ids.begin(), func_ids.end())+")";
    tx->execute(sql);
}
Example #9
0
bool EventQueue::takeEvents(Events& events)
{
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_eventQueueMutex);
    if (!_eventQueue.empty())
    {
        events.splice(events.end(), _eventQueue);
        return true;
    }
    else
    {
        return false;
    }
}
Example #10
0
bool EventQueue::copyEvents(Events& events) const
{
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_eventQueueMutex);
    if (!_eventQueue.empty())
    {
        events.insert(events.end(),_eventQueue.begin(),_eventQueue.end());
        return true;
    }
    else
    {
        return false;
    }
}
Example #11
0
Events CEventLog::Get(EventLevel level, bool includeHigherLevels /* = false */) const
{
  Events events;

  CSingleLock lock(m_critical);
  for (const auto& eventPtr : m_events)
  {
    if (eventPtr->GetLevel() == level ||
       (includeHigherLevels && eventPtr->GetLevel() > level))
      events.push_back(eventPtr);
  }

  return events;
}
Example #12
0
//-------------------------------------------------------------------------------------------------
void TimerActor::do_setup (acto::actor_ref& sender, const TimerActor::msg_setup& msg) {
	event_t* const	p_event = new event_t( actor_ref() );
	// -
	p_event->actor = msg.actor;
	p_event->once  = msg.once;
	p_event->time  = msg.time;
	p_event->owner = self;
	// -
//	core::set_notify( 0, acto::dereference(actor), MakeDelegate(this, &timer_t::do_delete) );
	// Установить системный таймер
	if ( 0 != ::CreateTimerQueueTimer( &p_event->timer,
		                               // Очередь таймеров
									   m_timers,
									   // -
									   &TimerActor::TimerProc,
									   // Параметр для процедуры
									   p_event,
									   // Период первого вызова
									   msg.time,
									   // Повторы
									   (msg.once ? 0 : msg.time),
									   // Флаги
									   0 ) )
	{
		// -
		m_events.push_back( p_event );
	}
	else {
		// Ошибка. Таймер не был созда.
		delete p_event;
	}
}
Example #13
0
bool EventQueue::takeEvents(Events& events, double cutOffTime)
{
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_eventQueueMutex);
    if (!_eventQueue.empty())
    {
        bool eventsTaken = false;
        Events::iterator itr = _eventQueue.begin();
        for(;
            itr != _eventQueue.end() && ((*itr)->getTime() <= cutOffTime);
            ++itr)
        {
            events.push_back(*itr);
            eventsTaken = true;
        }

        if (eventsTaken)
        {
            _eventQueue.erase(_eventQueue.begin(), itr);
        }
        
        return eventsTaken;
    }
    else
    {
        return false;
    }
}
Example #14
0
static void
tox4j_self_connection_status_cb (Tox *tox, TOX_CONNECTION connection_status, Events &events)
{
  unused (tox);
  auto msg = events.add_self_connection_status ();
  set_connection_status (msg, connection_status);
}
Example #15
0
static void
tox4j_friend_read_receipt_cb (Tox *tox, uint32_t friend_number, uint32_t message_id, Events &events)
{
  unused (tox);
  auto msg = events.add_friend_read_receipt ();
  msg->set_friend_number (friend_number);
  msg->set_message_id (message_id);
}
Example #16
0
Q_DECL_EXPORT int main(int argc, char *argv[]) {
    QCoreApplication app(argc, argv);
    app.setOrganizationName("cuteTube Events");
    app.setApplicationName("cuteTube Events");
    app.setApplicationVersion("0.1.0");
    
    QSslConfiguration config = QSslConfiguration::defaultConfiguration();
    config.setProtocol(QSsl::TlsV1);
    QSslConfiguration::setDefaultConfiguration(config);
    
    Events events;
    events.getEvents();
    
    QObject::connect(&events, SIGNAL(finished()), &app, SLOT(quit()));
    
    return app.exec();
}
Example #17
0
bool EventQueue::takeEvents(Events& events, double cutOffTime)
{
    OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_eventQueueMutex);
    if (!_eventQueue.empty())
    {
        // find last event if queue that came in before the cuttof.
        Events::reverse_iterator ritr = _eventQueue.rbegin();
        for(; ritr != _eventQueue.rend() && ((*ritr)->getTime() > cutOffTime); ++ritr) {}

        if (ritr==_eventQueue.rend()) return false;

        for(Events::iterator itr = _eventQueue.begin();
            itr != ritr.base();
            ++itr)
        {
            events.push_back(*itr);
        }

        // make sure that the events are in ascending time order, and any out of out events
        // have their time reset to the next valid time after them in the events list.
        double previousTime = cutOffTime;
        for(Events::reverse_iterator itr = events.rbegin();
            itr != events.rend();
            ++itr)
        {
            if ((*itr)->getTime() > previousTime)
            {
                OSG_INFO<<"Reset event time from "<<(*itr)->getTime()<<" to "<<previousTime<<std::endl;
                (*itr)->setTime(previousTime);
            }
            else
            {
                previousTime = (*itr)->getTime();
            }
        }

        // remove the events we are taking from the original event queue.
        _eventQueue.erase(_eventQueue.begin(), ritr.base());

        return true;
    }
    else
    {
        return false;
    }
}
Example #18
0
static void
tox4j_friend_lossless_packet_cb (Tox *tox, uint32_t friend_number, uint8_t const *data, size_t length, Events &events)
{
  unused (tox);
  auto msg = events.add_friend_lossless_packet ();
  msg->set_friend_number (friend_number);
  msg->set_data (data, length);
}
Example #19
0
static void
tox4j_friend_status_message_cb (Tox *tox, uint32_t friend_number, uint8_t const *message, size_t length, Events &events)
{
  unused (tox);
  auto msg = events.add_friend_status_message ();
  msg->set_friend_number (friend_number);
  msg->set_message (message, length);
}
Example #20
0
static void
tox4j_friend_connection_status_cb (Tox *tox, uint32_t friend_number, TOX_CONNECTION connection_status, Events &events)
{
  unused (tox);
  auto msg = events.add_friend_connection_status ();
  msg->set_friend_number (friend_number);
  set_connection_status (msg, connection_status);
}
Example #21
0
static void
tox4j_friend_typing_cb (Tox *tox, uint32_t friend_number, bool is_typing, Events &events)
{
  unused (tox);
  auto msg = events.add_friend_typing ();
  msg->set_friend_number (friend_number);
  msg->set_is_typing (is_typing);
}
Example #22
0
static void
tox4j_call_cb (ToxAV *av, uint32_t friend_number, bool audio_enabled, bool video_enabled, Events &events)
{
  unused (av);
  auto msg = events.add_call ();
  msg->set_friendnumber (friend_number);
  msg->set_audioenabled (audio_enabled);
  msg->set_videoenabled (video_enabled);
}
Example #23
0
static void
tox4j_friend_request_cb (Tox *tox, uint8_t const *public_key, /*uint32_t time_delta, */ uint8_t const *message, size_t length, Events &events)
{
  unused (tox);
  auto msg = events.add_friend_request ();
  msg->set_public_key (public_key, TOX_PUBLIC_KEY_SIZE);
  msg->set_time_delta (0);
  msg->set_message (message, length);
}
Example #24
0
//-------------------------------------------------------------------------------------------------
void TimerActor::delete_event(const acto::actor_ref& actor) {
	for (Events::iterator i = m_events.begin(); i != m_events.end(); i++) {
		if ((*i)->actor == actor) {
			// 1. Удалить системный таймер
			//
			// NOTE: Так как последний параметр INVALID_HANDLE_VALUE, то
			//       функция возвратит управление только тогда, когда завершится
			//       выполнение соответствующей TimerProc.
			::DeleteTimerQueueTimer( m_timers, (*i)->timer, INVALID_HANDLE_VALUE );
			// 2. Удалить экземпляр события
			delete (*i);
			// 3. Удалить элемент из списка
			m_events.erase( i );
			// -
			break;
		}
	}
}
Example #25
0
static void
tox4j_file_chunk_request_cb (Tox *tox, uint32_t friend_number, uint32_t file_number, uint64_t position, size_t length, Events &events)
{
  unused (tox);
  auto msg = events.add_file_chunk_request ();
  msg->set_friend_number (friend_number);
  msg->set_file_number (file_number);
  msg->set_position (position);
  msg->set_length (length);
}
Example #26
0
static void
tox4j_file_recv_chunk_cb (Tox *tox, uint32_t friend_number, uint32_t file_number, uint64_t position, uint8_t const *data, size_t length, Events &events)
{
  unused (tox);
  auto msg = events.add_file_recv_chunk ();
  msg->set_friend_number (friend_number);
  msg->set_file_number (file_number);
  msg->set_position (position);
  msg->set_data (data, length);
}
Example #27
0
static void
tox4j_file_recv_cb (Tox *tox, uint32_t friend_number, uint32_t file_number, uint32_t kind, uint64_t file_size, uint8_t const *filename, size_t filename_length, Events &events)
{
  unused (tox);
  auto msg = events.add_file_recv ();
  msg->set_friend_number (friend_number);
  msg->set_file_number (file_number);
  msg->set_kind (kind);
  msg->set_file_size (file_size);
  msg->set_filename (filename, filename_length);
}
int main() {
	std::string line;

	Events events;

	while (std::getline(std::cin, line)) {
		std::vector<std::string> elements;
		boost::split(elements, line, boost::is_any_of("/"));
		if (elements.size() != 4) {
			std::cerr << "Warning: elements.size() != 4" << std::endl;
			continue;
		}
		Event e;
		e.player = elements[0];
		e.map = elements[1];
		e.lapTime = parseLapTime(elements[2]);
		e.date = parseDate(elements[3]);

		events.push_back(e);
	}

	std::cout << "Number of events: " << events.size() << std::endl;

	std::sort(events.begin(), events.end());

	std::cout << "Last event: " << events.back() << std::endl;

	Ranking ranking = getRankings(events, boost::posix_time::time_from_string("2014-01-03 22:00:00.000"));
	for ( unsigned i = 0; i < 20 && i < ranking.size(); ++i ) {
		std::cout << i+1 << ".: " << ranking[i].getPlayer() << ", Time: " << ranking[i].getTotalLapTime() << std::endl;
	}

	std::cout << "Current leader = " << ranking[0].getTotalLapTime() << std::endl;
}
Example #29
0
static void
tox4j_video_bit_rate_status_cb (ToxAV *av,
                                uint32_t friend_number,
                                bool stable,
                                uint32_t bit_rate,
                                Events &events)
{
  unused (av);
  auto msg = events.add_videobitratestatus ();
  msg->set_friendnumber (friend_number);
  msg->set_stable (stable);
  msg->set_bitrate (bit_rate);
}
int BasicEventSyntaxCheckerAppLayer::run(int argc, char * argv[])
{
    //printf("BasicEventSyntaxCheckerAppLayer - version: %d.%d.%d (%s)\n",
    //        BASICEVENTSYNTAXCHECKER_MAJOR,
    //        BASICEVENTSYNTAXCHECKER_MINOR,
    //        BASICEVENTSYNTAXCHECKER_PATCH,
    //        BASICEVENTSYNTAXCHECKER_DebugFlag);
    //printf("\n");

    BasicEventHandling_ns::EventHandler_stderr handler_stderr;
    handler_stderr.open(argv[0]);

    std::string strEventDefSourceFile;

    BasicEventSyntaxChecker checker;
    checker.set_event_handler(&handler_stderr);
    if (!checker.get_params(argc,
                            argv,
                            strEventDefSourceFile))
    {
        return 1;
    }

    Events events;
    events.set_event_handler(&handler_stderr);

    if (!events.ReadEventsSourceFile(strEventDefSourceFile))
    {
        return 2;
    }

    if (!checker.CreateEventsCPP(strEventDefSourceFile))
    {
        return 3;
    }

    return 0;
}