Ejemplo n.º 1
0
        public Task Set(byte parameter, object value, byte size, CancellationToken cancellationToken = default)
        {
            if (size < 1 || size > 4)
            {
                throw new ArgumentOutOfRangeException(nameof(size), size, "Size must be between 1 and 4");
            }

            using (var writer = new PayloadWriter())
            {
                writer.WriteByte(parameter);
                writer.WriteByte(size);
                switch (size)
                {
                case 1:
                    writer.WriteByte(Convert.ToByte(value));
                    break;

                case 2:
                    writer.WriteInt16(Convert.ToInt16(value));
                    break;

                case 3:
                    writer.WriteInt24(Convert.ToInt16(value));
                    break;

                case 4:
                    writer.WriteInt32(Convert.ToInt32(value));
                    break;
                }
                var command = new Command(CommandClass, ConfigurationCommand.Set, writer.ToPayload());
                return(Send(command, cancellationToken));
            }
        }
Ejemplo n.º 2
0
        private static PayloadWriter CreateCapabilitiesPayload(ProtocolCapabilities serverCapabilities, ConnectionSettings cs, bool useCompression, ProtocolCapabilities additionalCapabilities = 0)
        {
            var writer = new PayloadWriter();

            writer.WriteInt32((int)(
                                  ProtocolCapabilities.Protocol41 |
                                  ProtocolCapabilities.LongPassword |
                                  ProtocolCapabilities.SecureConnection |
                                  (serverCapabilities & ProtocolCapabilities.PluginAuth) |
                                  (serverCapabilities & ProtocolCapabilities.PluginAuthLengthEncodedClientData) |
                                  ProtocolCapabilities.MultiStatements |
                                  ProtocolCapabilities.MultiResults |
                                  ProtocolCapabilities.LocalFiles |
                                  (string.IsNullOrWhiteSpace(cs.Database) ? 0 : ProtocolCapabilities.ConnectWithDatabase) |
                                  (cs.UseAffectedRows ? 0 : ProtocolCapabilities.FoundRows) |
                                  (useCompression ? ProtocolCapabilities.Compress : ProtocolCapabilities.None) |
                                  (serverCapabilities & ProtocolCapabilities.ConnectionAttributes) |
                                  (serverCapabilities & ProtocolCapabilities.DeprecateEof) |
                                  additionalCapabilities));
            writer.WriteInt32(0x4000_0000);
            writer.WriteByte((byte)CharacterSet.Utf8Mb4Binary);
            writer.Write(new byte[23]);

            return(writer);
        }