crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Ошибки при асинхронных опирациях asio
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость_Алексей_* Дата 29.12.2011, 10:42
 
Цитата(BRE @ 28.12.2011, 20:48) *
Значит используем boost::enable_shared_from_this в качестве предка Session.
В момент, когда нужно прервать работу и уничтожить объект Session, делаем для сокета shutdown, все активные (уже запущенные обработчики) сработают с error == operation_aborted и при получении этого кода, ты не будешь перезапускать обработчики. Ссылок на объект не останеться и он будет разрушен.


Наверно так и сделаю.
Спасибо BRE за помощь...
BRE Дата 28.12.2011, 20:48
 
Цитата(Гость_Алексей_* @ 28.12.2011, 21:22) *
Ага.)))

Значит используем boost::enable_shared_from_this в качестве предка Session.
В момент, когда нужно прервать работу и уничтожить объект Session, делаем для сокета shutdown, все активные (уже запущенные обработчики) сработают с error == operation_aborted и при получении этого кода, ты не будешь перезапускать обработчики. Ссылок на объект не останеться и он будет разрушен.
Гость_Алексей_* Дата 28.12.2011, 20:22
 
Цитата(BRE @ 28.12.2011, 18:00) *
Какого поведения мы хотим от объекта Session?
Как я понял, при определенном состоянии ты хочешь прервать всю обработку и разрушить объект?


Ага.)))
BRE Дата 28.12.2011, 18:00
 
Цитата(Гость_Алексей_* @ 28.12.2011, 18:31) *
как я понимаю функция shutdown заставит сокет игнорить вызов асинхронных методов записи и чтения...

Какого поведения мы хотим от объекта Session?
Как я понял, при определенном состоянии ты хочешь прервать всю обработку и разрушить объект?
Гость_Алексей_* Дата 28.12.2011, 17:31
 
Цитата(BRE @ 28.12.2011, 17:10) *
Про что идет речь? Что не даст запускать?



http://www.boost.org/doc/libs/1_47_0/doc/h.../overload1.html
.....This function is used to disable send operations, receive operations, or both.

как я понимаю функция shutdown заставит сокет игнорить вызов асинхронных методов записи и чтения...
BRE Дата 28.12.2011, 17:10
 
Цитата(Гость_Алексей_* @ 28.12.2011, 18:05) *
ну shutdown прост не даст запускать новые.. а те что уже были отправлены до вызова shutdown.

Про что идет речь? Что не даст запускать? :)

Гость_Алексей_* Дата 28.12.2011, 17:05
 
Цитата(BRE @ 28.12.2011, 16:58) *
socket::shutdown
После этого сработают все callback'и с кодом operation_aborted, при получении этого состояния просто не перезапускай новые обработчики.


ну shutdown прост не даст запускать новые.. а те что уже были отправлены до вызова shutdown.
чё с ними.

серовно какбы ждать надо.
Гость_Алексей_* Дата 28.12.2011, 17:00
  Принципе мне неважно, откуда они будут уничтожаться... но я чёт не понимаю, что это даст.
Отловить дисконект я могу ток при записи и чтении... и удалять естественно я должен там после неких действий над объектом.
BRE Дата 28.12.2011, 16:58
 
Цитата(Гость_Алексей_* @ 28.12.2011, 17:54) *
Я хочу найти способ прост обарвать цепочку событий... отменить все асинхронные операции сокета...

socket::shutdown
После этого сработают все callback'и с кодом operation_aborted, при получении этого состояния просто не перезапускай новые обработчики.

Гость_Алексей_* Дата 28.12.2011, 16:54
 
Цитата(BRE @ 28.12.2011, 16:42) *
Цитата(Гость_Алексей_* @ 28.12.2011, 16:21) *
как быть под виндой?

И под вендой, и под linux, я бы не пользовался конструкцией:
delete this;

Если хочешь, что бы объекты Session разрушались сами используй boost::enable_shared_from_this.


Ну как я понимаю через эту чтуку я буду ждать завершения всех асинхронных операций.. а потом тока вызоветься диструктор моего обьекта.
Я хочу найти способ прост обарвать цепочку событий... отменить все асинхронные операции сокета...
отправка и получение данных мне уже не нужна.. когда я добил обьект... иль я чёт непонимаю...

ну за подсказку спасибо.. я какрас копал в эту сторону.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 5:27