コード例 #1
0
        public bool TryAddFactory(ImageFormat format, CoderFactory <TCoder> factory)
        {
            if (format == null)
            {
                throw new ArgumentNullException(nameof(format));
            }
            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }

            return(_coders.TryAdd(format, factory));
        }
コード例 #2
0
ファイル: Message.cs プロジェクト: huliang/BinaryNotes
 static Message()
 {
     {
         try
         {
             decoder = CoderFactory.getInstance().newDecoder("PER/U");
             encoder = CoderFactory.getInstance().newEncoder("PER/U");
         }
         catch (System.Exception e)
         {
             e = null;
         }
     }
 }
コード例 #3
0
 public ASN1TransportMessageCoder()
 {
     try
     {
         switchStaticBuffer();
         coderSchemaMap.Add(0x0000, CoderFactory.getInstance().newDecoder("BER"));
         coderSchemaMap.Add(0x0100, CoderFactory.getInstance().newDecoder("PER"));
         coderSchemaMap.Add(0x0101, CoderFactory.getInstance().newDecoder("PER/U"));
         IEncoder defEnc = CoderFactory.getInstance().newEncoder("PER/U");
         setDefaultEncoder(coderSchemeDefVal, defEnc);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.ToString());
     }
 }
コード例 #4
0
        protected void runEncoderPerfTest(string encoding)
        {
            IEncoder encoder = CoderFactory.getInstance().newEncoder(encoding);

            Assert.NotNull(encoder);
            // Create test structure
            DataSeq dt = new BERCoderTestUtils().createDataSeq();

            System.IO.Stream stream = new System.IO.MemoryStream();
            // Start test
            DateTime startTime = System.DateTime.Now;

            for (int i = 0; i < 100; i++)
            {
                encoder.encode <DataSeq>(dt, stream);
            }
            DateTime endTime  = System.DateTime.Now;
            TimeSpan interval = (endTime - startTime);

            System.Console.WriteLine("Encode elapsed time for " + encoding + ": " + interval.TotalSeconds);
        }
コード例 #5
0
        protected void runDecoderPerfTest(string encoding, CoderTestUtilities coderUtils)
        {
            IDecoder encoder = CoderFactory.getInstance().newDecoder(encoding);

            Assert.NotNull(encoder);
            // Create test structure
            System.IO.Stream stream = new System.IO.MemoryStream(
                coderUtils.createDataSeqBytes()
                );
            // Start test
            DateTime startTime = System.DateTime.Now;

            for (int i = 0; i < 100; i++)
            {
                DataSeq dt = encoder.decode <DataSeq>(stream);
                stream.Position = 0;
            }
            DateTime endTime  = System.DateTime.Now;
            TimeSpan interval = (endTime - startTime);

            System.Console.WriteLine("Decode elapsed time for " + encoding + ": " + interval.TotalSeconds);
        }
コード例 #6
0
        private Packet BuildGoosePacket()
        {
            EthernetLayer ethernetLayer =
                new EthernetLayer
            {
                Source      = new MacAddress((String)gooseParameters["maskedTextBox_srcMac"]),
                Destination = new MacAddress((String)gooseParameters["maskedTextBox_dstMac"]),
                EtherType   = (EthernetType)0x88b8,
            };

            VLanTaggedFrameLayer vlanLayer =
                new VLanTaggedFrameLayer
            {
                PriorityCodePoint        = ClassOfService.Background,
                CanonicalFormatIndicator = false,
                VLanIdentifier           = 50,
                EtherType = (EthernetType)0x88b8,
            };

            StringToDataConverter StringToUtc = new StringToDataConverter();
            UtcTime T = new UtcTime(StringToUtc.ConvertToTimeEntry(gooseParameters["textBox_Time"].ToString()));

            Pdu.GoID              = (String)gooseParameters["textBox_GoID"];
            Pdu.GocbRef           = (String)gooseParameters["textBox_GoCBRef"];
            Pdu.ConfRev           = (long)Convert.ToDecimal(gooseParameters["numericUpDown_CfgRev"]);
            Pdu.DatSet            = (String)gooseParameters["textBox_DatSet"];;
            Pdu.NdsCom            = ((String)gooseParameters["comboBox_NdsCom"] == "1") ? true : false;
            Pdu.SqNum             = (long)Convert.ToDecimal(gooseParameters["numericUpDown_SqNum"]);
            Pdu.StNum             = (long)Convert.ToDecimal(gooseParameters["numericUpDown_StNum"]);
            Pdu.TimeAllowedtoLive = (long)Convert.ToDecimal(gooseParameters["numericUpDown_TTL"]);
            Pdu.Simulation        = ((String)gooseParameters["comboBox_Test"] == "1") ? true : false;
            Pdu.T                = T;
            Pdu.AllData          = dataList;
            Pdu.NumDatSetEntries = dataList.Count;

            Goose = new GOOSE();
            Goose.selectGoosePdu(Pdu);

            MemoryStream ms      = new MemoryStream();
            IEncoder     encoder = CoderFactory.getInstance().newEncoder("BER");

            encoder.encode <GOOSE>(Goose, ms);

            byte[] rawGooseData = new byte[ms.Length + 8];
            // Set APPID
            rawGooseData[0] = (byte)(((long)Convert.ToDecimal(gooseParameters["numericUpDown_AppID"]) & 0xFF00) >> 8);
            rawGooseData[1] = (byte)(((long)Convert.ToDecimal(gooseParameters["numericUpDown_AppID"])) & 0xFF);
            // Set Length
            rawGooseData[2] = (byte)(((ms.Length + 8) & 0xFF00) >> 8);
            rawGooseData[3] = (byte)((ms.Length + 8) & 0xFF);
            // Set Reserved 1 and Reserved 2
            rawGooseData[4] = 0;
            rawGooseData[5] = 0;
            rawGooseData[6] = 0;
            rawGooseData[7] = 0;

            ms.Position = 0;
            ms.Read(rawGooseData, 8, (int)ms.Length);

            PayloadLayer payloadLayer =
                new PayloadLayer
            {
                Data = new Datagram(rawGooseData),
            };

            PacketBuilder builder;

            if (Convert.ToString(gooseParameters["checkBox_VlanTagEn"]) == "True")
            {
                builder = new PacketBuilder(ethernetLayer, vlanLayer, payloadLayer);
                ethernetLayer.EtherType = EthernetType.None;
            }
            else
            {
                builder = new PacketBuilder(ethernetLayer, payloadLayer);
            }

            return(builder.Build(DateTime.Now));
        }
コード例 #7
0
 public bool TryGetValue(ImageFormat key, [MaybeNullWhen(false)] out CoderFactory <TCoder> value)
 {
     return(_coders.TryGetValue(key, out value));
 }
コード例 #8
0
 public bool TryGetFactory(ImageFormat format, [MaybeNullWhen(false)] out CoderFactory <TCoder> factory)
 {
     return(_coders.TryGetValue(format, out factory));
 }