Beispiel #1
0
        public void SetCapabilities(Dictionary <string, object> clientCapabilities)
        {
            if (clientCapabilities == null || clientCapabilities.Count == 0)
            {
                return;
            }

            var builder      = new CapabilitiesSet();
            var capabilities = new Capabilities();

            foreach (var cap in clientCapabilities)
            {
                var value = new Any();

                if (cap.Key == "tls")
                {
                    value = ExprUtil.BuildAny(cap.Value);
                }
                else if (cap.Key == "session_connect_attrs" || cap.Key == "compression")
                {
                    var obj = new Mysqlx.Datatypes.Object();

                    if (cap.Key == "session_connect_attrs")
                    {
                        foreach (var pair in (Dictionary <string, string>)cap.Value)
                        {
                            obj.Fld.Add(new ObjectField {
                                Key = pair.Key, Value = ExprUtil.BuildAny(pair.Value)
                            });
                        }
                    }
                    else if (cap.Key == "compression")
                    {
                        foreach (var pair in (Dictionary <string, object>)cap.Value)
                        {
                            obj.Fld.Add(new ObjectField {
                                Key = pair.Key, Value = ExprUtil.BuildAny(pair.Value)
                            });
                        }
                    }

                    value = new Any {
                        Type = Any.Types.Type.Object, Obj = obj
                    };
                }

                var capabilityMsg = new Capability()
                {
                    Name = cap.Key, Value = value
                };
                capabilities.Capabilities_.Add(capabilityMsg);
            }

            builder.Capabilities = capabilities;
            _writer.Write(ClientMessageId.CON_CAPABILITIES_SET, builder);
            ReadOk();
        }
Beispiel #2
0
        public void SetCapabilities(Dictionary <string, object> clientCapabilities)
        {
            if (clientCapabilities == null || clientCapabilities.Count == 0)
            {
                return;
            }

            var builder      = new CapabilitiesSet();
            var capabilities = new Capabilities();

            foreach (var cap in clientCapabilities)
            {
                var capabilityMsg = new Capability()
                {
                    Name = (cap.Key), Value = ExprUtil.BuildAny(cap.Value)
                };
                capabilities.Capabilities_.Add(capabilityMsg);
            }
            builder.Capabilities = capabilities;
            _writer.Write(ClientMessageId.CON_CAPABILITIES_SET, builder);
            ReadOk();
        }