Granados.Poderosa.SFTP.SFTPClient.WaitHandle C# (CSharp) Method

WaitHandle() private method

private WaitHandle ( SFTPPacket requestPacket, uint requestId ) : byte[]
requestPacket SFTPPacket
requestId uint
return byte[]
        private byte[] WaitHandle(SFTPPacket requestPacket, uint requestId)
        {
            byte[] handle = null;
            _eventHandler.ClearResponseBuffer();
            Transmit(requestPacket);
            _eventHandler.WaitResponse(
                delegate(SFTPPacketType packetType, SSHDataReader dataReader) {
                    if (packetType == SFTPPacketType.SSH_FXP_STATUS) {
                        SFTPClientErrorException exception = SFTPClientErrorException.Create(dataReader);
                        if (exception.ID == requestId)
                            throw exception;
                    }
                    else if (packetType == SFTPPacketType.SSH_FXP_HANDLE) {
                        uint id = dataReader.ReadUInt32();
                        if (id == requestId) {
                            handle = dataReader.ReadByteString();
                            return true;    // processed
                        }
                    }

                    return false;   // ignored
                },
                _protocolTimeout
            );

            // sanity check
            if (Volatile.Read(ref handle) == null) {
                throw new SFTPClientException("Missing SSH_FXP_HANDLE");
            }

            return handle;
        }