Esempio n. 1
0
 /// <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);
 }
Esempio n. 5
0
 /// <summary>
 ///   ��������������. ��������� ������������� ���������� � ����� �������� ������.
 /// </summary>
 /// <param name = "backbone">����� ��������, � ������� ����������� �������������.</param>
 /// <returns><c>true</c>, ���� ������ ��������� ��������� �� ������ ��������, ��������� � <paramref name = "backbone" />.</returns>
 protected abstract bool IsCompatibleWith(IBackboneView backbone);
Esempio n. 6
0
 /// <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);
 }
Esempio n. 7
0
        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);
                                       };
            }
        }
Esempio n. 8
0
        /// <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);
                                       };
            }
        }