![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
AleksPingvin |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 20.5.2011 Репутация: нет Всего: нет |
Понадобилось в клиенте реализовать возможность отправки синхронных команд.
Есть базовый класс с объявленным ReetrantLock-ом и созданным на его базе Condition-ом. Первое, что пришло в голову - после захвата блокировки и отправки пакета на сервер делать await(TIMEOUT) у condition, а в методе IoHandler.messageRecive делать для кондишена signalAll(). Предварительно я выставил:
Сам код отправки выглядел примерно так:
Код приема:
В результате получил следующий эффект - сервер получает команду, отрабатывает и возвращает результат. Декодер на клиенте регистрирует получение сообщения, отрабатывает его, возвращает true и... все. Пока не истечет таймаут сообщение в IoHandler не поступает. Побившись пару часов и не придя к решению, попробовал сделать по феншую:
Однако проблема осталась точно такая же, после обработки декодером сообщение не поступает ни куда. В данном коде мы просто "повиснем" на readFuture.awaitUninterruptibly(); Подскажите - как быть? Это сообщение отредактировал(а) AleksPingvin - 20.5.2012, 11:31 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |