Пример #1
0
static int cma_handler(struct rdma_cm_id *cma_id, struct rdma_cm_event *event)
{
	int ret = 0;

	switch (event->event) {
	case RDMA_CM_EVENT_ADDR_RESOLVED:
		ret = addr_handler(cma_id->context);
		break;
	case RDMA_CM_EVENT_ROUTE_RESOLVED:
		ret = route_handler(cma_id->context);
		break;
	case RDMA_CM_EVENT_CONNECT_REQUEST:
		ret = connect_handler(cma_id);
		break;
	case RDMA_CM_EVENT_ESTABLISHED:
		ret = resolved_handler(cma_id->context, event);
		break;
	case RDMA_CM_EVENT_ADDR_ERROR:
	case RDMA_CM_EVENT_ROUTE_ERROR:
	case RDMA_CM_EVENT_CONNECT_ERROR:
	case RDMA_CM_EVENT_UNREACHABLE:
	case RDMA_CM_EVENT_REJECTED:
		printf("udaddy: event: %s, error: %d\n",
		       rdma_event_str(event->event), event->status);
		connect_error();
		ret = event->status;
		break;
	case RDMA_CM_EVENT_DEVICE_REMOVAL:
		/* Cleanup will occur after test completes. */
		break;
	default:
		break;
	}
	return ret;
}
Пример #2
0
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
    int (*connect_handler)(int, const struct sockaddr*, socklen_t);

    struct sockaddr_in* saddr = (struct sockaddr_in*)addr;

    int size = 156;
    char dest[size];
    unsigned short port = ntohs(saddr->sin_port);

    inet_ntop(AF_INET, &(saddr)->sin_addr.s_addr, dest, size);

    fprintf(stderr, "[connect to %s:%u]\n", dest, port);

    connect_handler = dlsym(RTLD_NEXT, "connect");

    return connect_handler(sockfd, addr, addrlen);
}
static gboolean
key_press_func(GtkWidget* widget, GdkEventKey* key, gpointer data)
{
#define KEY_ENTER 0xff0d
#define KEY_ESC   0xff1b
    struct entry_win *c = data;
    if (KEY_ENTER == key->keyval) {
		connect_handler(GTK_BUTTON(c->connect_button), c); 
        return TRUE;
    } else if (KEY_ESC == key->keyval) {
		c->connected = FALSE; 
        gtk_main_quit();
        return TRUE;
    }
	return FALSE;
#undef  KEY_ENTER
#undef  KEY_ESC
} 
Пример #4
0
void* eventloop(void* socket) {
    Msg msg;

    while (1) {
        msg_recv(socket, &msg);

        switch (msg.header.msg_type) {
            case msg_execute_request:
                execute_handler(socket, &msg);
                break;
            case msg_complete_request:
                complete_handler(socket, &msg);
                break;
            case msg_kernel_info_request:
                kernel_info_handler(socket, &msg);
                break;
            case msg_connect_request:
                connect_handler(socket, &msg);
                break;
            case msg_shutdown_request:
                shutdown_handler(socket, &msg);
                break;
            case msg_object_info_request:
                object_info_handler(socket, &msg);
                break;
            case msg_history_request:
                history_handler(socket, &msg);
                break;
            default:
                fprintf(stderr, "error: unsupported message type: %s", dump_msg_type(msg.header.msg_type));
                exit(1);
        }
    }

    pthread_exit(NULL);
    return NULL;
}
Пример #5
0
    (void)available1;
    std::size_t available2 = socket1.available(ec);
    (void)available2;

    socket1.bind(ip::udp::endpoint(ip::udp::v4(), 0));
    socket1.bind(ip::udp::endpoint(ip::udp::v6(), 0));
    socket1.bind(ip::udp::endpoint(ip::udp::v4(), 0), ec);
    socket1.bind(ip::udp::endpoint(ip::udp::v6(), 0), ec);

    socket1.connect(ip::udp::endpoint(ip::udp::v4(), 0));
    socket1.connect(ip::udp::endpoint(ip::udp::v6(), 0));
    socket1.connect(ip::udp::endpoint(ip::udp::v4(), 0), ec);
    socket1.connect(ip::udp::endpoint(ip::udp::v6(), 0), ec);

    socket1.async_connect(ip::udp::endpoint(ip::udp::v4(), 0),
        connect_handler());
    socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0),
        connect_handler());
    int i1 = socket1.async_connect(ip::udp::endpoint(ip::udp::v4(), 0), lazy);
    (void)i1;
    int i2 = socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0), lazy);
    (void)i2;

    socket1.set_option(settable_socket_option1);
    socket1.set_option(settable_socket_option1, ec);
    socket1.set_option(settable_socket_option2);
    socket1.set_option(settable_socket_option2, ec);
    socket1.set_option(settable_socket_option3);
    socket1.set_option(settable_socket_option3, ec);

    socket1.get_option(gettable_socket_option1);
Пример #6
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);
}