bool ExistsHandler::HandleUntagged(Response& response) { if (!response.EqualsAt(1, "EXISTS") || !response.IsNumberAt(0)) return false; uint32 count = response.NumberAt(0); if (fListener != NULL) fListener->MessageExistsReceived(count); return true; }
bool ExpungeHandler::HandleUntagged(Response& response) { if (!response.EqualsAt(1, "EXPUNGE") || !response.IsNumberAt(0)) return false; uint32 index = response.NumberAt(0); if (fListener != NULL) fListener->MessageExpungeReceived(index); return true; }
bool SelectCommand::HandleUntagged(Response& response) { if (response.EqualsAt(0, "OK") && response.IsListAt(1, '[')) { const ArgumentList& arguments = response.ListAt(1); if (arguments.EqualsAt(0, "UIDVALIDITY") && arguments.IsNumberAt(1)) { fUIDValidity = arguments.NumberAt(1); return true; } else if (arguments.EqualsAt(0, "UIDNEXT") && arguments.IsNumberAt(1)) { fNextUID = arguments.NumberAt(1); return true; } } return false; }
bool LoginCommand::HandleUntagged(Response& response) { if (!response.EqualsAt(0, "OK") || !response.IsListAt(1, '[')) return false; // TODO: we only support capabilities at the moment ArgumentList& list = response.ListAt(1); if (!list.EqualsAt(0, "CAPABILITY")) return false; fCapabilities.MakeEmpty(); while (list.CountItems() > 1) fCapabilities.AddItem(list.RemoveItemAt(1)); TRACE("CAPABILITY: %s\n", fCapabilities.ToString().String()); return true; }
bool FetchCommand::HandleUntagged(Response& response) { if (!response.EqualsAt(1, "FETCH") || !response.IsListAt(2)) return false; ArgumentList& list = response.ListAt(2); uint32 uid = 0; uint32 flags = 0; for (int32 i = 0; i < list.CountItems(); i += 2) { if (list.EqualsAt(i, "UID") && list.IsNumberAt(i + 1)) uid = list.NumberAt(i + 1); else if (list.EqualsAt(i, "FLAGS") && list.IsListAt(i + 1)) { // Parse flags ArgumentList& flagList = list.ListAt(i + 1); flags = ParseFlags(flagList); } } if (fListener != NULL) fListener->FetchedData(fFlags, uid, flags); return true; }
bool SetFlagsCommand::HandleUntagged(Response& response) { // We're not that interested in the outcome, apparently return response.EqualsAt(1, "FETCH"); }