public async Task WaitForEventsAsync(RemoteEvent remoteEvent) { while (true) { try { var operation = await _database.NextOperationAsync().ConfigureAwait(false); switch (operation) { case IscCodes.op_event: var dbHandle = _database.XdrStream.ReadInt32(); var buffer = _database.XdrStream.ReadBuffer(); var ast = new byte[8]; _database.XdrStream.ReadBytes(ast, 8); var eventId = _database.XdrStream.ReadInt32(); remoteEvent.EventCounts(buffer); break; default: Debug.Assert(false); break; } } catch (Exception) when(_disposing) { return; } catch (Exception ex) when(!_disposing) { remoteEvent.EventError(ex); break; } } }
public async Task WaitForEventsAsync(RemoteEvent remoteEvent) { while (true) { try { var operation = await _database.NextOperationAsync().ConfigureAwait(false); switch (operation) { case IscCodes.op_event: var dbHandle = _database.XdrStream.ReadInt32(); var buffer = _database.XdrStream.ReadBuffer(); var ast = _database.XdrStream.ReadBytes(8); var eventId = _database.XdrStream.ReadInt32(); remoteEvent.EventCounts(buffer); break; default: Debug.Assert(false); break; } } // happens as the connection is closed catch (ObjectDisposedException) { return; } catch (Exception ex) { remoteEvent.EventError(ex); break; } } }