Brunet.Simulator.Transport.SimulationEdgeListener.HandleEdgeSend C# (CSharp) Метод

HandleEdgeSend() публичный Метод

public HandleEdgeSend ( Edge from, ICopyable p ) : void
from Edge
p ICopyable
Результат void
    public void HandleEdgeSend(Edge from, ICopyable p) {
      SimulationEdge se_from = (SimulationEdge)from;
      if(!Nat.Outgoing(se_from.RemoteTA)) {
        return;
      }

      if(_ploss_prob > 0) {
        if(_rand.NextDouble() < _ploss_prob) {
          return;
        }
      }

      MemBlock mb = p as MemBlock;
      if(mb == null) {
        int offset = p.CopyTo(_ba.Buffer, _ba.Offset);
        mb = MemBlock.Reference(_ba.Buffer, _ba.Offset, offset);
        _ba.AdvanceBuffer(offset);
        _bytes += offset;
      }

      SimulationEdge se_to = se_from.Partner;
      if(se_to == null) {
        return;
      }

      if(!se_to.SimEL.Nat.Incoming(se_from.LocalTA)) {
        return;
      }

      se_to.Push(mb);
    }
  }