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()); }
REString Error::localizedDescription() const { REVariant * descr = _userInfo.findTypedValue(kErrorLocalizedDescriptionKey, REVariant::TypeString); return descr ? descr->toString() : REString(); }
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; }