object IEmberVisitor <XmlExportState, object> .Visit(OctetStringEmberLeaf node, XmlExportState state)
        {
            var buffer = new StringBuilder();
            var value  = node.Value;

            for (int index = 0; index < value.Length; index++)
            {
                buffer.Append(value[index].ToString("X2"));

                if ((index & 0x1F) == 0x1F)
                {
                    buffer.AppendLine();
                }
            }

            return(WriteLeaf(node, state, buffer.ToString()));
        }
Exemplo n.º 2
0
        EmberNode CreateNode(string tagName, string typeName)
        {
            BerTag    tag;
            EmberNode node = null;

            if (BerTag.TryParse(tagName, out tag) &&
                typeName != null)
            {
                uint type;

                if (BerDefinitions.GetTypeFromName(typeName, true, out type))
                {
                    switch (type)
                    {
                    case BerType.Null:
                    {
                        node = new NullEmberLeaf(tag);
                        break;
                    }

                    case BerType.Boolean:
                    {
                        bool value;

                        if (bool.TryParse(_reader.ReadContentAsString(), out value))
                        {
                            node = new BooleanEmberLeaf(tag, value);
                        }

                        break;
                    }

                    case BerType.Integer:
                    {
                        long value;

                        if (long.TryParse(_reader.ReadContentAsString(), out value))
                        {
                            if ((ulong)value > int.MaxValue)
                            {
                                node = new LongEmberLeaf(tag, value);
                            }
                            else
                            {
                                node = new IntegerEmberLeaf(tag, (int)value);
                            }
                        }

                        break;
                    }

                    case BerType.Real:
                    {
                        double value;

                        if (double.TryParse(_reader.ReadContentAsString(), NumberStyles.Float, XmlExport.FormatProvider, out value))
                        {
                            node = new RealEmberLeaf(tag, value);
                        }

                        break;
                    }

                    case BerType.UTF8String:
                    {
                        node = new StringEmberLeaf(tag, _reader.ReadContentAsString());
                        break;
                    }

                    case BerType.OctetString:
                    {
                        var octets = System.Convert.FromBase64String(_reader.ReadContentAsString());
                        node = new OctetStringEmberLeaf(tag, octets);
                        break;
                    }

#pragma warning disable 618 // EmberFrame is obsolete
                    case BerType.Sequence:
                    {
                        if (tag == Legacy.EmberFrame.FrameTag)
                        {
                            node = new Legacy.EmberFrame();
                        }
                        else
                        {
                            node = new EmberSequence(tag);
                        }

                        break;
                    }
#pragma warning restore 618

                    case BerType.Set:
                    {
                        node = new EmberSet(tag);
                        break;
                    }

                    default:
                    {
                        if (_application != null)
                        {
                            node = _application.CreateNodeFromXml(type, tag, _reader);
                        }

                        if (node == null)
                        {
                            Debug.WriteLine("Unknown BER value type: " + type);

                            node = new EmberContainer(tag, null, type);
                        }

                        break;
                    }
                    }
                }
            }

            return(node);
        }
Exemplo n.º 3
0
        EmberNode CreateNode(string tagName, string typeName)
        {
            BerTag tag;
             EmberNode node = null;

             if(BerTag.TryParse(tagName, out tag)
             && typeName != null)
             {
            uint type;

            if(BerDefinitions.GetTypeFromName(typeName, true, out type))
            {
               switch(type)
               {
                  case BerType.Boolean:
                  {
                     bool value;

                     if(bool.TryParse(_reader.ReadContentAsString(), out value))
                        node = new BooleanEmberLeaf(tag, value);

                     break;
                  }

                  case BerType.Integer:
                  {
                     long value;

                     if(long.TryParse(_reader.ReadContentAsString(), out value))
                     {
                        if((ulong)value > int.MaxValue)
                           node = new LongEmberLeaf(tag, value);
                        else
                           node = new IntegerEmberLeaf(tag, (int)value);
                     }

                     break;
                  }

                  case BerType.Real:
                  {
                     double value;

                     if(double.TryParse(_reader.ReadContentAsString(), NumberStyles.Float, XmlExport.FormatProvider, out value))
                        node = new RealEmberLeaf(tag, value);

                     break;
                  }

                  case BerType.UTF8String:
                  {
                     node = new StringEmberLeaf(tag, _reader.ReadContentAsString());
                     break;
                  }

                  case BerType.OctetString:
                  {
                     var octets = System.Convert.FromBase64String(_reader.ReadContentAsString());
                     node = new OctetStringEmberLeaf(tag, octets);
                     break;
                  }

            #pragma warning disable 618 // EmberFrame is obsolete
                  case BerType.Sequence:
                  {
                     if(tag == Legacy.EmberFrame.FrameTag)
                        node = new Legacy.EmberFrame();
                     else
                        node = new EmberSequence(tag);

                     break;
                  }
            #pragma warning restore 618

                  case BerType.Set:
                  {
                     node = new EmberSet(tag);
                     break;
                  }

                  default:
                  {
                     if(_application != null)
                        node = _application.CreateNodeFromXml(type, tag, _reader);

                     if(node == null)
                     {
                        Debug.WriteLine("Unknown BER value type: " + type);

                        node = new EmberContainer(tag, null, type);
                     }

                     break;
                  }
               }
            }
             }

             return node;
        }