![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.01.2011
Сообщений: 186
|
![]()
Заранее извиняюсь за плохое название темы, но в одну строку уместить проблему не получилось.
Ситуация такая: Есть два класса (скажем Core и Api), оба являются синглтонами, но это не суть важно. Есть список из неких объектов objs, каждый из которых имеет свой token (aka данные авторизации). Core вызывает api->GetObject(Token* token); В GetObject создается QNetworkAccessManager, собираются QNetworkRequest и header и делается пост запрос. QNetworkManager::finished(QNetworkR eply*) подключен к сигналу Api::ObjectFinished(QNetworkReply*) , к которому подключен слот в Core. Так вот, мне нужно, чтобы на выходном сигнале помимо QNetworkReply* был еще и Token*, который был передан в GetObject. Вся эта бадяга происходит асинхронно. objs дал для примера, на деле будет примерно следующее: objs1 - GetObject1 - Object1Finished objs2 - GetObject2 - Object2Finished То есть типов объектов несколько, каждый имеет Token*, некоторые еще имеют ID, в последнем случае его тоже надо иметь на выходе. TL;DR: нужен некий traceback, чтобы core мог уследить, к какому объекту относиться полученная информация. У самого идея пока только одна: сабклассить QNetworkAccessManager, в GetObject пихать нужные данные в свежесозданный QNetworkAccessManager; на выходе вызывать QNetworkReply::manager(), дальше понятно. Как вариант вместо Token* на выходе можно было бы иметь и void* на obj. P.S. Придумал и второй вариант: в api сделать QHash<void*,QNetworkAccessManager*> .
Lingua c++ non penis caninus est.
Последний раз редактировалось Dayman; 26.04.2011 в 17:19. |
![]() |
![]() |
![]() |
#2 |
Линуксоид
Участник клуба
Регистрация: 31.07.2009
Сообщений: 1,403
|
![]()
sender() не поможет?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 12.01.2011
Сообщений: 186
|
![]()
Не поможет.
sender вернет указатель на Api. Пока сделал наследованием от QNetworkAccessManager, добавив в класс void указатель. Работает.
Lingua c++ non penis caninus est.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с рамами/Проблема с ЖД | DRAGGER | Компьютерное железо | 6 | 04.01.2009 23:37 |