Esempio n. 1
0
CTlsSocket::~CTlsSocket()
{
	remove_handler();

	Uninit();
	delete m_pSocketBackend;
}
Esempio n. 2
0
static msg_t SdThread(void *arg){
  chRegSetThreadName("MicroSD");
  (void)arg;

  FRESULT err;
  uint32_t clusters;
  FATFS *fsp;
  FIL Log;

  msg_t id;

  /* wait until card not ready */
NOT_READY:
  while (!sdcIsCardInserted(&SDCD1))
    chThdSleepMilliseconds(SDC_POLLING_INTERVAL);
  chThdSleepMilliseconds(SDC_POLLING_INTERVAL);
  if (!sdcIsCardInserted(&SDCD1))
    goto NOT_READY;
  else
    insert_handler();

  /* fs mounted? */
  if (!fs_ready)
    return RDY_RESET;

  /* are we have at least 16MB of free space? */
  err = f_getfree("/", &clusters, &fsp);
  err_check();
  if ((clusters * (uint32_t)SDC_FS.csize * (uint32_t)MMCSD_BLOCK_SIZE) < (16*1024*1024))
    return RDY_RESET;

  /* open file for writing log */
  char namebuf[MAX_FILENAME_SIZE];
  name_from_time(namebuf);
  err = f_open(&Log, namebuf, FA_WRITE | FA_CREATE_ALWAYS);
  err_check();

  /* main write cycle
   * This writer waits msg_t with mavlink message ID. Based on that ID it
   * will pack extern mavlink struct with proper packing function. */
  setGlobalFlag(GlobalFlags.logger_ready);
  while (TRUE){
    /* wait ID */
    if (logwriter_mb.fetch(&id, TIME_INFINITE) == RDY_OK){
      if (!sdcIsCardInserted(&SDCD1)){
        clearGlobalFlag(GlobalFlags.logger_ready);
        remove_handler();
        goto NOT_READY;
      }
      err = WriteLog(&Log, id, &fresh_data);
      err_check();
    }

    err = fs_sync(&Log);
    err_check();
  }

  return 0;
}
Esempio n. 3
0
CControlSocket::~CControlSocket()
{
	remove_handler();

	DoClose();

	delete m_pCSConv;
	m_pCSConv = 0;
}
Esempio n. 4
0
void ensure_handlers_started() {

    struct handler *h = handlers;
    while(h) {
        struct handler *next = h->next;
        if(h->h_type == PERSISTENT) {
            if(!launch_child(h)) {
                remove_handler(h);
            }
        }
        h = next;
    }
}
Esempio n. 5
0
void
SignalHandler::remove_handler(
  const std::string &	signal,
  CallbackBase &	callback)
{
  int isignal = convert_name_to_signal(signal);
  if (isignal >= 0) {
    remove_handler(isignal, callback);
  }
  else if (isignal == -1)
    throw std::runtime_error("signal cannot be handled");
  else if (isignal == -2)
    throw std::runtime_error("signal name invalid");
  else
    throw std::logic_error("invalid value from convert_node_to_signal()");
}
CTransferSocket::~CTransferSocket()
{
	remove_handler();
	if (m_transferEndReason == TransferEndReason::none) {
		m_transferEndReason = TransferEndReason::successful;
	}
	ResetSocket();

	if (m_transferMode == TransferMode::upload || m_transferMode == TransferMode::download) {
		if (ioThread_) {
			if (m_transferMode == TransferMode::download) {
				FinalizeWrite();
			}
			ioThread_->SetEventHandler(0);
		}
	}
}
Esempio n. 7
0
static void syscall_handler(struct intr_frame *f) {
	void *esp = f->esp;
	thread_current()->saved_esp = f->esp;

//	printf("$esp = %p\n",esp);

	byte_access_ok(esp,false);
//    hex_dump(esp, esp,16,true);
//    printf("\n");

	int sys_call_num = *(int*) esp;
    esp += sizeof(int *);
    byte_access_ok(esp,false);

//    printf("$sys_call_num = %p\n",sys_call_num);

	char* argv[5];

	switch (sys_call_num) {
	/* Projects 2 and later. */
	//TODO: please retrieve parameters from the stack
	//      and pass them to the handlers.
	case SYS_HALT: /* Halt the operating system. */
		halt_handler();
		break;
	case SYS_EXIT: /* Terminate this process. */
		parse_arg(esp, 1, argv);
		exit_handler((int) argv[0]);
		break;
	case SYS_EXEC: /* Start another process. */
		parse_arg(esp, 1, argv);
		f->eax=exec_handler((void*)argv[0]);
		break;
	case SYS_WAIT: /* Wait for a child process to die. */
		parse_arg(esp, 1, argv);
		f->eax=wait_handler((int) argv[0]);
		break;
	case SYS_CREATE: /* Create a file. */
		parse_arg(esp, 2, argv);
		f->eax=create_handler((void*)argv[0], (unsigned) argv[1]);
		break;
	case SYS_REMOVE: /* Delete a file. */
		parse_arg(esp, 1, argv);
		f->eax=remove_handler((void*)argv[0]);
		break;
	case SYS_OPEN: /* Open a file. */
		parse_arg(esp, 1, argv);
		f->eax=open_handler((void*)argv[0]);
		break;
	case SYS_FILESIZE: /* Obtain a file's size. */
		parse_arg(esp, 1, argv);
		f->eax=filesize_handler((int) argv[0]);
		break;
	case SYS_READ: /* Read from a file. */
		parse_arg(esp, 3, argv);
		f->eax=read_handler((int) argv[0], (void*) argv[1], (unsigned) argv[2]);
		break;
	case SYS_WRITE: /* Write to a file. */
		parse_arg(esp, 3, argv);
		f->eax=write_handler((int) argv[0], (void*) argv[1], (unsigned) argv[2]);
		break;
	case SYS_SEEK: /* Change position in a file. */
		parse_arg(esp, 2, argv);
		seek_handler((int) argv[0], (unsigned) argv[1]);
		break;
	case SYS_TELL: /* Report current position in a file. */
		parse_arg(esp, 1, argv);
		f->eax=tell_handler((int) argv[0]);
		break;
	case SYS_CLOSE: /* Close a file. */
		parse_arg(esp, 1, argv);
		close_handler((int) argv[0]);
		break;
	case SYS_MMAP:
		parse_arg(esp, 2, argv);
		f->eax=mmap_handler ((int) argv[0], (void*)argv[1]);
		break;
	case SYS_MUNMAP:
		parse_arg(esp, 1, argv);
		munmap_handler ((mapid_t) argv[0]);
		break;
	default:
		printf("system call %d not implemented!\n", sys_call_num);
	}

	//thread_exit();
}
Esempio n. 8
0
CRateLimiter::~CRateLimiter()
{
	remove_handler();
}
Esempio n. 9
0
servers_widget::servers_widget(QWidget *parent) :
    QWidget(parent),
    m_smodel(NULL),
    m_connect_menu(NULL),
    m_connect_action(NULL),
    m_remove_action(NULL),
    m_remove_all_action(NULL),
    last_server_name(""),
    last_server_port(0)
{
    setupUi(this);
    // prepare menus
    m_connect_menu = new QMenu(this);
    m_connect_action = new QAction(this);
    m_connect_action->setText(tr("Connect to"));
    m_connect_action->setIcon(QIcon(":/emule/common/ConnectDo.ico"));
    m_remove_action = new QAction(this);
    m_remove_action->setText(tr("Remove"));
    m_remove_action->setIcon(QIcon(":/emule/common/DeleteSelected.ico"));
    m_remove_all_action = new QAction(this);
    m_remove_all_action->setText(tr("Remove all"));
    m_remove_all_action->setIcon(QIcon(":/emule/common/DeleteAll.ico"));

    m_connect_menu->addAction(m_connect_action);
    m_connect_menu->addSeparator();
    m_connect_menu->addAction(m_remove_action);
    m_connect_menu->addAction(m_remove_all_action);

    connect(m_connect_action, SIGNAL(triggered()), this, SLOT(connect_handler()));
    connect(m_remove_action, SIGNAL(triggered()), this, SLOT(remove_handler()));
    connect(m_remove_all_action, SIGNAL(triggered()), this, SLOT(removeAll_handler()));

    m_smodel = new servers_table_model(this);
    m_smodel->load();

    m_sort_model = new QSortFilterProxyModel(this);
    m_sort_model->setSourceModel(m_smodel);
    tableServers->setModel(m_sort_model);

    Preferences pref;

    if (!hsplit->restoreState(pref.value("ServersWidget/HSplitter").toByteArray()))
    {
        QList<int> sz;
        sz << 500 << 100;
        hsplit->setSizes(sz);
    }

    tableServers->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);
    vsplit->restoreState(pref.value("ServersWidget/VSplitter").toByteArray());
    tableServers->horizontalHeader()->restoreState(pref.value("ServersWidget/TableServers").toByteArray());

    connect(tableServers->horizontalHeader(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)),
            this, SLOT(serversSortChanged(int, Qt::SortOrder)));

    connect(tableServers->horizontalHeader(), SIGNAL(customContextMenuRequested(const QPoint&)),
            this, SLOT(displayHeaderMenu(const QPoint&)));

    connect(tableServers, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayPopupMenu(const QPoint&)));

    tableServers->horizontalHeader()->setSortIndicator(servers_table_model::DC_NAME, Qt::AscendingOrder);
}