Esempio n. 1
0
        public int AddFieldHeader(Field f)
        {
            if (!f.IsSerialized())
            {
                throw new InvalidOperationException(string.Format("Field {0} is a discardable field", f));
            }

            byte[] n = f.Bytes;
            Add(n);
            return n.Length;
        }
Esempio n. 2
0
 public AffectedNode(StObject source)
 {
     fields = source.Fields;
     _field = Field;
     _nested = GetNested;
 }
Esempio n. 3
0
 public static int AsInteger(Field f, string s)
 {
     return Lookup[f].AsInteger(s);
 }
Esempio n. 4
0
 public static string AsString(Field f, Number i)
 {
     return Lookup[f].AsString(i.IntValue());
 }
Esempio n. 5
0
 public static bool IsSymbolicField(Field field)
 {
     return Lookup.ContainsKey(field);
 }
Esempio n. 6
0
 public void Add(Field field, ISerializedType value)
 {
     AddFieldHeader(field);
     if (field.IsVlEncoded())
     {
         AddLengthEncoded(value);
     }
     else
     {
         value.ToBytesSink(_sink);
         if (field.Type == Fields.Type.StObject)
         {
             AddFieldHeader(Field.ObjectEndMarker);
         }
         else if (field.Type == Fields.Type.StArray)
         {
             AddFieldHeader(Field.ArrayEndMarker);
         }
     }
 }
Esempio n. 7
0
 public static string GetName(Field f)
 {
     return Values.SingleOrDefault(q => q.Value == f).Key;
 }
Esempio n. 8
0
        public static byte[] AsBytes(Field field)
        {
            int name = field.Id;
            int type = field.Type.Id;

            var header = new List<byte>(3);

            if (type < 16)
            {
                if (name < 16) // Common type, common name.
                {
                    header.Add((byte)((type << 4) | name));
                }
                else
                {
                    // Common type, uncommon name.
                    header.Add((byte)(type << 4));
                    header.Add((byte)(name));
                }
            }
            else if (name < 16)
            {
                // Uncommon type, common name.
                header.Add((byte)(name));
                header.Add((byte)(type));
            }
            else
            {
                // Uncommon type, uncommon name.
                header.Add(0);
                header.Add((byte)(type));
                header.Add((byte)(name));
            }

            var headerBytes = new byte[header.Count()];
            for (int i = 0; i < header.Count; i++)
            {
                headerBytes[i] = header.ElementAt(i);
            }

            return headerBytes;
        }
