コード例 #1
0
        private void processNextTransfer()
        {
            LTTransfer nextItem = null;

            lock (_transferLock)
            {
                if (_transfers.Count() > 0)
                {
                    nextItem = _transfers[0];
                    _transfers.RemoveAt(0);
                }
            }

            if (nextItem != null)
            {
                // Trigger execution of transfers
                Task.Run(() =>
                {
                    try
                    {
                        Logger.Info("Transfer to FIS:\n{0}", nextItem.Message);

                        if (_tcpClient != null)
                        {
                            var stream = _tcpClient.GetStream();

                            byte[] utf8Message = System.Text.Encoding.UTF8.GetBytes(nextItem.Message);
                            stream.Write(utf8Message, 0, utf8Message.Length);
                        }
                        else
                        {
                            throw new Exception("Transfer to FIS failed: connection not existing");
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e);
                        Disconnect();
                    }
                }).ContinueWith(delegate { processNextTransfer(); });
            }
            else
            {
                _transferInProgress = false;
            }
        }
コード例 #2
0
        private void scheduleTransfer(LTTransfer transfer)
        {
            Logger.Debug("Schedule transfer to FIS:\n{0}", transfer.Message);

            if (transfer.IsEmpty())
            {
                return;
            }

            lock (_transferLock)
            {
                // Remove all outdated transfers
                _transfers.RemoveAll(x => x.IsEqual(transfer));
                _transfers.Add(transfer);
            }

            if (!_transferInProgress)
            {
                _transferInProgress = true;
                processNextTransfer();
            }
        }
コード例 #3
0
 public bool IsEqual(LTTransfer other)
 {
     return(string.Equals(_actualXML, other._actualXML));
 }