Здравствуйте, гость ( Вход | Регистрация )
Гость_Алексей_* | Дата 29.12.2011, 10:42 |
Значит используем boost::enable_shared_from_this в качестве предка Session. В момент, когда нужно прервать работу и уничтожить объект Session, делаем для сокета shutdown, все активные (уже запущенные обработчики) сработают с error == operation_aborted и при получении этого кода, ты не будешь перезапускать обработчики. Ссылок на объект не останеться и он будет разрушен. Наверно так и сделаю. Спасибо BRE за помощь... |
|
BRE | Дата 28.12.2011, 20:48 |
Ага.))) Значит используем boost::enable_shared_from_this в качестве предка Session. В момент, когда нужно прервать работу и уничтожить объект Session, делаем для сокета shutdown, все активные (уже запущенные обработчики) сработают с error == operation_aborted и при получении этого кода, ты не будешь перезапускать обработчики. Ссылок на объект не останеться и он будет разрушен. |
|
Гость_Алексей_* | Дата 28.12.2011, 20:22 |
Какого поведения мы хотим от объекта Session? Как я понял, при определенном состоянии ты хочешь прервать всю обработку и разрушить объект? Ага.))) |
|
BRE | Дата 28.12.2011, 18:00 |
как я понимаю функция shutdown заставит сокет игнорить вызов асинхронных методов записи и чтения... Какого поведения мы хотим от объекта Session? Как я понял, при определенном состоянии ты хочешь прервать всю обработку и разрушить объект? |
|
Гость_Алексей_* | Дата 28.12.2011, 17:31 |
Про что идет речь? Что не даст запускать? 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 |
ну shutdown прост не даст запускать новые.. а те что уже были отправлены до вызова shutdown. Про что идет речь? Что не даст запускать? |
|
Гость_Алексей_* | Дата 28.12.2011, 17:05 |
socket::shutdown После этого сработают все callback'и с кодом operation_aborted, при получении этого состояния просто не перезапускай новые обработчики. ну shutdown прост не даст запускать новые.. а те что уже были отправлены до вызова shutdown. чё с ними. серовно какбы ждать надо. |
|
Гость_Алексей_* | Дата 28.12.2011, 17:00 |
Принципе мне неважно, откуда они будут уничтожаться... но я чёт не понимаю, что это даст. Отловить дисконект я могу ток при записи и чтении... и удалять естественно я должен там после неких действий над объектом. |
|
BRE | Дата 28.12.2011, 16:58 |
Я хочу найти способ прост обарвать цепочку событий... отменить все асинхронные операции сокета... socket::shutdown После этого сработают все callback'и с кодом operation_aborted, при получении этого состояния просто не перезапускай новые обработчики. |
|
Гость_Алексей_* | Дата 28.12.2011, 16:54 |
как быть под виндой? И под вендой, и под linux, я бы не пользовался конструкцией: delete this; Если хочешь, что бы объекты Session разрушались сами используй boost::enable_shared_from_this. Ну как я понимаю через эту чтуку я буду ждать завершения всех асинхронных операций.. а потом тока вызоветься диструктор моего обьекта. Я хочу найти способ прост обарвать цепочку событий... отменить все асинхронные операции сокета... отправка и получение данных мне уже не нужна.. когда я добил обьект... иль я чёт непонимаю... ну за подсказку спасибо.. я какрас копал в эту сторону. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 0:25 |