Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #6
0
bool
SetFlagsCommand::HandleUntagged(Response& response)
{
	// We're not that interested in the outcome, apparently
	return response.EqualsAt(1, "FETCH");
}