Gurux.DLMS.GXDLMSSNCommandHandler.GetReadData C# (CSharp) Method

GetReadData() private static method

Get data for Read command.
private static GetReadData ( GXDLMSSettings settings, ValueEventArgs list, GXByteBuffer data ) : SingleReadResponse
settings GXDLMSSettings
list ValueEventArgs received objects.
data GXByteBuffer Data as byte array.
return SingleReadResponse
        private static SingleReadResponse GetReadData(GXDLMSSettings settings, ValueEventArgs[] list, GXByteBuffer data)
        {
            object value;
            bool first = true;
            SingleReadResponse type = SingleReadResponse.Data;
            foreach (ValueEventArgs e in list)
            {
                if (e.Handled)
                {
                    value = e.Value;
                }
                else
                {
                    //If action.
                    if (e.action)
                    {
                        value = ((IGXDLMSBase)e.Target).Invoke(settings, e);
                    }
                    else
                    {
                        value = (e.Target as IGXDLMSBase).GetValue(settings, e);
                    }
                }
                if (e.Error == 0)
                {
                    if (!first && list.Length != 1)
                    {
                        data.SetUInt8(SingleReadResponse.Data);
                    }
                    //If action.
                    if (e.action)
                    {
                        GXCommon.SetData(settings, data, GXCommon.GetValueType(value), value);
                    }
                    else
                    {
                        GXDLMS.AppendData(settings, e.Target, e.Index, data, value);
                    }
                }
                else
                {
                    if (!first && list.Length != 1)
                    {
                        data.SetUInt8(SingleReadResponse.DataAccessError);
                    }
                    data.SetUInt8(e.Error);
                    type = SingleReadResponse.DataAccessError;
                }
                first = false;
            }
            return type;
        }
    }