diff --git a/MapoDb/Constants.cs b/MapoDb/Constants.cs new file mode 100644 index 00000000..ee336a86 --- /dev/null +++ b/MapoDb/Constants.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MapoDb +{ + public class Constants + { + #region Public Fields + + + public static readonly string BROADCAST_M_PIPE = $"BroadCastMsg"; + public static readonly string BROADCAST_CURR_KEY = $"{BASE_HASH}:Current:BroadCast"; + + // dati conf REDIS Cache + public static readonly string BASE_HASH = "MAPO"; + + + private const string redisBaseAddr = "MP:"; + public static readonly string redisActionReq = redisBaseAddr + "IO:Action:Req"; + + #endregion Public Fields + } +} diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs index 77d66bfa..3da1f821 100644 --- a/MapoDb/DataLayer.cs +++ b/MapoDb/DataLayer.cs @@ -1,10 +1,13 @@ using MapoSDK; using Newtonsoft.Json; +using NLog.Fluent; +using StackExchange.Redis; using SteamWare; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; +using System.Diagnostics; using System.Globalization; using System.Linq; using System.Reflection; @@ -145,6 +148,9 @@ namespace MapoDb #endregion Public Fields + public MessagePipe BroadastMsgPipe { get; set; } = null; + + #region Public Constructors /// @@ -160,6 +166,69 @@ namespace MapoDb // init oggetto MapoDb MapoDbObj = new MapoDb(); + + // init message channel... + BroadastMsgPipe = new MessagePipe(connRedis, Constants.BROADCAST_M_PIPE); + } + + /// + /// Connessione lazy a redis... + /// + private Lazy lazyConnection = new Lazy(() => + { + string RedisConn = memLayer.ML.confReadString("RedisConn"); + if (string.IsNullOrEmpty(RedisConn)) + { + RedisConn = "localhost,abortConnect=false,ssl=false"; + } + + return ConnectionMultiplexer.Connect(RedisConn); + }); + + /// + /// Connessione lazy a redis... + /// + private Lazy lazyConnectionAdmin = new Lazy(() => + { + string RedisConnAdmin = memLayer.ML.confReadString("RedisConnAdmin"); + if (string.IsNullOrEmpty(RedisConnAdmin)) + { + RedisConnAdmin = "localhost,abortConnect=false,ssl=false,allowAdmin=true"; + } + + return ConnectionMultiplexer.Connect(RedisConnAdmin); + }); + + /// + /// Oggetto statico connessione redis + /// + public ConnectionMultiplexer connRedis + { + get + { + return lazyConnection.Value; + } + } + + /// + /// Salva richiesta azione + /// + /// + /// + public bool ActionSetReq(DisplayAction act2save) + { + bool fatto = false; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + // cerco in redis... + string rawData = JsonConvert.SerializeObject(act2save); + // invio broadcast + salvo in redis + BroadastMsgPipe.saveAndSendMessage(Constants.redisActionReq, rawData); + //await redisDb.StringSetAsync(redisActionReq, rawData); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + logger.lg.scriviLog($"ActionSetReq REDIS send to broadcast + Write cache: {ts.TotalMilliseconds}ms"); + return fatto; } #endregion Public Constructors diff --git a/MapoDb/MapoDb.csproj b/MapoDb/MapoDb.csproj index 1884a6ad..2209a6b2 100644 --- a/MapoDb/MapoDb.csproj +++ b/MapoDb/MapoDb.csproj @@ -211,7 +211,9 @@ MoonPro.cs + + DS_applicazione.xsd @@ -272,6 +274,7 @@ +