Skip to content

Commit

Permalink
refactor: fix nrt/warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
rdavisau committed Nov 17, 2022
1 parent f747871 commit 6a588c9
Show file tree
Hide file tree
Showing 37 changed files with 255 additions and 198 deletions.
4 changes: 2 additions & 2 deletions src/components/tbc.core/Http/HttpServer.cs
Expand Up @@ -83,7 +83,7 @@ private async Task<object> HandleRequest (string path, Stream inputStream)
using var sr = new StreamReader(inputStream);
var json = await sr.ReadToEndAsync();
var content = JsonSerializer.Deserialize(json, type, new JsonSerializerOptions(JsonSerializerDefaults.Web));
var ret = await action(content);
var ret = await action(content!);

return ret;
}
Expand All @@ -110,7 +110,7 @@ private static async Task Write(object ret, HttpListenerResponse resp)

private void SetHandlerOperations(THandler handler)
{
_handlerOperations = typeof(THandler).GetMethods().Concat(handler.GetType().GetMethods())
_handlerOperations = typeof(THandler).GetMethods().Concat(handler!.GetType().GetMethods())
.Select(x => (x.GetCustomAttribute<PostAttribute>(), x))
.Where(x => x.Item1 != null)
.ToDictionary(x => x.Item1.Path, x => (x.x.GetParameters()[0].ParameterType,
Expand Down
8 changes: 4 additions & 4 deletions src/components/tbc.core/Models/OperationModels.cs
Expand Up @@ -38,10 +38,10 @@ public record SocketRequest<T> : ISocketMessage
public string RequestIdentifier { get; set; } = default!;

[Key(1)]
public T Payload { get; set; } = default!;
public T Payload { get; init; } = default!;

SocketMessageKind ISocketMessage.Kind => SocketMessageKind.Request;
object ISocketMessage.Payload => Payload;
object ISocketMessage.Payload => Payload!;
}

[MessagePackObject]
Expand All @@ -60,7 +60,7 @@ public record SocketResponse<T> : ISocketMessage
public string? ErrorData { get; set; }

SocketMessageKind ISocketMessage.Kind => SocketMessageKind.Response;
object ISocketMessage.Payload => Data;
object ISocketMessage.Payload => Data!;

public SocketResponse() { }

Expand Down Expand Up @@ -120,7 +120,7 @@ public record LoadDynamicAssemblyRequest
public string AssemblyName { get; set; } = default!;

[Key(3)]
public string PrimaryTypeName { get; set; } = default!;
public string? PrimaryTypeName { get; set; } = default!;
}

[MessagePackObject]
Expand Down
4 changes: 2 additions & 2 deletions src/components/tbc.core/Socket/Abstractions/ISendToRemote.cs
Expand Up @@ -2,5 +2,5 @@ namespace Tbc.Core.Socket.Abstractions;

public interface ISendToRemote
{
IRemoteEndpoint Remote { get; set; }
}
IRemoteEndpoint? Remote { get; set; }
}
Expand Up @@ -18,7 +18,7 @@ public object Deserialize(Type type, byte[] data)
var json = Encoding.UTF8.GetString(data);
var ret = JsonSerializer.Deserialize(json, type, _serializerOptions);

return ret;
return ret!;
}

private readonly JsonSerializerOptions _serializerOptions = new(JsonSerializerDefaults.Web);
Expand Down
Expand Up @@ -29,7 +29,7 @@ public object Deserialize(Type type, byte[] data)

var ret = JsonSerializer.Deserialize(gz, type, _serializerOptions);

return ret;
return ret!;
}

private readonly JsonSerializerOptions _serializerOptions = new(JsonSerializerDefaults.Web);
Expand Down
10 changes: 7 additions & 3 deletions src/components/tbc.core/Socket/SocketServer.cs
Expand Up @@ -56,7 +56,8 @@ public class SocketServer<TProtocol> : IRemoteEndpoint
{
SocketSerializationFormat.Json => new ClearTextSystemTextJsonSocketSerializer(),
SocketSerializationFormat.CompressedJson => new SystemTextJsonSocketSerializer(),
SocketSerializationFormat.MessagePack => new MessagePackSocketSerializer()
SocketSerializationFormat.MessagePack => new MessagePackSocketSerializer(),
_ => throw new ArgumentOutOfRangeException()
};

if (Handler is ISendToRemote str)
Expand All @@ -66,7 +67,7 @@ public class SocketServer<TProtocol> : IRemoteEndpoint
SetHandlerOperations();
}

