Skip to content

Commit

Permalink
Merge pull request #31 from arup-group/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
nic-burgers-arup committed Mar 25, 2021
2 parents 3f38a77 + 0c35fdf commit 4f631c2
Show file tree
Hide file tree
Showing 48 changed files with 5,715 additions and 1,535 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Expand Up @@ -347,3 +347,9 @@ healthchecksdb

# Exclude files created by of previous merges
*.orig

# Exclude Excel
*.xls*

# By default don't include CSV files
*.csv
10 changes: 10 additions & 0 deletions SpeckleGSA.sln
Expand Up @@ -18,6 +18,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeckleGSAProxy.Test", "Spe
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeckleUtil", "SpeckleUtil\SpeckleUtil.csproj", "{C8C902F6-550A-4AC9-84E3-D4F9085260B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpeckleInterface", "SpeckleInterface\SpeckleInterface.csproj", "{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -74,6 +76,14 @@ Global
{C8C902F6-550A-4AC9-84E3-D4F9085260B1}.Release|Any CPU.Build.0 = Release|Any CPU
{C8C902F6-550A-4AC9-84E3-D4F9085260B1}.Release|x64.ActiveCfg = Release|Any CPU
{C8C902F6-550A-4AC9-84E3-D4F9085260B1}.Release|x64.Build.0 = Release|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Debug|x64.ActiveCfg = Debug|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Debug|x64.Build.0 = Debug|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Release|Any CPU.Build.0 = Release|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Release|x64.ActiveCfg = Release|Any CPU
{CA38DD0E-4A12-4B5B-9544-62B6FFC0BB25}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
86 changes: 76 additions & 10 deletions SpeckleGSA/AppResource/GsaMessenger.cs
@@ -1,19 +1,29 @@
using SpeckleGSAInterfaces;
using SpeckleInterface;
using System;
using System.Collections.Generic;
using System.Linq;

namespace SpeckleGSA
{
public class GsaMessenger : IGSAMessenger
public class GsaMessenger : IGSAMessenger, ISpeckleAppMessenger
{
public event EventHandler<MessageEventArgs> MessageAdded;

private readonly object syncLock = new object();
private List<MessageEventArgs> MessageCache = new List<MessageEventArgs>();

//For use by the kits, which will store the messages to be triggered later
public bool CacheMessage(MessageIntent intent, MessageLevel level, Exception ex, params string[] messagePortions)
public int LoggedMessageCount { get; private set; } = 0;

public void ResetLoggedMessageCount()
{
lock (syncLock)
{
LoggedMessageCount = 0;
}
}

public bool CacheMessage(SpeckleGSAInterfaces.MessageIntent intent, SpeckleGSAInterfaces.MessageLevel level, Exception ex, params string[] messagePortions)
{
lock (syncLock)
{
Expand All @@ -22,7 +32,7 @@ public bool CacheMessage(MessageIntent intent, MessageLevel level, Exception ex,
return true;
}

public bool CacheMessage(MessageIntent intent, MessageLevel level, params string[] messagePortions)
public bool CacheMessage(SpeckleGSAInterfaces.MessageIntent intent, SpeckleGSAInterfaces.MessageLevel level, params string[] messagePortions)
{
lock (syncLock)
{
Expand All @@ -31,9 +41,33 @@ public bool CacheMessage(MessageIntent intent, MessageLevel level, params string
return true;
}

public bool Message(MessageIntent intent, MessageLevel level, params string[] messagePortions)
public bool Message(SpeckleGSAInterfaces.MessageIntent intent, SpeckleGSAInterfaces.MessageLevel level, params string[] messagePortions)
{
if ((intent == SpeckleGSAInterfaces.MessageIntent.TechnicalLog)
//TO DO: review this assumption that messages with 2 portions are to be consolidated
|| (intent == SpeckleGSAInterfaces.MessageIntent.Display && messagePortions.Count() == 2))
{
//Currently cache these so that the app has the provision to add more context before it's logged
CacheMessage(intent, level, messagePortions);
}
else
{
MessageAdded?.Invoke(null, new MessageEventArgs(intent, level, messagePortions));
}
return true;
}

public bool Message(SpeckleGSAInterfaces.MessageIntent intent, SpeckleGSAInterfaces.MessageLevel level, Exception ex, params string[] messagePortions)
{
MessageAdded?.Invoke(null, new MessageEventArgs(intent, level, messagePortions));
if (intent == SpeckleGSAInterfaces.MessageIntent.TechnicalLog)
{
//Currently cache these so that the app has the provision to add more context before it's logged
CacheMessage(intent, level, ex, messagePortions);
}
else
{
MessageAdded?.Invoke(null, new MessageEventArgs(intent, level, ex, messagePortions));
}
return true;
}

Expand All @@ -45,6 +79,10 @@ public void Trigger()
foreach (var m in MessageCache)
{
MessageAdded?.Invoke(null, m);
if (m.Intent == SpeckleGSAInterfaces.MessageIntent.TechnicalLog)
{
this.LoggedMessageCount++;
}
}
MessageCache.Clear();
}
Expand All @@ -56,10 +94,11 @@ public void ConsolidateCache()
//Currently just recognises the first two levels of message portions
lock (syncLock)
{
//Any message with exceptions shouldn't be consolidated
newCache.AddRange(MessageCache.Where(m => m.Exception != null));
var excludedFromConsolidation = MessageCache.Where(m => m.Exception != null || m.Intent == SpeckleGSAInterfaces.MessageIntent.TechnicalLog);
//Let log messages not be consolidated
newCache.AddRange(excludedFromConsolidation);

var msgGroups = MessageCache.Where(m => m.Exception == null).GroupBy(m => new { m.Intent, m.Level }).ToDictionary(g => g.Key, g => g.ToList());
var msgGroups = MessageCache.Except(excludedFromConsolidation).GroupBy(m => new { m.Intent, m.Level }).ToDictionary(g => g.Key, g => g.ToList());
foreach (var gk in msgGroups.Keys)
{
var msgDict = new Dictionary<string, List<string>>();
Expand Down Expand Up @@ -90,13 +129,40 @@ public void ConsolidateCache()
}
else
{
newCache.Add(new MessageEventArgs(gk.Intent, gk.Level, k, string.Join(", ", msgDict[k])));
newCache.Add(new MessageEventArgs(gk.Intent, gk.Level, k, string.Join(",", msgDict[k])));
}
}
}
}
MessageCache = newCache;
}
}

public bool Message(SpeckleInterface.MessageIntent intent, SpeckleInterface.MessageLevel level, params string[] messagePortions)
{
return Message(Convert(intent), Convert(level), messagePortions);
}

public bool Message(SpeckleInterface.MessageIntent intent, SpeckleInterface.MessageLevel level, Exception ex, params string[] messagePortions)
{
return Message(Convert(intent), Convert(level), ex, messagePortions);
}

SpeckleGSAInterfaces.MessageIntent Convert(SpeckleInterface.MessageIntent mi)
=> (new Dictionary<SpeckleInterface.MessageIntent, SpeckleGSAInterfaces.MessageIntent>()
{
{ SpeckleInterface.MessageIntent.Display, SpeckleGSAInterfaces.MessageIntent.Display },
{ SpeckleInterface.MessageIntent.TechnicalLog, SpeckleGSAInterfaces.MessageIntent.TechnicalLog },
{ SpeckleInterface.MessageIntent.Telemetry, SpeckleGSAInterfaces.MessageIntent.Telemetry }
})[mi];

SpeckleGSAInterfaces.MessageLevel Convert(SpeckleInterface.MessageLevel ml)
=> (new Dictionary<SpeckleInterface.MessageLevel, SpeckleGSAInterfaces.MessageLevel>()
{
{ SpeckleInterface.MessageLevel.Debug, SpeckleGSAInterfaces.MessageLevel.Debug },
{ SpeckleInterface.MessageLevel.Information, SpeckleGSAInterfaces.MessageLevel.Information },
{ SpeckleInterface.MessageLevel.Error, SpeckleGSAInterfaces.MessageLevel.Error },
{ SpeckleInterface.MessageLevel.Fatal, SpeckleGSAInterfaces.MessageLevel.Fatal },
})[ml];
}
}
22 changes: 17 additions & 5 deletions SpeckleGSA/AppResource/Settings.cs
Expand Up @@ -4,19 +4,19 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Reflection;

namespace SpeckleGSA
{
/// <summary>
/// Static class to store settings.
/// </summary>
public class Settings : IGSASettings
/// <summary>
/// Static class to store settings.
/// </summary>
public class Settings : IGSASettings
{
public bool SendOnlyMeaningfulNodes = true;
public bool SeparateStreams = false;
public int PollingRate = 2000;
public string ServerAddress = "";

//Default values for properties specified in the interface
public string Units { get; set; }
Expand All @@ -30,6 +30,18 @@ public class Settings : IGSASettings

public bool VerboseErrors = false;

public string ObjectUrl(string id)
{
string objectUrl = "";
try
{
var baseAddress = ServerAddress.TrimEnd('/').EndsWith("/api") ? ServerAddress : HelperFunctions.Combine(ServerAddress, "api");
objectUrl = HelperFunctions.Combine(baseAddress, "objects/" + id);
}
catch { }
return objectUrl;
}

//Using an integer scale at the moment from 0 to 5, which can be mapped to individual loggers
public int LoggingMinimumLevel
{
Expand Down
149 changes: 0 additions & 149 deletions SpeckleGSA/BaseReceiverSender.cs

This file was deleted.

4 changes: 2 additions & 2 deletions SpeckleGSA/Properties/AssemblyInfo.cs
Expand Up @@ -29,5 +29,5 @@
// Build Number
// Revision
//
[assembly: AssemblyVersion("0.11.1.5")]
[assembly: AssemblyFileVersion("0.11.1.5")]
[assembly: AssemblyVersion("0.11.1.6")]
[assembly: AssemblyFileVersion("0.11.1.6")]

0 comments on commit 4f631c2

Please sign in to comment.