Esempio n. 9
0
        static Field()
        {
            Values.Add("Generic", Generic);
            Values.Add("Invalid", Invalid);
            Values.Add("LedgerEntryType", LedgerEntryType);
            Values.Add("TransactionType", TransactionType);
            Values.Add("Flags", Flags);
            Values.Add("SourceTag", SourceTag);
            Values.Add("Sequence", Sequence);
            Values.Add("PreviousTxnLgrSeq", PreviousTxnLgrSeq);
            Values.Add("LedgerSequence", LedgerSequence);
            Values.Add("CloseTime", CloseTime);
            Values.Add("ParentCloseTime", ParentCloseTime);
            Values.Add("SigningTime", SigningTime);
            Values.Add("Expiration", Expiration);
            Values.Add("TransferRate", TransferRate);
            Values.Add("WalletSize", WalletSize);
            Values.Add("OwnerCount", OwnerCount);
            Values.Add("DestinationTag", DestinationTag);
            Values.Add("HighQualityIn", HighQualityIn);
            Values.Add("HighQualityOut", HighQualityOut);
            Values.Add("LowQualityIn", LowQualityIn);
            Values.Add("LowQualityOut", LowQualityOut);
            Values.Add("QualityIn", QualityIn);
            Values.Add("QualityOut", QualityOut);
            Values.Add("StampEscrow", StampEscrow);
            Values.Add("BondAmount", BondAmount);
            Values.Add("LoadFee", LoadFee);
            Values.Add("OfferSequence", OfferSequence);
            Values.Add("FirstLedgerSequence", FirstLedgerSequence);
            Values.Add("LastLedgerSequence", LastLedgerSequence);
            Values.Add("TransactionIndex", TransactionIndex);
            Values.Add("OperationLimit", OperationLimit);
            Values.Add("ReferenceFeeUnits", ReferenceFeeUnits);
            Values.Add("ReserveBase", ReserveBase);
            Values.Add("ReserveIncrement", ReserveIncrement);
            Values.Add("SetFlag", SetFlag);
            Values.Add("ClearFlag", ClearFlag);
            Values.Add("IndexNext", IndexNext);
            Values.Add("IndexPrevious", IndexPrevious);
            Values.Add("BookNode", BookNode);
            Values.Add("OwnerNode", OwnerNode);
            Values.Add("BaseFee", BaseFee);
            Values.Add("ExchangeRate", ExchangeRate);
            Values.Add("LowNode", LowNode);
            Values.Add("HighNode", HighNode);
            Values.Add("EmailHash", EmailHash);
            Values.Add("LedgerHash", LedgerHash);
            Values.Add("ParentHash", ParentHash);
            Values.Add("TransactionHash", TransactionHash);
            Values.Add("AccountHash", AccountHash);
            Values.Add("PreviousTxnID", PreviousTxnID);
            Values.Add("LedgerIndex", LedgerIndex);
            Values.Add("WalletLocator", WalletLocator);
            Values.Add("RootIndex", RootIndex);
            Values.Add("AccountTxnID", AccountTxnID);
            Values.Add("BookDirectory", BookDirectory);
            Values.Add("InvoiceID", InvoiceID);
            Values.Add("Nickname", Nickname);
            Values.Add("Feature", Feature);
            Values.Add("hash", hash);
            Values.Add("index", index);
            Values.Add("Amount", Amount);
            Values.Add("Balance", Balance);
            Values.Add("LimitAmount", LimitAmount);
            Values.Add("TakerPays", TakerPays);
            Values.Add("TakerGets", TakerGets);
            Values.Add("LowLimit", LowLimit);
            Values.Add("HighLimit", HighLimit);
            Values.Add("Fee", Fee);
            Values.Add("SendMax", SendMax);
            Values.Add("MinimumOffer", MinimumOffer);
            Values.Add("RippleEscrow", RippleEscrow);
            Values.Add("DeliveredAmount", DeliveredAmount);
            Values.Add("PublicKey", PublicKey);
            Values.Add("MessageKey", MessageKey);
            Values.Add("SigningPubKey", SigningPubKey);
            Values.Add("TxnSignature", TxnSignature);
            Values.Add("Generator", Generator);
            Values.Add("Signature", Signature);
            Values.Add("Domain", Domain);
            Values.Add("FundCode", FundCode);
            Values.Add("RemoveCode", RemoveCode);
            Values.Add("ExpireCode", ExpireCode);
            Values.Add("CreateCode", CreateCode);
            Values.Add("Account", Account);
            Values.Add("Owner", Owner);
            Values.Add("Destination", Destination);
            Values.Add("Issuer", Issuer);
            Values.Add("Target", Target);
            Values.Add("RegularKey", RegularKey);
            Values.Add("ObjectEndMarker", ObjectEndMarker);
            Values.Add("TransactionMetaData", TransactionMetaData);
            Values.Add("CreatedNode", CreatedNode);
            Values.Add("DeletedNode", DeletedNode);
            Values.Add("ModifiedNode", ModifiedNode);
            Values.Add("PreviousFields", PreviousFields);
            Values.Add("FinalFields", FinalFields);
            Values.Add("NewFields", NewFields);
            Values.Add("TemplateEntry", TemplateEntry);
            Values.Add("ArrayEndMarker", ArrayEndMarker);
            Values.Add("SigningAccounts", SigningAccounts);
            Values.Add("TxnSignatures", TxnSignatures);
            Values.Add("Signatures", Signatures);
            Values.Add("Template", Template);
            Values.Add("Necessary", Necessary);
            Values.Add("Sufficient", Sufficient);
            Values.Add("AffectedNodes", AffectedNodes);
            Values.Add("CloseResolution", CloseResolution);
            Values.Add("TemplateEntryType", TemplateEntryType);
            Values.Add("TransactionResult", TransactionResult);
            Values.Add("TakerPaysCurrency", TakerPaysCurrency);
            Values.Add("TakerPaysIssuer", TakerPaysIssuer);
            Values.Add("TakerGetsCurrency", TakerGetsCurrency);
            Values.Add("TakerGetsIssuer", TakerGetsIssuer);
            Values.Add("Paths", Paths);
            Values.Add("Indexes", Indexes);
            Values.Add("Hashes", Hashes);
            Values.Add("Features", Features);
            Values.Add("Transaction", Transaction);
            Values.Add("LedgerEntry", LedgerEntry);
            Values.Add("Validation", Validation);

            foreach (var value in Values)
            {
                if (ByCode.ContainsKey(value.Value._code))
                {
                    ByCode[value.Value._code] = value.Value;
                }
                else
                {
                    ByCode.Add(value.Value._code, value.Value);
                }
            }

            var values = new Field[Values.Count];
            Array.Copy(Values.Values.ToArray(), values, Values.Count);
            var sortedFields = new List<Field>(values);
            sortedFields.Sort(Comparator);

            for (int i = 0; i < values.Length; i++)
            {
                var av = values[i];
                var lv = sortedFields.ElementAt(i);
                if (av._code != lv._code)
                {
                    throw new ApplicationException("Field class declaration isn't presorted.");
                }
            }
        }
Esempio n. 10
0
 public static int AsInteger(Field f, string s)
 {
     return Lookup[f].AsInteger(s);
 }
Esempio n. 11
0
 public static string AsString(Field f, int i)
 {
     return Lookup[f].AsString(i);
 }
Esempio n. 12
0
 public static bool IsSymbolicField(Field field)
 {
     return Lookup.ContainsKey(field);
 }
Esempio n. 13
0
 protected void Put(Field f, Requirement r)
 {
     _requirementEnumMap.Add(f, r);
 }