private void OnVerifyDeviceKeysResponseReceived(object sender, VerifyDeviceKeysResponseReceivedEventArgs args) { if (args.Message.Nonce != _nonce) return; _replyReceived = true; Reply = args.Message; _waitForReply.Set(); _waitForReplyProcess.WaitOne(Timeout); args.MessageHandledSuccessfully = _processedSuccessfully; }
private void OnVerifyDeviceKeysResponseReceived(object sender, VerifyDeviceKeysResponseReceivedEventArgs args) { if (args.Message.Nonce != _nonce) { return; } _replyReceived = true; Reply = args.Message; _waitForReply.Set(); _waitForReplyProcess.WaitOne(Timeout); args.MessageHandledSuccessfully = _processedSuccessfully; }
private void ProcessMessages() { var apiClient = GetApiClient(); var serverAccount = Model.ServerAccounts.Get(_serverAccountId); CryptoKey linkedDeviceCryptoKey = null; if (serverAccount.LinkedDeviceCryptoKeyId != 0) linkedDeviceCryptoKey = Model.CryptoKeys.Get(serverAccount.LinkedDeviceCryptoKeyId); GetMessagesLongpoll.ResponseParams longpollResponse; try { var longpollRequest = new GetMessagesLongpoll(); _longpollInterrupt = new AutoResetEvent(false); longpollRequest.SetInteruptHandle(_longpollInterrupt); longpollResponse = longpollRequest.GetResponse(apiClient); } catch (NetworkErrorException) { Logger.Info("Network error attempting to obtain images."); _requestErrors++; return; } catch (RequestException) { return; } _requestErrors = 0; if (!longpollResponse.NewMessages) return; var getMessagesRequest = new GetMessages(); GetMessages.ResponseParams messagesResponse; try { messagesResponse = getMessagesRequest.GetResponse(apiClient); } catch (RequestException) { return; } foreach (var messageItem in messagesResponse.Messages) { if (_stopSyncLoop) return; var processedSucessfully = false; if (messageItem.Type == DeviceMessages.Types.DeviceToDeviceMessage) { if (linkedDeviceCryptoKey == null) continue; var messageContents = messageItem.GetContent<DeviceMessages.DeviceToDeviceMessage>(); //if (!string.IsNullOrEmpty(messageContents.LinkIdentifier)) //{ var message = getMessagesRequest.DecryptClientMessage( messageContents.EncryptedMessage, linkedDeviceCryptoKey.PublicKeyPem); switch (message.Type) { case DeviceToDeviceMessages.Types.SendEntrySecrets: if (SendSecretShareMessageReceived == null) break; var args = new SendEntrySecretsMessageReceivedEventArgs( (DeviceToDeviceMessages.SendEntrySecrets)message.Message); SendSecretShareMessageReceived.Invoke(this, args); processedSucessfully = args.MessageHandledSuccessfully; break; } //} } else { switch (messageItem.Type) { case DeviceMessages.Types.VerifyDeviceKeysResponse: if (VerifyDeviceKeysResponseReceived == null) break; var args = new VerifyDeviceKeysResponseReceivedEventArgs( messageItem.GetContent<DeviceMessages.VerifyDeviceKeysResponse>()); VerifyDeviceKeysResponseReceived.Invoke(this, args); processedSucessfully = args.MessageHandledSuccessfully; break; } } var processedRequest = new SetMessageStatus { DeviceMessageIdentifier = messageItem.Identifier, ProcessedSuccess = processedSucessfully }; processedRequest.GetResponse(apiClient); } }