MIO - это легкая библиотека ввода-вывода для Rust, в которой основное внимание уделяется добавлению как можно меньших накладных расходов на абстракции ОС.
1 ответ

Как сохранить ссылку на обработчик в поле hashmap

Я изучаю Rust и пытаюсь написать сервер websocket. Логика следующая: WSConnectionFactory создает WSHandler, который обрабатывает входящие сообщения и отправляет их другим клиентам в соответствии с произвольными правилами. Проблема в том, что я не зн…
23 апр '16 в 23:36
1 ответ

Каково поведение Мио в опросе с нулевым тайм-аутом?

Согласно mio::Poll документы: Функция блокируется до тех пор, пока не будет получено хотя бы одно событие готовности или истечет время ожидания. Тайм-аут None означает, что опрос будет заблокирован, пока не будет получено событие готовности.... Обра…
11 апр '18 в 16:08
1 ответ

MIO EventLoop не работает для TcpStream

Я начинающий Rust, борюсь с проблемой асинхронного ввода-вывода. Я решил использовать Mio. Я прочитал некоторые исходные коды + учебные пособия, но есть еще фундаментальная часть, которую я не понимаю. Я настраиваю сервер с netcat -k -l 127.0.0.1 99…
18 фев '16 в 16:22
1 ответ

Почему опрос Mio запускается дважды для пользовательских событий?

Следующий код генерирует "пользовательское событие", которое будет возвращено poll: extern crate mio; use mio::event::Evented; use mio::{Events, Poll, PollOpt, Ready, Registration, Token}; use std::thread::{sleep, spawn, JoinHandle}; use std::time::…
03 май '18 в 06:02
1 ответ

Получение частичных пакетов UDP от mio::udp::UdpSocket.recv

Я использую mio::udp::UdpSocket, чтобы получить ответ на запрос от клиента. Похоже, я получаю частичные UDP-пакеты при сработавшем событии. Я не уверен, является ли это ошибкой в ​​библиотеке mio или нет. Я пробовал PollOpt::level(), all(), empty(),…
15 сен '15 в 07:32
1 ответ

Нативная библиотека `kernel32` связана более чем с одним пакетом

Я клонировал и пытался собрать библиотеку сопрограмм MIO, но ее зависимости, кажется, конфликтуют: native library `kernel32` is being linked to by more than one package, and can only be linked to by one package kernel32-sys v0.2.0 kernel32-sys v0.1.…
09 ноя '15 в 08:35
1 ответ

Обнаружение зависания клиента в MIO

