コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        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;
                }
            }
        }