public async Task Run(CancellationToken ct = default)
public Task Run(CancellationToken ct = default)
{
#pragma warning disable CS4014
Task.Run(async () => await RunRequestLoop(ct))
Expand All @@ -77,6 +78,8 @@ public async Task Run(CancellationToken ct = default)
_log(t.Exception?.ToString() ?? "no exception");
_finished = true;
});

return Task.CompletedTask;
}

private async Task RunRequestLoop(CancellationToken ct = default)
Expand Down Expand Up @@ -251,7 +254,8 @@ private async Task<ReceiveResult> Receive(CancellationToken ct)
socketMessageKind switch
{
SocketMessageKind.Request => typeof(SocketRequest<>).MakeGenericType(incomingType),
SocketMessageKind.Response => typeof(SocketResponse<>).MakeGenericType(incomingType)
SocketMessageKind.Response => typeof(SocketResponse<>).MakeGenericType(incomingType),
_ => throw new ArgumentOutOfRangeException()
};

var message = (ISocketMessage)
Expand Down
2 changes: 1 addition & 1 deletion src/components/tbc.core/tbc.core.csproj
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFrameworks>netstandard2.1;net472</TargetFrameworks>
<RootNamespace>Tbc.Core</RootNamespace>
<LangVersion>latest</LangVersion>
<LangVersion>preview</LangVersion>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<DebugType>embedded</DebugType>
Expand Down
Expand Up @@ -45,7 +45,7 @@ public void PrintCommands()
, Formatting.Indented));
}

public async Task<object> HandleCommand(string command)
public async Task<object?> HandleCommand(string command)
{
if (String.IsNullOrWhiteSpace(command))
return null;
Expand Down
Expand Up @@ -6,7 +6,7 @@ public interface ICommandProcessor
{
void RegisterCommands(object context);
void RegisterManyCommands(params object[] context);
Task<object> HandleCommand(string command);
Task<object?> HandleCommand(string command);
void PrintCommands();
}
}
}
Expand Up @@ -6,9 +6,9 @@ namespace Tbc.Host.Components.CommandProcessor.Models
{
public class TbcCommand
{
public string Command { get; set; }
public required string Command { get; init; }

[JsonIgnore]
public Func<string, string[], Task> Execute { get; set; }
public required Func<string, string[], Task> Execute { get; init; }
}
}
}
Expand Up @@ -2,7 +2,7 @@
{
public class TbcComponentCommand
{
public string ComponentIdentifier { get; set; }
public TbcCommand Command { get; set; }
public required string ComponentIdentifier { get; init; }
public required TbcCommand Command { get; init; }
}
}
}
Expand Up @@ -23,8 +23,6 @@ namespace Tbc.Host.Components.FileEnvironment
{
public partial class FileEnvironment : TransientComponentBase<FileEnvironment>, IFileEnvironment, IExposeCommands, IHaveComponentsThatExposeCommands
{
private bool _running;

public ITargetClient Client { get; }
public ICommandProcessor CommandProcessor { get; }
public IFileWatcher FileWatcher { get; }
Expand All @@ -42,10 +40,14 @@ public partial class FileEnvironment : TransientComponentBase<FileEnvironment>,
FileSystem = fileSystem;
FileWatcher = fileWatcher;
IncrementalCompiler = incrementalCompilerFactory($"{client.Address}:{client.Port}");
IncrementalCompiler.RootPath = FileWatcher.WatchPath;
IncrementalCompiler.SetRootPath(FileWatcher.WatchPath);
}

private string _primaryTypeHint;
private bool _running;
public bool Terminated { get; set; }
private string? _primaryTypeHint;
private EmittedAssembly? _lastEmittedAssembly;
private string? _loadContext;

public async Task Run()
{
Expand All @@ -60,19 +62,21 @@ public async Task Run()

await TryLoadLoadContext();

Task.Factory.StartNew(SetupReferenceTracking, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(SetupReferenceTracking, TaskCreationOptions.LongRunning)
.FireAndForgetSafeAsync();

FileWatcher
.Changes
.Where(_ => !Terminated)
.Select(IncrementalCompiler.StageFile)
.Where(x => x != null)
.SelectMany(SendAssemblyForReload)
.SelectMany(SendAssemblyForReload!)
.Subscribe(x => Logger.Log(x.Success ? LogLevel.Information : LogLevel.Error, "Send incremental assembly outcome: {@Outcome}", x));

Logger.LogInformation("FileEnvironment for client {@Client} initialised", Client);

Task.Factory.StartNew(SetupCommandListening, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(SetupCommandListening, TaskCreationOptions.LongRunning)
.FireAndForgetSafeAsync();

await Client.WaitForTerminalState();

Expand Down Expand Up @@ -104,8 +108,8 @@ public async Task Reset()

await TryLoadLoadContext();

Task.Factory.StartNew(SetupReferenceTracking, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(SetupCommandListening, TaskCreationOptions.LongRunning);
Task.Factory.StartNew(SetupReferenceTracking, TaskCreationOptions.LongRunning).FireAndForgetSafeAsync();
Task.Factory.StartNew(SetupCommandListening, TaskCreationOptions.LongRunning).FireAndForgetSafeAsync();
}

public async Task SetupReferenceTracking()
Expand All @@ -129,7 +133,8 @@ public async Task SetupReferenceTracking()

// allow a little time for references to come back <:-)
// should have client tell us when all current dependencies have been sent
Task.Delay(TimeSpan.FromSeconds(.33)).ContinueWith(_ => IncrementalCompiler.DoWarmup());
Task.Delay(TimeSpan.FromSeconds(.33)).ContinueWith(_ => IncrementalCompiler.DoWarmup())
.FireAndForgetSafeAsync();
}

if (targetHello.UseDependencyCache && targetHello.ApplicationIdentifier is { } appIdentifier)
Expand Down Expand Up @@ -197,11 +202,6 @@ public async Task SetupCommandListening()
Logger.LogError(ex, nameof(SetupCommandListening));
}
}

public bool Terminated { get; set; }

private EmittedAssembly _lastEmittedAssembly;
private string _loadContext;

public async Task<Outcome> SendAssemblyForReload(EmittedAssembly asm)
{
Expand All @@ -213,14 +213,14 @@ public async Task<Outcome> SendAssemblyForReload(EmittedAssembly asm)
PdbBytes = asm.Pd,
PrimaryTypeName =
String.IsNullOrWhiteSpace(_primaryTypeHint)
? ""
? null
: TryResolvePrimaryType(_primaryTypeHint)
};

return await Client.RequestClientLoadAssemblyAsync(req);
}

