В процессе разработки (несколько специализированного) IRC-клиента возникла задача обработки сообщений, поступающих от сервера.
Каждое сообщение - это строка, заканчивающаяся символами
. Сообщения идут в течении всего сеанса
(в основном это PING-сообщения, на которые нужно оперативно отвечать PONG-сообщениями, иначе сервер решит, что ты отключен).
Собственно вопрос: как организовать FIFO-стек для накопления входящих сообщений? Обрабатывать сообщения будет отдельный поток. Пока что получается вот такая жуть:
code_27996.txt
Вопрос: а нельзя ли как-то попроще?
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
|
|||
карма: 1 |
| ||
файлы: 1 | code_27996.txt [1.2KB] [328] |
Ответов: 3889
Рейтинг: 362
|
|||
карма: 1 |
|
Ответов: 8958
Рейтинг: 824
|
|||
карма: 19 |
| ||
файлы: 1 | code_27997.txt [1.8KB] [204] |
Ответов: 5446
Рейтинг: 323
|
|||
Леонид, это не совсем то. Тут обработка команды происходит по "переполнению" стека, а я не могу предсказать, успею ли я обработать поступившую команду до того, как придёт следующая.
|
|||
карма: 1 |
|
Разработчик
Ответов: 26304
Рейтинг: 2146
|
|||
iarspider, я че-то не пойму, а чем тебя стандартный стек с защитой доступа не устраивает
![]() |
|||
карма: 22 |
|
Ответов: 8958
Рейтинг: 824
|
|||
карма: 19 |
| ||
файлы: 1 | code_27998.txt [1.1KB] [244] |
Ответов: 5446
Рейтинг: 323
|
|||
nesco, стандартный - он LIFO (последним пришёл — первым ушёл), а мне FIFO (первым пришёл — первым ушёл) надо.
|
|||
карма: 1 |
|
Разработчик
Ответов: 26304
Рейтинг: 2146
|
|||
Для строк я вот такое пользую
|
|||
карма: 22 |
|
Ответов: 3889
Рейтинг: 362
|
|||
iarspider писал(а): я не могу предсказать, успею ли я обработать поступившую команду до того, как придёт следующая |
|||
карма: 1 |
|
Ответов: 1821
Рейтинг: 168
|
|||
карма: 5 |
|
Разработчик
Ответов: 26304
Рейтинг: 2146
|
|||
sаmakacd, там как раз моя схема на StrList-e и плавает
|
|||
карма: 22 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
nesco писал(а): sаmakacd, там как раз моя схема на StrList-e и плаваетИ моя на MT-потоке ![]() |
|||
карма: 10 |
|
Разработчик
Ответов: 26304
Рейтинг: 2146
|
|||
Assasin писал(а): И моя на MT-потокеКороче -- бери чо хошь ![]() |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, взял твою схему, вот что в итоге получилось:
(тут было безобразие) ------------ Дoбавленo в 01.08: Основная засада в том, что в одном пакете могут быть более одной команды, либо хвост от одной и начало другой (и 0 или более целых команд между ними!) |
|||
карма: 1 |
|
Разработчик
Ответов: 26304
Рейтинг: 2146
|
|||
iarspider писал(а): Основная засада в том, что в одном пакете могут быть более одной команды, либо хвост от одной и начало другой (и 0 или более целых команд между ними!)Ну и какие у тебя у самого предложения ![]() |
|||
карма: 22 |
|