Exemplo n.º 1
0
bool BnxDriver::Run() {
	if (!Load() || m_vBots.empty())
		return false;

	for (size_t i = 0; i < m_vBots.size(); ++i) {
		m_vBots[i]->SetEventBase(GetEventBase());
		m_vBots[i]->StartUp();
	}

	event_base_dispatch(GetEventBase());

	return true;
}
Exemplo n.º 2
0
Pipe::Pipe(const Module* pModule)
: Event(pModule) {
  if (pipe(_fds) != 0)
    throw std::runtime_error(strerror(errno));
  fcntl(_fds[0], F_SETFL, O_NONBLOCK);
  _read_event = event_new(GetEventBase()
                         ,_fds[0], EV_PERSIST|EV_READ, Pipe::EventCallback, this);
  event_add(_read_event, NULL);
};
Exemplo n.º 3
0
bool Listener::Listen() {
  if (_listener != NULL)
    return false;
  int fd = socket(AF_INET, SOCK_STREAM, 0);
  if (fd == -1)
    return false;
  struct sockaddr_in sin;
  bzero(&sin, sizeof(sin));
  sin.sin_family = AF_INET;
  sin.sin_port = htons(_port);
  if (bind(fd, (struct sockaddr*) &sin, sizeof(sin)) < 0)
    return false;
  _listener = evconnlistener_new_bind(GetEventBase(), Listener::listener_cb, this
                                    ,LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE|LEV_OPT_THREADSAFE, fd
                                    ,(struct sockaddr*) &sin, sizeof(sin));
  return _listener != NULL;
};
Exemplo n.º 4
0
struct bufferevent* Listener::createBufferEvent(evutil_socket_t fd) {
  if (_ssl_ctx != NULL)
    return bufferevent_openssl_socket_new(GetEventBase(), fd, SSL_new(_ssl_ctx)
                                         ,BUFFEREVENT_SSL_ACCEPTING, BEV_OPT_CLOSE_ON_FREE|BEV_OPT_THREADSAFE);
  return bufferevent_socket_new(GetEventBase(), fd, BEV_OPT_CLOSE_ON_FREE|BEV_OPT_THREADSAFE);
};