public void Session_DivergingHistories_ShouldRaiseClientResetException() { TestHelpers.RunAsyncTest(async() => { var config = await SyncTestHelpers.GetFakeConfigAsync(); ClientResetException error = null; using (var realm = GetRealm(config)) { var session = GetSession(realm); var result = await SyncTestHelpers.SimulateSessionErrorAsync <ClientResetException>(session, ErrorCode.DivergingHistories, "Fake client reset is required"); CleanupOnTearDown(result.Item1); error = result.Item2; } Assert.That(error.BackupFilePath, Is.Not.Null); Assert.That(error.BackupFilePath, Does.Contain(Path.Combine("io.realm.object-server-recovered-realms", "recovered_realm"))); Assert.That(File.Exists(error.BackupFilePath), Is.False); var clientResetSuccess = error.InitiateClientReset(); Assert.That(clientResetSuccess, Is.True); Assert.That(File.Exists(error.BackupFilePath), Is.True); }); }
private static unsafe void HandleSessionError(IntPtr sessionHandlePtr, ErrorCode errorCode, byte *messageBuffer, IntPtr messageLength, IntPtr userInfoPairs, int userInfoPairsLength, bool isClientReset) { try { var handle = new SessionHandle(sessionHandlePtr); var session = new Session(handle); var message = Encoding.UTF8.GetString(messageBuffer, (int)messageLength); SessionException exception; if (isClientReset) { var userInfo = StringStringPair.UnmarshalDictionary(userInfoPairs, userInfoPairsLength); exception = new ClientResetException(session.User.App, message, userInfo); } else if (errorCode == ErrorCode.PermissionDenied) { var userInfo = StringStringPair.UnmarshalDictionary(userInfoPairs, userInfoPairsLength); exception = new PermissionDeniedException(session.User.App, message, userInfo); } else { exception = new SessionException(message, errorCode); } Session.RaiseError(session, exception); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private static unsafe void HandleSessionError(IntPtr sessionHandlePtr, ErrorCode errorCode, byte *messageBuffer, IntPtr messageLength, IntPtr userInfoPairs, int userInfoPairsLength) { var handle = new SessionHandle(sessionHandlePtr); var session = new Session(handle); var message = Encoding.UTF8.GetString(messageBuffer, (int)messageLength); SessionException exception; if (errorCode.IsClientResetError()) { var userInfo = MarshalErrorUserInfo(userInfoPairs, userInfoPairsLength); exception = new ClientResetException(message, userInfo); } else if (errorCode == ErrorCode.PermissionDenied) { var userInfo = MarshalErrorUserInfo(userInfoPairs, userInfoPairsLength); exception = new PermissionDeniedException(message, userInfo); } else { exception = new SessionException(message, errorCode); } Session.RaiseError(session, exception); }
private static unsafe void HandleSessionError(IntPtr sessionHandlePtr, ErrorCode errorCode, sbyte *messageBuffer, IntPtr messageLength, IntPtr userInfoPairs, int userInfoPairsLength) { var session = Session.Create(sessionHandlePtr); var message = new string(messageBuffer, 0, (int)messageLength, Encoding.UTF8); SessionException exception; if (errorCode.IsClientResetError()) { var userInfo = MarshalErrorUserInfo(userInfoPairs, userInfoPairsLength); exception = new ClientResetException(message, userInfo); } else { exception = new SessionException(message, errorCode); } Session.RaiseError(session, exception); }