public override void QueueEvents(RemoteEvent remoteEvent) { try { if (_eventManager == null) { var(auxHandle, ipAddress, portNumber, timeout) = ConnectionRequest(); _eventManager = new GdsEventManager(auxHandle, ipAddress, portNumber, timeout); _eventManager.Open(); var dummy = _eventManager.StartWaitingForEvents(remoteEvent); } remoteEvent.LocalId++; var epb = remoteEvent.BuildEpb(); var epbData = epb.ToArray(); Xdr.Write(IscCodes.op_que_events); Xdr.Write(_handle); Xdr.WriteBuffer(epbData); Xdr.Write(AddressOfAstRoutine); Xdr.Write(ArgumentToAstRoutine); Xdr.Write(remoteEvent.LocalId); Xdr.Flush(); var response = (GenericResponse)ReadResponse(); remoteEvent.RemoteId = response.ObjectHandle; } catch (IOException ex) { throw IscException.ForIOException(ex); } }
public override async Task QueueEvents(RemoteEvent remoteEvent, AsyncWrappingCommonArgs async) { try { if (_eventManager == null) { var(auxHandle, ipAddress, portNumber) = await ConnectionRequest(async).ConfigureAwait(false); _eventManager = new GdsEventManager(auxHandle, ipAddress, portNumber); await _eventManager.Open(async).ConfigureAwait(false); var dummy = _eventManager.WaitForEvents(remoteEvent, new AsyncWrappingCommonArgs(true)); } remoteEvent.LocalId++; var epb = remoteEvent.BuildEpb(); var epbData = epb.ToArray(); await Xdr.Write(IscCodes.op_que_events, async).ConfigureAwait(false); await Xdr.Write(_handle, async).ConfigureAwait(false); await Xdr.WriteBuffer(epbData, async).ConfigureAwait(false); await Xdr.Write(AddressOfAstRoutine, async).ConfigureAwait(false); await Xdr.Write(ArgumentToAstRoutine, async).ConfigureAwait(false); await Xdr.Write(remoteEvent.LocalId, async).ConfigureAwait(false); await Xdr.Flush(async).ConfigureAwait(false); var response = (GenericResponse) await ReadResponse(async).ConfigureAwait(false); remoteEvent.RemoteId = response.ObjectHandle; } catch (IOException ex) { throw IscException.ForIOException(ex); } }