public override int GetHashCode() { int hash = 1; if (ServerTimestamp != 0) { hash ^= ServerTimestamp.GetHashCode(); } if (ClientIp != 0) { hash ^= ClientIp.GetHashCode(); } if (RedirectIp != 0) { hash ^= RedirectIp.GetHashCode(); } if (RedirectPort != 0) { hash ^= RedirectPort.GetHashCode(); } if (ClientIpV6.Length != 0) { hash ^= ClientIpV6.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
private MiHomeResponse Send(MiHomeRequest request) { if (!request.IsHandshake) { Connect(); NextId(); // Update the request with the updated values from the handshake request.UpdateDeviceId(_deviceId); request.UpdateTimestamp(_serverTimestamp); request.RequestId = _requestId; } int retryCount = request.NetworkOptions.RetryCount; do { var requestPayload = request.GetBytes(); var responsePayload = _socket.Send(requestPayload, request.NetworkOptions); if (responsePayload != null) { var miResponse = new MiHomeResponse(_miToken, responsePayload); if (miResponse.Success) { // We need Device ID and server timestamp for subsequent requests _serverTimestamp = miResponse.Timestamp; if (_deviceId == null && miResponse.DeviceId != null) { _deviceId = miResponse.DeviceId; } return(miResponse); } } request.RequestId++; retryCount--; } while (retryCount > 0); return(new MiHomeResponse()); }