Example #1
0
	void Transport::receivedAdvice(const REVariantMap & advice)
	{
		Advice a;
		a.reconnect = ADVICE_RECONNECT_NONE;
		a.timeout = a.interval = -1;
		
		REVariantMap::Iterator i = advice.iterator();
		while (i.next())
		{
			if (i.key().isEqual("reconnect") && i.value().isString())
			{
				if (i.value().toString().isEqual("retry"))
					a.reconnect = ADVICE_RECONNECT_RETRY;
				else if (i.value().toString().isEqual("handshake"))
					a.reconnect = ADVICE_RECONNECT_HANDSHAKE;
			}
			else if (i.key().isEqual("interval") && i.value().isNumber())
				a.interval = i.value().toInt64() / 1000;
			else if (i.key().isEqual("timeout") && i.value().isNumber())
				a.timeout = i.value().toInt64() / 1000;
		}
		
		_advice = a;
		
		REVariant * thisTransportAdvice = advice.findTypedValue(this->name(), REVariant::TypeMap);
		if (thisTransportAdvice) this->receivedAdvice(thisTransportAdvice->toMap());
	}
Example #2
0
REString Error::localizedDescription() const
{
    REVariant * descr = _userInfo.findTypedValue(kErrorLocalizedDescriptionKey, REVariant::TypeString);
    return descr ? descr->toString() : REString();
}
Example #3
0
	bool REVariant::isEqualToVariant(const REVariant & v) const
	{
		if (this->isNULL() && v.isNULL()) return true;

		switch (_t)
		{
			case TypeInteger: return (_u.int64Value == v.toInt64()); break;
			case TypeUnsignedInteger: return (_u.uint64Value == v.toUInt64()); break;
			case TypeReal: return (_u.doubleValue == v.toDouble()); break;
			case TypeBool: return (this->toBool() == v.toBool()); break;

			case TypeString:
				if (v.isString()) return this->toString().isEqual(v.toString());
				break;

			case TypeMap:
				if (v.isMap()) return this->toMap().isEqualToMap(v.toMap());
				break;

			case TypeList:
				if (v.isList()) return this->toList().isEqualToList(v.toList());
				break;

			default:
				break;
		}

		return false;
	}