crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 29.3.2024, 0:25