мой вопрос довольно прост: как работает sp_session_relogin?
Вот как я пытаюсь его использовать.
bool login(const char* login, const char* password, bool remember)
{
if (remember) {
sp_error err = sp_session_relogin(_session);
if (err==SP_ERROR_OK) {
return true;
}
if (!login||!password) {
return false;
}
}
sp_session_login(_session, login, password, remember, NULL);
return true;
}
и я свое приложение я сначала звоню
login(0,0,true);
и если он возвращает false, я вспоминаю это так
login(username,password,true);
(имя пользователя и пароль извлекаются из пользовательского интерфейса). затем, если я завершу приложение и перезапущу его, первый вызов входа в систему продолжит возвращать false.
Отредактировано после ответа iKenndac
Я вызывал sp_session_logout(), но я не ждал вызова обратного вызова выхода из системы. У меня было, но не лучше. Вот как заканчивается мое приложение
if (_session) {
if (_loggedin) {
char buffer[1024];
int ret = sp_session_remembered_user(_session,buffer,sizeof(buffer));
if (ret>0) {
printf("remembered user: %s\n",buffer);
}
sp_session_logout(_session);
int msTilNext = 0;
while(_loggedin) {
sp_session_process_events(_session, &msTilNext);
}
}
sp_session_release(_session);
_session = 0;
}
sp_session_remembered_user правильно возвращает мое имя пользователя. После выхода из системы я жду, когда обратный вызов выхода из системы будет вызван событием обработки с помощью sp_session_process_events. Когда вызывается обратный вызов выхода из системы, _loggedin становится ложным, поэтому цикл заканчивается. Я освобождаю сессию. И вполне приложение.
Вы видите еще одну ошибку или пропущенный материал? Любая идея ?
Спасибо.