コード例 #1
0
        public void setString(string path, string key, string value)
        {
            SettingsRequestMessage newMessage = new SettingsRequestMessage();

            SettingsRequestMessage.Types.Request.Types.Update newQuery = new SettingsRequestMessage.Types.Request.Types.Update();
            newQuery.Node       = new Node();
            newQuery.Node.Path  = path;
            newQuery.Node.Key   = key;
            newQuery.Node.Value = value;
            SettingsRequestMessage.Types.Request request = new SettingsRequestMessage.Types.Request();
            request.PluginId = plugin_id;
            request.Update   = newQuery;
            newMessage.Payload.Add(request);
            NSCP.Core.Result res = core.settings(newMessage.ToByteArray());
            if (!res.result)
            {
                log.error("Failed to set value: " + path);
                return;
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.Parser.ParseFrom(res.data);

            if (response_message.Payload[0].Result.Code != PB.Common.Result.Types.StatusCodeType.StatusOk)
            {
                log.error("Failed to set value: " + path);
                return;
            }
        }
コード例 #2
0
        public bool registerKey(string path, string key, int type, string title, string description, string defaultValue, bool advanced)
        {
            SettingsRequestMessage newMessage = new SettingsRequestMessage();

            SettingsRequestMessage.Types.Request.Types.Registration registration_builder = new SettingsRequestMessage.Types.Request.Types.Registration();
            registration_builder.Node             = new Node();
            registration_builder.Node.Path        = path;
            registration_builder.Node.Key         = key;
            registration_builder.Info             = new PB.Settings.Information();
            registration_builder.Info.Title       = title;
            registration_builder.Info.Description = description;
            NSCP.Core.Result res = core.settings(newMessage.ToByteArray());
            if (!res.result)
            {
                log.error("Failed to describe path: " + path);
                return(false);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.Parser.ParseFrom(res.data);

            if (response_message.Payload[0].Result.Code != PB.Common.Result.Types.StatusCodeType.StatusOk)
            {
                log.error("Failed to describe path: " + path);
                return(false);
            }
            return(true);
        }
コード例 #3
0
        public bool reload(string context)
        {
            SettingsRequestMessage newMessage = new SettingsRequestMessage();

            SettingsRequestMessage.Types.Request.Types.Control registration_builder = new SettingsRequestMessage.Types.Request.Types.Control();
            registration_builder.Context = context;
            registration_builder.Command = PB.Settings.Command.Reload;
            SettingsRequestMessage.Types.Request request = new SettingsRequestMessage.Types.Request();
            request.PluginId = plugin_id;
            request.Control  = registration_builder;
            newMessage.Payload.Add(request);
            NSCP.Core.Result res = core.settings(newMessage.ToByteArray());
            if (!res.result)
            {
                log.error("Failed to reload: " + context);
                return(false);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.Parser.ParseFrom(res.data);

            if (response_message.Payload[0].Result.Code != PB.Common.Result.Types.StatusCodeType.StatusOk)
            {
                log.error("Failed to reload: " + context);
                return(false);
            }
            return(true);
        }
コード例 #4
0
 /// <summary>
 ///     Settings received message handler.
 /// </summary>
 /// <param name="sender">The sender of the message.</param>
 /// <param name="message">The message.</param>
 private void OnSettingsResponseMessage(ulong sender, SettingsResponseMessage message)
 {
     if (message.Settings != null)
     {
         Mod.Static.OnSettingsReceived(message.Settings);
     }
 }
コード例 #5
0
ファイル: Helpers.cs プロジェクト: Fox-Alpha/nscp
        public List <string> getKeys(string path)
        {
            List <string> ret = new List <string>();

            SettingsRequestMessage.Builder newMessage = SettingsRequestMessage.CreateBuilder();
            SettingsRequestMessage.Types.Request.Types.Query.Builder newQuery = SettingsRequestMessage.Types.Request.Types.Query.CreateBuilder();
            newQuery.SetNode(Settings.Types.Node.CreateBuilder().SetPath(path).Build());
            newQuery.SetRecursive(false);
            newQuery.SetType(Common.Types.DataType.STRING);
            newMessage.AddPayload(SettingsRequestMessage.Types.Request.CreateBuilder().SetPluginId(plugin_id).SetQuery(newQuery.Build()).Build());
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            newMessage.Build().WriteTo(stream);
            NSCP.Core.Result res = core.settings(stream.ToArray());
            if (!res.result)
            {
                log.error("Failed to get value: " + path);
                return(ret);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.ParseFrom(res.data);

            if (response_message.GetPayload(0).Result.Code != Common.Types.Result.Types.StatusCodeType.STATUS_OK)
            {
                log.error("Failed to get value: " + path);
                return(ret);
            }
            foreach (string value in response_message.GetPayload(0).Query.Value.ListDataList)
            {
                ret.Add(value);
            }
            return(ret);
        }
コード例 #6
0
ファイル: Helpers.cs プロジェクト: Fox-Alpha/nscp
        public bool registerKey(string path, string key, int type, string title, string description, string defaultValue, bool advanced)
        {
            SettingsRequestMessage.Builder newMessage = SettingsRequestMessage.CreateBuilder();
            SettingsRequestMessage.Types.Request.Types.Registration.Builder registration_builder = SettingsRequestMessage.Types.Request.Types.Registration.CreateBuilder();
            registration_builder.SetNode(Settings.Types.Node.CreateBuilder().SetPath(path).SetKey(key).Build());
            registration_builder.SetInfo(Settings.Types.Information.CreateBuilder().SetTitle(title).SetDescription(description).Build());
            newMessage.AddPayload(SettingsRequestMessage.Types.Request.CreateBuilder().SetPluginId(plugin_id).SetRegistration(registration_builder.Build()).Build());
            SettingsRequestMessage message = newMessage.Build();

            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            message.WriteTo(stream);
            NSCP.Core.Result res = core.settings(stream.ToArray());
            if (!res.result)
            {
                log.error("Failed to describe key: " + path);
                return(false);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.ParseFrom(res.data);

            if (response_message.GetPayload(0).Result.Code != Common.Types.Result.Types.StatusCodeType.STATUS_OK)
            {
                log.error("Failed to describe key: " + path);
                return(false);
            }
            return(true);
        }
コード例 #7
0
ファイル: Helpers.cs プロジェクト: Fox-Alpha/nscp
        public bool reload(string context)
        {
            SettingsRequestMessage.Builder newMessage = SettingsRequestMessage.CreateBuilder();
            SettingsRequestMessage.Types.Request.Types.Control.Builder registration_builder = SettingsRequestMessage.Types.Request.Types.Control.CreateBuilder();
            registration_builder.SetContext(context);
            registration_builder.SetCommand(Settings.Types.Command.RELOAD);
            newMessage.AddPayload(SettingsRequestMessage.Types.Request.CreateBuilder().SetPluginId(plugin_id).SetControl(registration_builder.Build()).Build());
            SettingsRequestMessage message = newMessage.Build();

            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            message.WriteTo(stream);
            NSCP.Core.Result res = core.settings(stream.ToArray());
            if (!res.result)
            {
                log.error("Failed to save: " + context);
                return(false);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.ParseFrom(res.data);

            if (response_message.GetPayload(0).Result.Code != Common.Types.Result.Types.StatusCodeType.STATUS_OK)
            {
                log.error("Failed to save: " + context);
                return(false);
            }
            return(true);
        }
コード例 #8
0
ファイル: Helpers.cs プロジェクト: Fox-Alpha/nscp
        public long getInt(string path, string key, int defaultValue)
        {
            SettingsRequestMessage.Builder newMessage = SettingsRequestMessage.CreateBuilder();
            SettingsRequestMessage.Types.Request.Types.Query.Builder newQuery = SettingsRequestMessage.Types.Request.Types.Query.CreateBuilder();
            newQuery.SetNode(Settings.Types.Node.CreateBuilder().SetPath(path).SetKey(key).Build());
            newQuery.SetDefaultValue(Common.Types.AnyDataType.CreateBuilder().SetIntData(defaultValue).Build());
            newQuery.SetType(Common.Types.DataType.INT);
            newMessage.AddPayload(SettingsRequestMessage.Types.Request.CreateBuilder().SetPluginId(plugin_id).SetQuery(newQuery.Build()).Build());
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            newMessage.Build().WriteTo(stream);
            NSCP.Core.Result res = core.settings(stream.ToArray());
            if (!res.result)
            {
                log.error("Failed to get value: " + path);
                return(defaultValue);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.ParseFrom(res.data);

            if (response_message.GetPayload(0).Result.Code != Common.Types.Result.Types.StatusCodeType.STATUS_OK)
            {
                log.error("Failed to get value: " + path);
                return(defaultValue);
            }
            return(response_message.GetPayload(0).Query.Value.IntData);
        }
コード例 #9
0
        /// <summary>
        ///     Request Settings message handler.
        /// </summary>
        /// <param name="sender">The sender who requested settings.</param>
        /// <param name="message">The message from the requester.</param>
        private void OnSettingsRequestMessage(ulong sender, SettingsRequestMessage message)
        {
            if (Mod.Static.Settings == null)
            {
                return;
            }

            try {
                var response = new SettingsResponseMessage {
                    Settings = Mod.Static.Settings,
                    SteamId  = sender
                };

                Network.Send(response, sender);
            } catch (Exception exception) {
                using (Log.BeginMethod(nameof(OnSettingsRequestMessage))) {
                    Log.Error(exception);
                }
            }
        }
コード例 #10
0
        public List <string> getKeys(string path)
        {
            List <string>          ret        = new List <string>();
            SettingsRequestMessage newMessage = new SettingsRequestMessage();

            SettingsRequestMessage.Types.Request.Types.Query newQuery = new SettingsRequestMessage.Types.Request.Types.Query();
            newQuery.Node      = new Node();
            newQuery.Node.Path = path;
            newQuery.Recursive = false;
            SettingsRequestMessage.Types.Request request = new SettingsRequestMessage.Types.Request();
            request.PluginId = plugin_id;
            request.Query    = newQuery;
            newMessage.Payload.Add(request);

            NSCP.Core.Result res = core.settings(newMessage.ToByteArray());

            if (!res.result)
            {
                log.error("Failed to get value: " + path);
                return(ret);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.Parser.ParseFrom(res.data);

            if (response_message.Payload == null || response_message.Payload.Count == 0 || response_message.Payload[0].Result == null)
            {
                log.error("Failed to get value: " + path);
                return(ret);
            }

            if (response_message.Payload[0].Result.Code != PB.Common.Result.Types.StatusCodeType.StatusOk)
            {
                log.error("Failed to get value: " + path);
                return(ret);
            }
            foreach (Node node in response_message.Payload[0].Query.Nodes)
            {
                ret.Add(node.Value);
            }
            return(ret);
        }
コード例 #11
0
ファイル: Helpers.cs プロジェクト: Fox-Alpha/nscp
        public void setBool(string path, string key, bool value)
        {
            SettingsRequestMessage.Builder newMessage = SettingsRequestMessage.CreateBuilder();
            SettingsRequestMessage.Types.Request.Types.Update.Builder newQuery = SettingsRequestMessage.Types.Request.Types.Update.CreateBuilder();
            newQuery.SetNode(Settings.Types.Node.CreateBuilder().SetPath(path).SetKey(key).Build());
            newQuery.SetValue(Common.Types.AnyDataType.CreateBuilder().SetBoolData(value).Build());
            newMessage.AddPayload(SettingsRequestMessage.Types.Request.CreateBuilder().SetPluginId(plugin_id).SetUpdate(newQuery.Build()).Build());
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            newMessage.Build().WriteTo(stream);
            NSCP.Core.Result res = core.settings(stream.ToArray());
            if (!res.result)
            {
                log.error("Failed to set value: " + path);
                return;
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.ParseFrom(res.data);

            if (response_message.GetPayload(0).Result.Code != Common.Types.Result.Types.StatusCodeType.STATUS_OK)
            {
                log.error("Failed to set value: " + path);
                return;
            }
        }
コード例 #12
0
        public bool registerPath(string path, string title, string description, bool advanced)
        {
            SettingsRequestMessage newMessage = new SettingsRequestMessage();

            SettingsRequestMessage.Types.Request.Types.Registration registration_builder = new SettingsRequestMessage.Types.Request.Types.Registration();
            registration_builder.Node             = new Node();
            registration_builder.Node.Path        = path;
            registration_builder.Info             = new PB.Settings.Information();
            registration_builder.Info.Title       = title;
            registration_builder.Info.Description = description;

            SettingsRequestMessage.Types.Request request = new SettingsRequestMessage.Types.Request();
            request.PluginId     = plugin_id;
            request.Registration = registration_builder;
            newMessage.Payload.Add(request);

            NSCP.Core.Result res = core.settings(newMessage.ToByteArray());
            if (!res.result)
            {
                log.error("Failed to describe path: " + path);
                return(false);
            }
            SettingsResponseMessage response_message = SettingsResponseMessage.Parser.ParseFrom(res.data);

            if (response_message.Payload == null || response_message.Payload.Count == 0 || response_message.Payload[0].Result == null)
            {
                log.error("Failed to describe path: " + path);
                return(false);
            }

            if (response_message.Payload[0].Result.Code != PB.Common.Result.Types.StatusCodeType.StatusOk)
            {
                return(false);
            }
            return(true);
        }