/// <summary> /// Gets an integer from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultVaule"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public short GetInt16Value(object key, short defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (key == null) { throw new ArgumentNullException("key"); } // return... return((short)this.GetValue(key, typeof(short), defaultValue, provider, onNotFound)); }
/// <summary> /// Gets an integer from the settings. /// </summary> /// <param name="name"></param> /// <param name="defaultVaule"></param> /// <param name="provider"></param> /// <param name="onNotFound"></param> /// <returns></returns> // mbr - 07-11-2005 - added.. public Guid GetGuidValue(string name, Guid defaultValue, IFormatProvider provider = null, OnNotFound onNotFound = OnNotFound.ReturnNull) { if (name == null) { throw new ArgumentNullException("name"); } if (name.Length == 0) { throw new ArgumentOutOfRangeException("'name' is zero-length."); } // mbr - 04-10-2006 - wasn't handling null. object asObject = this.GetValue(name, typeof(Guid), defaultValue, provider, onNotFound); if (asObject != null) { return((Guid)asObject); } else { return(defaultValue); } }
/// <summary> /// Gets the entity with the given ID. /// </summary> /// <param name="keyValues"></param> /// <returns></returns> public abstract object GetById(object[] keyValues, OnNotFound onNotFound);
public override object GetValue(string name, Type type, object defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (name == null) { throw new ArgumentNullException("name"); } if (name.Length == 0) { throw new ArgumentOutOfRangeException("'name' is zero-length."); } // // mbr - 07-03-2006 - do we need to flush? // CheckFlush(); // get... ConfigItem item = (ConfigItem)this.Items[name]; object useValue = null; if (item != null) { useValue = item.Data; } else { useValue = defaultValue; } // convert...? if (type != null) { return(ConversionHelper.ChangeType(useValue, type, Cultures.System)); } else { return(useValue); } }
EntityType IEntityDataControl.GetCurrentEntityType(OnNotFound onNotFound) { return(this.GetCurrentEntityType(onNotFound)); }
/// <summary> /// Gets the value in the given field. /// </summary> /// <param name="field"></param> /// <returns></returns> protected object GetFieldValue(EntityField field, Type returnType, ConversionFlags conversionFlags, OnNotFound onNotFound) { if (field == null) { throw new ArgumentNullException("field"); } // get it... int index = this.GetFieldIndex(field, onNotFound); object value = this.GetFieldValue(index, returnType, conversionFlags); // mbr - 31-08-2006 - added change in here for numeric types to round values... if (field.NeedsRounding) { if (value == null) { throw new InvalidOperationException("value is null."); } // convert... if (value is decimal) { value = Math.Round((decimal)value, field.Scale); } else if (value is double) { value = Math.Round((double)value, field.Scale); } else if (value is float) { value = Math.Round((float)value, field.Scale); } else { throw new NotSupportedException(string.Format("Cannot handle '{0}'.", value.GetType())); } } // return... return(value); }
/// <summary> /// Gets an integer from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultVaule"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> // mbr - 07-11-2005 - added.. public Guid GetGuidValue(object key, Guid defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (key == null) { throw new ArgumentNullException("key"); } // mbr - 04-10-2006 - wasn't handling null. object asObject = this.GetValue(key, typeof(Guid), defaultValue, provider, onNotFound); if (asObject != null) { return((Guid)asObject); } else { return(defaultValue); } }
/// <summary> /// Gets an encrypted string from the property bag. /// </summary> /// <param name="name"></param> /// <param name="containerName"></param> /// <param name="defaultValue"></param> /// <param name="provider"></param> /// <param name="onNotFound"></param> /// <returns></returns> // mbr - 2009-05-01 - added. public string GetEncryptedStringValue(string name, OnNotFound onNotFound) { return(this.GetEncryptedStringValue(name, this.DefaultEncryptionContainerName, onNotFound)); }
private async Task <Message> WireDecodeMessage(UInt32 magic) { var command = DataDecoder.DecodeFixedString(await ReceiveExactly(12)); var payloadSize = DataDecoder.DecodeUInt32(await ReceiveExactly(4)); var payloadChecksum = DataDecoder.DecodeUInt32(await ReceiveExactly(4)); var payload = await ReceiveExactly(payloadSize.ToIntChecked()); if (!Messaging.VerifyPayloadChecksum(payloadChecksum, payload)) { throw new Exception($"Checksum failed for {command}"); } var message = new Message ( Magic: magic, Command: command, PayloadSize: payloadSize, PayloadChecksum: payloadChecksum, Payload: payload.ToImmutableArray() ); switch (message.Command) { case "addr": { var addressPayload = NetworkEncoder.DecodeAddressPayload(payload); OnReceivedAddresses?.Invoke(owner, addressPayload.NetworkAddresses); } break; case "alert": { var alertPayload = NetworkEncoder.DecodeAlertPayload(payload); } break; case "block": { var block = DataDecoder.DecodeBlock(null, payload); OnBlock?.Invoke(owner, block); } break; case "getblocks": { var getBlocksPayload = NetworkEncoder.DecodeGetBlocksPayload(payload); OnGetBlocks?.Invoke(owner, getBlocksPayload); } break; case "getheaders": { var getHeadersPayload = NetworkEncoder.DecodeGetBlocksPayload(payload); OnGetHeaders?.Invoke(owner, getHeadersPayload); } break; case "getdata": { var invPayload = NetworkEncoder.DecodeInventoryPayload(payload); OnGetData?.Invoke(owner, invPayload); } break; case "headers": { var blockHeaders = ImmutableList.CreateBuilder <BlockHeader>(); var offset = 0; var headerCount = payload.ReadVarInt(ref offset).ToIntChecked(); for (var i = 0; i < headerCount; i++) { var blockHeader = DataDecoder.DecodeBlockHeader(null, payload, ref offset); // ignore tx count var int payload.ReadVarInt(ref offset); blockHeaders.Add(blockHeader); } OnBlockHeaders?.Invoke(owner, blockHeaders.ToImmutable()); } break; case "inv": { var invPayload = NetworkEncoder.DecodeInventoryPayload(payload); OnInventoryVectors?.Invoke(owner, invPayload.InventoryVectors); } break; case "notfound": { var invPayload = NetworkEncoder.DecodeInventoryPayload(payload); OnNotFound?.Invoke(owner, invPayload.InventoryVectors); } break; case "ping": { OnPing?.Invoke(owner, payload.ToImmutableArray()); } break; case "tx": { var tx = DataDecoder.DecodeEncodedTx(null, payload); OnTransaction?.Invoke(owner, tx); } break; case "version": { var versionPayload = NetworkEncoder.DecodeVersionPayload(payload, payload.Length); OnVersion?.Invoke(owner, versionPayload); } break; case "verack": { OnVersionAcknowledged?.Invoke(owner); } break; default: { logger.Warn($"Unhandled incoming message: {message.Command}"); } break; } //TODO //if (payloadStream.Position != payloadStream.Length) //{ // var exMessage = $"Wrong number of bytes read for {message.Command}, parser error: read {payloadStream.Position} bytes from a {payloadStream.Length} byte payload"; // Debug.WriteLine(exMessage); // throw new Exception(exMessage); //} return(message); }
/// <summary> /// Gets an integer from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultVaule"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public decimal GetDecimalValue(object key, decimal defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (key == null) { throw new ArgumentNullException("key"); } // return... return((decimal)this.GetValue(key, typeof(decimal), defaultValue, provider, onNotFound)); }
/// <summary> /// Loads the entities for the filter. /// </summary> /// <returns></returns> public virtual object ExecuteEntity(OnNotFound onNotFound) { return(Database.ExecuteEntity(this, onNotFound)); }
private async Task ReadStream() { while (!Closing) { try { //try to read a header var hdata = new byte[24]; await Stream.ReadAsyncExact(hdata, 0, hdata.Length); var h = new MessageHeader(); h.ReadFromPayload(hdata, 0); if (h != null) { //read the payload var pl = new byte[h.PayloadSize]; await Stream.ReadAsyncExact(pl, 0, pl.Length); bool checksumOk = false; //verify hash using (var sha = SHA256.Create()) { var h1 = sha.ComputeHash(pl); var h2 = sha.ComputeHash(h1); checksumOk = h2[0] == h.Checksum[0] && h2[1] == h.Checksum[1] && h2[2] == h.Checksum[2] && h2[3] == h.Checksum[3]; } if (checksumOk) { switch (h.Command) { case "addr\0\0\0\0\0\0\0\0": { if (OnAddr != null) { var a = new Addr(); a.ReadFromPayload(pl, 0); await OnAddr?.Invoke(this, a); } break; } case "alert\0\0\0\0\0\0\0": { if (OnAlert != null) { var a = new Alert(); a.ReadFromPayload(pl, 0); await OnAlert?.Invoke(this, a); } break; } case "feefilter\0\0\0": { if (OnFeeFilter != null) { var f = new FeeFilter(); f.ReadFromPayload(pl, 0); await OnFeeFilter?.Invoke(this, f); } break; } case "filteradd\0\0\0": { if (OnFilterAdd != null) { var f = new FilterAdd(); f.ReadFromPayload(pl, 0); await OnFilterAdd?.Invoke(this, f); } break; } case "filterclear\0": { if (OnFilterClear != null) { var f = new FilterClear(); f.ReadFromPayload(pl, 0); await OnFilterClear?.Invoke(this, f); } break; } case "filterload\0\0": { if (OnFilterLoad != null) { var f = new FilterLoad(); f.ReadFromPayload(pl, 0); await OnFilterLoad?.Invoke(this, f); } break; } case "getaddr\0\0\0\0\0": { if (OnGetAddr != null) { var ga = new GetAddr(); ga.ReadFromPayload(pl, 0); await OnGetAddr?.Invoke(this, ga); } break; } case "getblocks\0\0\0": { if (OnGetBlocks != null) { var gb = new GetBlocks(); gb.ReadFromPayload(pl, 0); await OnGetBlocks?.Invoke(this, gb); } break; } case "getdata\0\0\0\0\0": { if (OnGetData != null) { var gd = new GetData(); gd.ReadFromPayload(pl, 0); await OnGetData?.Invoke(this, gd); } break; } case "getheaders\0\0": { if (OnGetHeaders != null) { var gh = new GetHeaders(); gh.ReadFromPayload(pl, 0); await OnGetHeaders?.Invoke(this, gh); } break; } case "headers\0\0\0\0\0": { if (OnHeaders != null) { var hd = new Headers(); hd.ReadFromPayload(pl, 0); await OnHeaders?.Invoke(this, hd); } break; } case "inv\0\0\0\0\0\0\0\0\0": { if (OnInv != null) { var iv = new Inv(); iv.ReadFromPayload(pl, 0); await OnInv?.Invoke(this, iv); } break; } case "mempool\0\0\0\0\0": { if (OnMemPool != null) { var mp = new MemPool(); mp.ReadFromPayload(pl, 0); await OnMemPool?.Invoke(this, mp); } break; } case "notfound\0\0\0\0": { if (OnNotFound != null) { var nf = new NotFound(); nf.ReadFromPayload(pl, 0); await OnNotFound?.Invoke(this, nf); } break; } case "ping\0\0\0\0\0\0\0\0": { if (OnPing != null) { var ping = new Ping(); ping.ReadFromPayload(pl, 0); await OnPing?.Invoke(this, ping); } break; } case "pong\0\0\0\0\0\0\0\0": { if (OnPong != null) { var pong = new Pong(); pong.ReadFromPayload(pl, 0); await OnPong?.Invoke(this, pong); } break; } case "reject\0\0\0\0\0\0": { if (OnReject != null) { var re = new Reject(); re.ReadFromPayload(pl, 0); await OnReject?.Invoke(this, re); } break; } case "sendheaders\0": { if (OnSendHeaders != null) { var sh = new SendHeaders(); sh.ReadFromPayload(pl, 0); await OnSendHeaders?.Invoke(this, sh); } break; } case "verack\0\0\0\0\0\0": { if (OnVerAck != null) { var va = new VerAck(); va.ReadFromPayload(pl, 0); await OnVerAck.Invoke(this, va); } break; } case "version\0\0\0\0\0": { if (OnVersion != null) { var v = new bitcoin_lib.P2P.Version(""); v.ReadFromPayload(pl, 0); await OnVersion?.Invoke(this, v); } break; } default: { //Console.WriteLine($"Got cmd: {h.Command}"); break; } } } else { Closing = true; } } } catch (Exception ex) { Closing = true; } } }
public T GetValue <T>(T defaultValue, OnNotFound onNotFound, [CallerMemberName] string name = null) { return((T)this.GetValue(name, typeof(T), defaultValue, Cultures.System, onNotFound)); }
public abstract object GetValue(string name, Type type, object defaultValue, IFormatProvider provider = null, OnNotFound onNotFound = OnNotFound.ReturnNull);
/// <summary> /// Gets an integer from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultVaule"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public bool GetBooleanValue(object key, bool defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (key == null) { throw new ArgumentNullException("key"); } // return... return((bool)this.GetValue(key, typeof(bool), defaultValue, provider, onNotFound)); }
public T GetValue <T>(string name, T defaultValue = default(T), IFormatProvider provider = null, OnNotFound onNotFound = OnNotFound.ReturnNull) { return((T)GetValue(name, typeof(T), defaultValue, provider, onNotFound)); }
/// <summary> /// Gets a string from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultVaule"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public string GetStringValue(object key, string defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (key == null) { throw new ArgumentNullException("key"); } // return... return((string)this.GetValue(key, typeof(string), defaultValue, provider, onNotFound)); }
/// <summary> /// Gets a date/time from the settings. /// </summary> /// <param name="name"></param> /// <param name="defaultVaule"></param> /// <param name="provider"></param> /// <param name="onNotFound"></param> /// <returns></returns> public DateTime GetDateTimeValue(string name, DateTime defaultValue, IFormatProvider provider = null, OnNotFound onNotFound = OnNotFound.ReturnNull) { if (name == null) { throw new ArgumentNullException("name"); } if (name.Length == 0) { throw new ArgumentOutOfRangeException("'name' is zero-length."); } // return... return((DateTime)this.GetValue(name, typeof(DateTime), defaultValue, provider, onNotFound)); }
/// <summary> /// Gets an enumeration value from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultValue"></param> /// <param key="enumerationType"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public object GetEnumerationValue(object key, object defaultValue, Type enumerationType, IFormatProvider provider, OnNotFound onNotFound) { if (enumerationType == null) { throw new ArgumentNullException("enumerationType"); } if (!(enumerationType.IsEnum)) { throw new InvalidOperationException(string.Format("Type '{0}' is not an enumeration type.", enumerationType)); } // get... string defaultAsString = null; if (defaultValue != null) { defaultAsString = defaultValue.ToString(); } string asString = this.GetStringValue(key, defaultAsString, provider, onNotFound); if (asString != null && asString.Length > 0) { try { return(Enum.Parse(enumerationType, asString, true)); } catch (Exception ex) { throw new InvalidOperationException(string.Format("Failed to convert '{0}' to '{1}'.", asString, enumerationType), ex); } } else { return(null); } }
/// <summary> /// Gets the value in the given field. /// </summary> /// <returns></returns> protected object GetFieldValue(string fieldName, Type returnType, ConversionFlags conversionFlags, OnNotFound onNotFound) { if (fieldName == null) { throw new ArgumentNullException("fieldName"); } if (fieldName.Length == 0) { throw ExceptionHelper.CreateZeroLengthArgumentException("fieldName"); } // get it... int index = this.GetFieldIndex(fieldName, onNotFound); return(this.GetFieldValue(index, returnType, conversionFlags)); }
/// <summary> /// Gets a value. /// </summary> /// <param key="key"></param> /// <param key="type"></param> /// <param key="defaultValue"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public abstract object GetValue(object key, Type type, object defaultValue, IFormatProvider provider, OnNotFound onNotFound);
/// <summary> /// Creates a parameter for the given field. /// </summary> /// <param name="field"></param> /// <returns></returns> protected SqlStatementParameter CreateParameterForField(EntityField field, bool forceToDbNull, OnNotFound throwIfNotFound) { if (field == null) { throw new ArgumentNullException("field"); } // mbr - 27-10-2005 - added ability to force to DBNull... object value = null; if (forceToDbNull) { value = DBNull.Value; } else { value = this.GetFieldValue(field, null, ConversionFlags.Safe, throwIfNotFound); // do we have a DB null equivalent? if (field.HasDBNullEquivalent) { // check... if (object.Equals(value, field.DBNullEquivalent)) { value = DBNull.Value; } } // if we're null, or a min date time, use DB null. if (value == null || (value is DateTime && ((DateTime)value) == DateTime.MinValue)) { value = DBNull.Value; } // // mbr - 27-10-2005 - if we are DBNull, and we have an equivalent, use that... // if(value is DBNull && field.HasDBNullEquivalent) // value = field.DBNullEquivalent; } // return... return(new SqlStatementParameter(field.NativeName.Name, field.DBType, value)); }
/// <summary> /// Gets a date/time from the settings. /// </summary> /// <param key="key"></param> /// <param key="defaultVaule"></param> /// <param key="provider"></param> /// <param key="onNotFound"></param> /// <returns></returns> public DateTime GetDateTimeValue(object key, DateTime defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (key == null) { throw new ArgumentNullException("key"); } // return... return((DateTime)this.GetValue(key, typeof(DateTime), defaultValue, provider, onNotFound)); }
public override object GetValue(object key, Type type, object defaultValue, IFormatProvider provider, OnNotFound onNotFound) { // get it... object value = this.GetValue(key); // do we have a type? if (value != null) { if (type != null) { return(ConversionHelper.ChangeType(value, type, provider)); } else { return(value); } } else { switch (onNotFound) { case OnNotFound.ReturnNull: return(defaultValue); case OnNotFound.ThrowException: throw new InvalidOperationException(string.Format("An item with key '{0}' ({1}) was not found.", key, key.GetType())); default: throw new NotSupportedException(string.Format("Cannot handle '{0}' ({1}).", onNotFound, onNotFound.GetType())); } } }
/// <summary> /// Gets the given value. /// </summary> /// <param name="name"></param> /// <param name="type"></param> /// <param name="defaultValue"></param> /// <param name="onNotFound">In this case, <see cref="OnNotFound.ReturnNull"></see> means 'return default value'.</param> /// <returns></returns> public override object GetValue(string name, Type type, object defaultValue, IFormatProvider provider, OnNotFound onNotFound) { if (name == null) { throw new ArgumentNullException("name"); } if (name.Length == 0) { throw new ArgumentOutOfRangeException("'name' is zero-length."); } // mbr - 21-07-2006 - type can be null. if (type == null) { // throw new ArgumentNullException("type"); type = typeof(object); } // ensure... this.EnsureInitialized(); // look up the value... object key = this.GetKey(name); object value = null; bool found = false; if (this.InnerValues.Contains(key) == false) { // load it... value = this.LoadValue(name, ref found); // did we find it? if (found == false) { value = MissingItem.Value; } // add... this.InnerValues[key] = value; } else { value = this.InnerValues[key]; } // found? if (value is MissingItem) { // now what? switch (onNotFound) { case OnNotFound.ReturnNull: value = defaultValue; break; case OnNotFound.ThrowException: throw new InvalidOperationException(string.Format(Cultures.Exceptions, "A value with name '{0}' was not found.", name)); default: throw new NotSupportedException(string.Format("Cannot handle '{0}' ({1}).", onNotFound, onNotFound.GetType())); } } // return it... if (type != typeof(object)) { // were we asked for a type? if (typeof(Type).IsAssignableFrom(type) == true) { if (value is Type) { return(value); } // value... value = Convert.ToString(value); if (value == null || ((string)value).Length == 0) { if (onNotFound == OnNotFound.ThrowException) { throw new InvalidOperationException(string.Format(Cultures.System, "The value for '{0}' was an empty string, and an empty string cannot be used to load a type.", name)); } else { return(null); } } // try and load it... try { return(Type.GetType((string)value, true, true)); } catch (Exception ex) { // mbr - 28-05-2006 - if we can't do it -- perhaps we're in the GAC? look for the name... string[] parts = ((string)value).Split(','); if (parts.Length == 2) { if (parts[1].Trim().ToLower().StartsWith("BootFX.Common")) { AssemblyName asmName = this.GetType().Assembly.GetName(); // append... StringBuilder builder = new StringBuilder(); builder.Append(value); builder.Append(", Version="); builder.Append(asmName.Version.ToString()); builder.Append(", Culture=neutral, PublicKeyToken="); foreach (byte b in asmName.GetPublicKeyToken()) { builder.Append(b.ToString("x2")); } // try again... try { return(Type.GetType(builder.ToString(), true, true)); } catch (Exception ex2) { throw new InvalidOperationException(string.Format(Cultures.System, "Neither the value '{0}', nor the value '{1}' could be used to load a type.\r\n(Original exception: {2})", value, builder, ex.Message), ex2); } } } // still failed? throw new InvalidOperationException(string.Format(Cultures.System, "The value '{0}' cannot be used to load a type.", value), ex); } } else { // convert it... return(ConversionHelper.ChangeType(value, type, provider, ConversionFlags.Safe)); } } else { // just return the value... return(value); } }