/// <summary> /// Включает логгирование пакетов, передаваемых в указанной среде передачи. /// </summary> /// <param name = "backbone">Среда передачи, в которой нужно включить логгирование.</param> /// <remarks> /// Предупреждение. Для среды передачи данных <paramref name = "backbone" /> все передаваемые пакеты /// записываются в файл, имя которого совпадает с идентификатором среды передачи. /// </remarks> /// <exception cref = "ArgumentNullException"><paramref name = "backbone" /> является <c>null</c>.</exception> public void AttachToBackbone (IBackboneView backbone) { this.Attach (backbone, new FileStream (string.Format (@"{0}\{1}", this.location, backbone.Name), FileMode.OpenOrCreate, FileAccess.Write), true); }
/// <inheritdoc /> protected override bool IsCompatibleWith(IBackboneView backbone) { return (backbone is FastEthernet) || (backbone is Ethernet); }
public void DetachFromBackbone(IBackboneView backbone) { Contract.Requires <ArgumentNullException> (backbone != null); }
public void AttachToBackbone(IBackboneView backbone, Stream stream) { Contract.Requires <ArgumentNullException> (backbone != null); Contract.Requires <ArgumentNullException> (stream != null); }
/// <summary> /// ��������������. ��������� ������������� ���������� � ����� �������� ������. /// </summary> /// <param name = "backbone">����� ��������, � ������� ����������� �������������.</param> /// <returns><c>true</c>, ���� ������ ��������� ��������� �� ������ ��������, ��������� � <paramref name = "backbone" />.</returns> protected abstract bool IsCompatibleWith(IBackboneView backbone);
/// <summary> /// Включает логгирование пакетов, передаваемых в указанной среде передачи. /// </summary> /// <param name = "backbone">Среда передачи, в которой нужно включить логгирование.</param> /// <param name = "stream">Поток, в который требуется выводить лог.</param> /// <exception cref = "ArgumentNullException"><paramref name = "backbone" /> является <c>null</c>.</exception> /// <exception cref = "ArgumentNullException"><paramref name = "stream" /> является <c>null</c>.</exception> public void AttachToBackbone (IBackboneView backbone, Stream stream) { this.Attach (backbone, stream, false); }
private void Attach (IBackboneView backbone, Stream stream, bool disposing) { lock (this.lock_obj) { if (!this.dumpers.ContainsKey (backbone)) { this.dumpers.Add (backbone, new Triple <object, PCAPFileWriter, bool> ( new object (), new PCAPFileWriter (stream, backbone.Type, disposing), disposing)); } backbone.OnTransmit += (backbone1, packet) => { Triple <Object, PCAPFileWriter, bool> dumper_info; lock (this.lock_obj) dumper_info = this.dumpers [backbone1]; lock (dumper_info.First) dumper_info.Second.Write (packet, this.clock.CurrentTime); }; } }
/// <summary> /// Отключает логгирование пакетов, передаваемых в указанной среде передачи. /// </summary> /// <param name = "backbone">Среда передачи, в которой нужно отключить логгирование.</param> /// <exception cref = "ArgumentNullException"><paramref name = "backbone" /> является <c>null</c>.</exception> public void DetachFromBackbone (IBackboneView backbone) { Triple <Object, PCAPFileWriter, bool> dumper_info; lock (this.lock_obj) { dumper_info = this.dumpers [backbone]; this.dumpers.Remove (backbone); } lock (dumper_info.First) if (dumper_info.Third) dumper_info.Second.Dispose (); }
/// <summary> /// Включает логгирование пакетов, передаваемых в указанной среде передачи. /// </summary> /// <param name = "backbone">Среда передачи, в которой нужно включить логгирование.</param> /// <param name = "stream">Поток, в который требуется выводить лог.</param> /// <exception cref = "ArgumentNullException"><paramref name = "backbone" /> является <c>null</c>.</exception> /// <exception cref = "ArgumentNullException"><paramref name = "stream" /> является <c>null</c>.</exception> public void AttachToBackbone (IBackboneView backbone, Stream stream) { if (stream == null) throw new ArgumentNullException ("stream"); this.Attach (backbone, stream, false); }
private void Attach (IBackboneView backbone, Stream stream, bool disposing) { lock (this.lock_obj) { if (!this.dumpers.ContainsKey (backbone)) { this.dumpers.Add (backbone, new Triple <object, BinaryWriter, bool> ( new object (), new BinaryWriter (stream), disposing)); } backbone.OnTransmit += (backbone1, packet) => { Triple <Object, BinaryWriter, bool> dumper_info; lock (this.lock_obj) dumper_info = this.dumpers [backbone1]; lock (dumper_info.First) dumper_info.Second.Write (packet.Data); }; } }