Esempio n. 1
0
        public async Task <ITerminal> GetTerminalAsync()
        {
            TerminalLease lease;

            if (_cache.Count == 0)
            {
                lease = await Repository.LeaseAsync(Id);
            }
            else
            {
                lease = _cache.Pop();
            }

            if (lease == null)
            {
                return(null);
            }

            _leased.Add(lease);

            // As propriedades do Lease tem prioridade sobre as configuradas no Pool
            var server  = lease.Servidor ?? Server;
            var empresa = lease.Empresa ?? Empresa;

            ITerminal term = new Terminal(server, lease.Terminal, empresa);

            term.AddDisposeCallback(async instance => { await ReleaseTerminalAsync(instance); });
            return(term);
        }