public void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } if (dataSource.Length < (startPositionInDataSource + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataSource)); } //----------------------------------------------------------------- var tmp = new UnionValue { Data = { Part0 = dataSource[startPositionInDataSource], Part1 = dataSource[startPositionInDataSource + 1], Part2 = dataSource[startPositionInDataSource + 2], Part3 = dataSource[startPositionInDataSource + 3] } }; //----------------------------------------------------------------- Value = _bigEndian ? IPAddress.NetworkToHostOrder(tmp.Value) : tmp.Value; //----------------------------------------------------------------- startPositionInDataSource += DataLength; }
public void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } //----------------------------------------------------------------- var length = CreateHeader(_headerBigEndian, 0); length.Write(dataSource, ref startPositionInDataSource); var dataLength = GetHeaderValue(length); //----------------------------------------------------------------- if (dataSource.Length < (startPositionInDataSource + dataLength)) { throw new ArgumentException(string.Empty, nameof(dataSource)); } //----------------------------------------------------------------- _valueBytes.Clear(); //----------------------------------------------------------------- for (var i = 0; i < dataLength; i++) { _valueBytes.Add(dataSource[startPositionInDataSource + i]); } //----------------------------------------------------------------- _value = _encoding.GetString(_valueBytes.ToArray()); //----------------------------------------------------------------- startPositionInDataSource += dataLength; }
public void Read(ITcpTypeData dataTarget, ref int startPositionInDataTarget) { if (dataTarget == null) { throw new ArgumentNullException(nameof(dataTarget)); } if (startPositionInDataTarget < 0 || startPositionInDataTarget > dataTarget.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataTarget)); } if (dataTarget.Length < (startPositionInDataTarget + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataTarget)); } //----------------------------------------------------------------- var tmp = new UnionValue { Value = _bigEndian ? IPAddress.HostToNetworkOrder(Value) : Value }; //----------------------------------------------------------------- dataTarget[startPositionInDataTarget] = tmp.Data.Part0; dataTarget[startPositionInDataTarget + 1] = tmp.Data.Part1; dataTarget[startPositionInDataTarget + 2] = tmp.Data.Part2; dataTarget[startPositionInDataTarget + 3] = tmp.Data.Part3; //----------------------------------------------------------------- startPositionInDataTarget += DataLength; }
public override void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } //----------------------------------------------------------------- var count = CreateCount(_bigEndian); count.Write(dataSource, ref startPositionInDataSource); var dataLength = TcpConvert.ToInt32(count); //----------------------------------------------------------------- if (dataSource.Length < (startPositionInDataSource + dataLength)) { throw new ArgumentException(string.Empty, nameof(dataSource)); } //----------------------------------------------------------------- ClearChilds(); //----------------------------------------------------------------- for (var i = 0; i < dataLength; i++) { var item = CreateItem(_bigEndian, _encoding); item.Write(dataSource, ref startPositionInDataSource); AddChild(item); } //----------------------------------------------------------------- }
public void Read(ITcpTypeData dataTarget, ref int startPositionInDataTarget) { if (dataTarget == null) { throw new ArgumentNullException(nameof(dataTarget)); } if (startPositionInDataTarget < 0 || startPositionInDataTarget > dataTarget.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataTarget)); } if (dataTarget.Length < (startPositionInDataTarget + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataTarget)); } //----------------------------------------------------------------- var length = CreateHeader(_headerBigEndian, _valueBytes.Count); length.Read(dataTarget, ref startPositionInDataTarget); var dataLength = GetHeaderValue(length); //----------------------------------------------------------------- if (_valueBytes.Count < dataLength) { throw new InvalidOperationException(); } //----------------------------------------------------------------- for (var i = 0; i < dataLength; i++) { dataTarget[startPositionInDataTarget + i] = _valueBytes[i]; } //----------------------------------------------------------------- startPositionInDataTarget += dataLength; }
//----------------------------------------------------------------- public static ReceivedResult CreateDataResult(ITcpTypeData data) { if (data == null) { throw new ArgumentNullException(nameof(data)); } return(new ReceivedResult(ReceivedDataType.Data, data, null)); }
public virtual void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } //----------------------------------------------------------------- foreach (var child in _childs) { child.Write(dataSource, ref startPositionInDataSource); } //----------------------------------------------------------------- }
public void Read(ITcpTypeData dataTarget, ref int startPositionInDataTarget) { if (dataTarget == null) { throw new ArgumentNullException(nameof(dataTarget)); } if (startPositionInDataTarget < 0 || startPositionInDataTarget > dataTarget.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataTarget)); } if (dataTarget.Length < (startPositionInDataTarget + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataTarget)); } //----------------------------------------------------------------- _enumContent.Read(dataTarget, ref startPositionInDataTarget); //----------------------------------------------------------------- }
public void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } if (dataSource.Length < (startPositionInDataSource + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataSource)); } //----------------------------------------------------------------- _content.Write(dataSource, ref startPositionInDataSource); //----------------------------------------------------------------- }
public void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } if (dataSource.Length < (startPositionInDataSource + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataSource)); } //----------------------------------------------------------------- _value = (byte)(dataSource[startPositionInDataSource] != 0 ? 1 : 0); //----------------------------------------------------------------- startPositionInDataSource += DataLength; }
public void Write(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } //----------------------------------------------------------------- _hasValue.Write(dataSource, ref startPositionInDataSource); if (HasValue) { _value.Write(dataSource, ref startPositionInDataSource); } //----------------------------------------------------------------- }
//--------------------------------------------------------------------- public virtual void ContinueWrite(ITcpTypeData dataSource, ref int startPositionInDataSource) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (startPositionInDataSource < 0 || startPositionInDataSource > dataSource.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataSource)); } var isContinueWrite = false; var writedChildsDataLength = 0; for (var i = 0; i < _childs.Count; i++) { var child = _childs[i]; if (isContinueWrite) { child.Write(dataSource, ref startPositionInDataSource); } else { writedChildsDataLength += child.DataLength; if (writedChildsDataLength < startPositionInDataSource) { continue; } isContinueWrite = true; //Если startPositionInDataSource == 0 или startPositionInDataSource не синхронизирован с началом данных в composite. if (writedChildsDataLength > startPositionInDataSource) { --i; } } } }
public virtual void Read(ITcpTypeData dataTarget, ref int startPositionInDataTarget) { if (dataTarget == null) { throw new ArgumentNullException(nameof(dataTarget)); } if (startPositionInDataTarget < 0 || startPositionInDataTarget > dataTarget.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataTarget)); } if (dataTarget.Length < (startPositionInDataTarget + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataTarget)); } //----------------------------------------------------------------- foreach (var child in _childs) { child.Read(dataTarget, ref startPositionInDataTarget); } //----------------------------------------------------------------- }
public void CopyTo(ITcpTypeData dataTarget, int startPositionInDataTarger) { if (dataTarget == null) { throw new ArgumentNullException(nameof(dataTarget)); } if (startPositionInDataTarger < 0 || startPositionInDataTarger > dataTarget.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataTarger)); } if (dataTarget.Length < (startPositionInDataTarger + Length)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataTarger)); } //----------------------------------------------------------------- for (var i = 0; i < Length; i++) { dataTarget[startPositionInDataTarger + i] = _bytes[i]; } //----------------------------------------------------------------- }
public override void Read(ITcpTypeData dataTarget, ref int startPositionInDataTarget) { if (dataTarget == null) { throw new ArgumentNullException(nameof(dataTarget)); } if (startPositionInDataTarget < 0 || startPositionInDataTarget > dataTarget.Length) { throw new ArgumentOutOfRangeException(nameof(startPositionInDataTarget)); } if (dataTarget.Length < (startPositionInDataTarget + DataLength)) { throw new ArgumentException(string.Empty, nameof(startPositionInDataTarget)); } //----------------------------------------------------------------- var count = CreateCount(_bigEndian); TcpConvert.ToValueTcpType(count, GetCount); count.Read(dataTarget, ref startPositionInDataTarget); //----------------------------------------------------------------- base.Read(dataTarget, ref startPositionInDataTarget); }
//--------------------------------------------------------------------- public override void ContinueWrite(ITcpTypeData dataSource, ref int startPositionInDataSource) { Write(dataSource, ref startPositionInDataSource); }
private ReceivedResult(ReceivedDataType type, ITcpTypeData data, Exception exception) { _type = type; _data = data; _exception = exception; }