При использовании MIO (0.3.5), как я могу определить разрыв соединения? Я попробовал следующее: extern crate mio; use mio::{EventLoop,Token,ReadHint}; use std::io::Read; fn main(){ let listener = mio::tcp::TcpListener::bind("localhost:1234").unwrap(…
10 июн '15 в 14:26
0 ответов

Как принять клиентский сокет и затем опросить TcpStream в mio?

Я не могу понять, как принять клиентский сокет, а затем начать опрос для событий на возвращенном TcpStream с мио 0,6. Я попробовал этот код, но событие для Token(1) никогда не прибывает Хотя accept часть распечатана, клиент мгновенно отключается. lo…
30 янв '17 в 17:14
0 ответов

Как я могу создать TcpSocket и TcpStream в одном цикле событий MIO?

Могу ли я создать тот же сервер, что и Server или же Client с разными розетками? подобно A -> B -> C Здесь A - клиент сервера B, B - сервер A, но клиент сервера C. Как я могу зарегистрировать оба из них в одном MIO event_loop?
30 ноя '15 в 14:38
1 ответ

Работа с UDP с использованием mio и получение ошибки "MutBuf не реализован для типа MutSliceBuf"

В целях обучения я сейчас пытаюсь написать небольшую программу, которая будет реализовывать эхо-сервер для пакетов UDP, который будет работать на определенном наборе портов (скажем, 10000-60000). Так как для этого не очень хорошо спамить 50k потоков…
19 сен '15 в 03:28
1 ответ

Можно ли зарегистрировать несколько тайм-аутов в мио?

Я написал TCP-сервер в mio и зарегистрировал несколько тайм-аутов, но срабатывает только последний зарегистрированный тайм-аут. Нужна ли мне оболочка для моих тайм-аутов, чтобы объединить их или есть другие способы регистрации нескольких тайм-аутов …
21 дек '16 в 20:12
1 ответ

Проблема с типами буфера в Mio

Я хотел бы написать асинхронный сервер в Rust, используя mio, и у меня проблемы с типами буферов. Я пробовал разные типы буферов и не могу заставить его работать. Мой текущий код: extern crate mio; extern crate bytes; use std::io; use std::io::{Erro…
24 окт '15 в 07:53
0 ответов

"Ресурс временно недоступен" при попытке подключения к веб-сокету https с помощью ws-rs (mio)

Я пытаюсь установить безопасное соединение с помощью Rust ws-rs (по материалам Mio). Часть кода, которую я считаю актуальной: impl ws::Handler for Client { fn on_message(&mut self, msg: ws::Message) -> ws::Result<()> { println!("msg = {…
20 янв '19 в 13:20
1 ответ

Как обрабатывать ошибки в мио?

Я строю многопоточный асинхронный HTTP-сервер поверх MIO. Как я должен обрабатывать события на клиенте TcpStream соединения? За is_readable это довольно просто: я читаю запрос и пишу ответ. Для других видов я не уверен. Нужно ли мне shutdown() поток…
09 окт '16 в 09:58
1 ответ

Какой самый быстрый идиоматический способ изменить несколько структурных полей одновременно?

Многие библиотеки позволяют вам определять тип, который реализует данный trait использоваться в качестве обработчика обратного вызова. Для этого необходимо объединить все данные, необходимые для обработки события, в один тип данных, что усложняет за…
04 сен '15 в 17:50
0 ответов

Как прочитать кодовые точки Unicode из небуферизованного файла в цикле событий mio?

Я хотел бы использовать mio-ящик для чтения нажатий клавиш, когда они поступают небуферизованным способом. У меня уже есть код для отмены буфера стандартного ввода, и я создал цикл обработки событий: extern crate mio; extern crate termios; use termi…
19 дек '16 в 14:33
0 ответов

Как читать из Mio TcpStream с таймаутом?

Я использую Mioco. mio::net::tcp::TcpStream не реализует Cloneтак что кажется, что невозможно поделиться TcpStream через несколько потоков / сопрограмм (или, если это возможно, я не уверен, как; я довольно плохо знаком с Rust). Поэтому я предположил…
04 дек '15 в 14:15
1 ответ

Импортируем mio::tcp::TcpStream, но получаем std::net::tcp::TcpStream

При попытке адаптировать пример сервера, не уверен, что делать с этим поведением, где TcpStream Я прошу, и тот, который я получаю, кажется совершенно другим. Пример определения структуры: use mio::tcp::TcpStream; struct Connection { socket: TcpStrea…
29 июн '15 в 20:47
1 ответ

Нет ошибки для двух признаков, реализующих один и тот же метод

Согласно документам, Rust должен жаловаться, если я пытаюсь вызвать метод, предоставленный двумя различными чертами, такими как эта: trait Foo { fn f(&self); } trait Bar { fn f(&self); } struct Baz; impl Foo for Baz { fn f(&self) { print…
07 июн '15 в 21:21
0 ответов

Как я могу определить, что клиент закрыл сокет, используя mio 0.6?

Я хочу, чтобы способ обнаружить, что клиент закрыл сокет, чтобы я мог deregister это, но я не могу найти подходящий способ сделать это. Мой вопрос похож на Обнаружение зависания клиента в MIO, но есть два основных различия: Мне нужно кроссплатформен…
21 мар '17 в 08:12