/// <summary> /// 第三方数据转换成元数据 /// </summary> /// <param name="proxy">内存段实例</param> /// <param name="baseValueMessage">存储属性的实例对象</param> /// <exception cref="ArgumentNullException">参数不能为空</exception> public unsafe void ValueProcessor(IMemorySegmentProxy proxy, BaseValueStored baseValueMessage) { if (proxy == null) { throw new ArgumentNullException("proxy"); } if (baseValueMessage == null) throw new ArgumentNullException("baseValueMessage"); fixed(IntPtr *pByte = baseValueMessage.GetValue <IntPtr[]>()) proxy.WriteMemory(pByte, (uint)baseValueMessage.GetValue <IntPtr[]>().Length *Size.IntPtr); }
/// <summary> /// 第三方数据转换成元数据 /// </summary> /// <param name="proxy">内存段实例</param> /// <param name="baseValueMessage">存储属性的实例对象</param> /// <exception cref="ArgumentNullException">参数不能为空</exception> public void ValueProcessor(IMemorySegmentProxy proxy, BaseValueStored baseValueMessage) { if (proxy == null) { throw new ArgumentNullException("proxy"); } if (baseValueMessage == null) { throw new ArgumentNullException("baseValueMessage"); } proxy.WriteMemory(baseValueMessage.GetValue <byte[]>(), 0, (uint)baseValueMessage.GetValue <byte[]>().Length); }
/// <summary> /// 第三方数据转换成元数据 /// </summary> /// <param name="proxy">内存段实例</param> /// <param name="baseValueMessage">存储属性的实例对象</param> /// <exception cref="ArgumentNullException">参数不能为空</exception> public void ValueProcessor(IMemorySegmentProxy proxy, BaseValueStored baseValueMessage) { if (proxy == null) { throw new ArgumentNullException("proxy"); } if (baseValueMessage == null) { throw new ArgumentNullException("baseValueMessage"); } string[] value = baseValueMessage.GetValue <string[]>(); proxy.WriteInt32(value.Length); if (value.Length == 0) { return; } for (int j = 0; j < value.Length; j++) { string elementValue = value[j]; if (string.IsNullOrEmpty(elementValue)) { proxy.WriteUInt16(0); } else { byte[] elementData = Encoding.UTF8.GetBytes(elementValue); proxy.WriteUInt16((ushort)elementData.Length); proxy.WriteMemory(elementData, 0U, (uint)elementData.Length); } } }
/// <summary> /// 第三方数据转换成元数据 /// </summary> /// <param name="proxy">内存段实例</param> /// <param name="baseValueMessage">存储属性的实例对象</param> /// <exception cref="ArgumentNullException">参数不能为空</exception> public void ValueProcessor(IMemorySegmentProxy proxy, BaseValueStored baseValueMessage) { if (proxy == null) { throw new ArgumentNullException("proxy"); } if (baseValueMessage == null) { throw new ArgumentNullException("baseValueMessage"); } ResourceBlock[] value = baseValueMessage.GetValue <ResourceBlock[]>(); proxy.WriteUInt32((uint)value.Length); for (int i = 0; i < value.Length; i++) { if (value[i] == null) { proxy.WriteUInt32(0); continue; } MetadataObjectEngine.ToBytes(value[i], proxy); } }
/// <summary> /// 第三方数据转换成元数据 /// </summary> /// <param name="proxy">内存段实例</param> /// <param name="baseValueMessage">存储属性的实例对象</param> /// <exception cref="ArgumentNullException">参数不能为空</exception> public void ValueProcessor(IMemorySegmentProxy proxy, BaseValueStored baseValueMessage) { if (proxy == null) { throw new ArgumentNullException("proxy"); } if (baseValueMessage == null) { throw new ArgumentNullException("baseValueMessage"); } IPEndPoint[] array = baseValueMessage.GetValue <IPEndPoint[]>(); if (array == null) { throw new NullReferenceException(string.Format("#The processed value is null, type Id is: {0}", baseValueMessage.TypeId)); } if (array.Length == 0) { return; } for (int i = 0; i < array.Length; i++) { proxy.WriteIPEndPoint(array[i]); } }