public string TryResolvePrimaryType(string typeHint)
public string? TryResolvePrimaryType(string typeHint)
=> IncrementalCompiler.TryResolvePrimaryType(typeHint);

public Task PrintTrees(bool withDetail = false)
Expand All @@ -230,9 +230,9 @@ public Task PrintTrees(bool withDetail = false)
return Task.CompletedTask;
}

public async Task SetPrimaryTypeHint(string typeHint)
public async Task SetPrimaryTypeHint(string? maybeTypeHint)
{
_primaryTypeHint = typeHint;
_primaryTypeHint = maybeTypeHint;

if (_lastEmittedAssembly != null)
await SendAssemblyForReload(_lastEmittedAssembly);
Expand Down Expand Up @@ -298,7 +298,7 @@ string IExposeCommands.Identifier
break;
default:
Logger.LogWarning("Don't know how to handle subcommand '{SubCommand}' of context");
Logger.LogWarning("Don't know how to handle subcommand '{SubCommand}' of context", sub);
break;
}
Expand All @@ -322,7 +322,7 @@ public void SetLoadContext(string saveIdentifier)
{
_loadContext = saveIdentifier;

Reset();
Reset().FireAndForgetSafeAsync();
}

public IEnumerable<IExposeCommands> Components
Expand Down Expand Up @@ -356,6 +356,6 @@ private async Task AddSharedFilesystemReference(TargetHello targetHello, List<As
public class PersistedContext
{
public string? PrimaryTypeHint { get; set; }
public List<string> WatchedFiles { get; set; }
public List<string> WatchedFiles { get; set; } = new();
}
}
Expand Up @@ -2,8 +2,8 @@ namespace Tbc.Host.Components.FileEnvironment.Models
{
public interface IRemoteClientDefinition
{
public string Address { get; set; }
public int Port { get; set; }
public string Address { get; }
public int Port { get; }

public string HttpAddress => $"http://{Address}:{Port}";
}
Expand Down
@@ -1,11 +1,11 @@
namespace Tbc.Host.Components.FileEnvironment.Models
{
public class RemoteClient : IRemoteClientDefinition
public record RemoteClient : IRemoteClientDefinition
{
public string Address { get; set; }
public int Port { get; set; }
public required string Address { get; init; }
public required int Port { get; set; }

public override string ToString()
=> $"{Address}:{Port}";
}
}
}

0 comments on commit 6a588c9

Please sign in to comment.