Skip to content
This repository was archived by the owner on Apr 8, 2020. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
00b5981
Minor style tweaks
SteveSandersonMS Jul 6, 2016
7ce5f8d
Remove trailing whitespace in KO template
SteveSandersonMS Jul 6, 2016
4ee09cb
Make Http hosting model able to report exceptions that happened while…
SteveSandersonMS Jul 6, 2016
4fb3b18
Create new top-level DefaultNodeInstance concept that will soon hold …
SteveSandersonMS Jul 6, 2016
a19e37f
Move logic for restarting Node child process into NodeServicesImpl. T…
SteveSandersonMS Jul 7, 2016
26e8bd8
Instead of the Node process exiting instantly on file change, send a …
SteveSandersonMS Jul 7, 2016
be13f0b
Centralise the child-process-terminating logic in NodeServicesImpl - …
SteveSandersonMS Jul 7, 2016
ce127f0
Implement connection draining feature
SteveSandersonMS Jul 7, 2016
eec370e
Move file-watching logic into .NET to avoid Node's fs.watch issues on…
SteveSandersonMS Jul 7, 2016
4b38519
Change all links in docs to point to new main branch ('dev')
SteveSandersonMS Jul 7, 2016
920f1c8
Replace references to Invoke and InvokeExport with InvokeAsync and In…
SteveSandersonMS Jul 7, 2016
3bc35ae
Simplify docs around receiving an INodeServices instance from DI
SteveSandersonMS Jul 7, 2016
b0bc80b
Update docs around custom node instances to match latest API changes
SteveSandersonMS Jul 7, 2016
8b51368
Update remaining doc references to Invoke<T> and InvokeExport<T>
SteveSandersonMS Jul 7, 2016
01d5c90
Include Microsoft.DotNet.Watcher.Tools in templates. Fixes #157
SteveSandersonMS Jul 7, 2016
c1a1bdf
Update React template homepage as per #158
SteveSandersonMS Jul 7, 2016
fc89747
Update domain-task package to version 2.0.1 (major bump because break…
SteveSandersonMS Jul 11, 2016
58bf117
Update templates to domain-task 2.0.0. Fixes #166.
SteveSandersonMS Jul 11, 2016
057efb4
aspnet-webpack module now preserves 'path' and 'publicPath' config se…
SteveSandersonMS Jul 18, 2016
7119815
Added OnBeforeStartExternalProcess callback which to NodeServicesOpti…
thunder7553 Jul 13, 2016
a14d9ba
Change onBeforeStartExternalProcess to a virtual method, so as to avo…
SteveSandersonMS Jul 18, 2016
27ffa72
Adding support for capturing the output of a node instance for custom…
pauldotknopf Jul 15, 2016
f4efcac
Switch to native .NET logging APIs
SteveSandersonMS Jul 18, 2016
fae0a88
Transfer multiline log messages from Node to .NET without treating ea…
SteveSandersonMS Jul 18, 2016
f4afb25
Set ts-loader to "silent" mode until there's a fix for https://github…
SteveSandersonMS Jul 18, 2016
edf1f88
Updating to AutoMapper 5.0
jbogard Jul 18, 2016
749c7cb
Add example of full-page prerendering via a custom action result
SteveSandersonMS Jul 19, 2016
6b52b3f
chore(package): Update to latest ng RC & universal
MarkPieszak Jul 21, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Added OnBeforeStartExternalProcess callback which to NodeServicesOpti…
…ons (and OutOfProcessNodeInstance, SocketNodeInstance and HttpNodeInstance) to configure environment of the node.exe process to be started, and the path to the node executable itself. Fixes #20
  • Loading branch information
thunder7553 authored and SteveSandersonMS committed Jul 18, 2016
commit 7119815d04b46da2565d17a0827524fc44f44fb4
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public NodeServicesOptions()
HostingModel = DefaultNodeHostingModel;
WatchFileExtensions = (string[])DefaultWatchFileExtensions.Clone();
}

public Action<System.Diagnostics.ProcessStartInfo> OnBeforeStartExternalProcess { get; set; }
public NodeHostingModel HostingModel { get; set; }
public Func<INodeInstance> NodeInstanceFactory { get; set; }
public string ProjectPath { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,22 @@ internal class HttpNodeInstance : OutOfProcessNodeInstance
ContractResolver = new CamelCasePropertyNamesContractResolver()
};

private readonly HttpClient _client;
private readonly HttpClient _client;
private bool _disposed;
private int _portNumber;

public HttpNodeInstance(string projectPath, string[] watchFileExtensions, int port = 0)
public HttpNodeInstance(string projectPath, string[] watchFileExtensions, int port = 0, Action<System.Diagnostics.ProcessStartInfo> onBeforeStartExternalProcess = null)
: base(
EmbeddedResourceReader.Read(
typeof(HttpNodeInstance),
"/Content/Node/entrypoint-http.js"),
projectPath,
watchFileExtensions,
MakeCommandLineOptions(port))
MakeCommandLineOptions(port),
onBeforeStartExternalProcess)
{
_client = new HttpClient();
}
}

private static string MakeCommandLineOptions(int port)
{
Expand Down Expand Up @@ -112,18 +113,19 @@ protected override void OnOutputDataReceived(string outputData)
}
}

protected override void Dispose(bool disposing) {
base.Dispose(disposing);
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);

if (!_disposed)
if (!_disposed)
{
if (disposing)
if (disposing)
{
_client.Dispose();
}
_client.Dispose();
}

_disposed = true;
}
}
}
_disposed = true;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,11 @@ public OutOfProcessNodeInstance(
string entryPointScript,
string projectPath,
string[] watchFileExtensions,
string commandLineArguments)
string commandLineArguments,
Action<System.Diagnostics.ProcessStartInfo> onBeforeStartExternalProcess = null)
{
_entryPointScript = new StringAsTempFile(entryPointScript);
_nodeProcess = LaunchNodeProcess(_entryPointScript.FileName, projectPath, commandLineArguments);
_nodeProcess = LaunchNodeProcess(_entryPointScript.FileName, projectPath, commandLineArguments, onBeforeStartExternalProcess);
_watchFileExtensions = watchFileExtensions;
_fileSystemWatcher = BeginFileWatcher(projectPath);
ConnectToInputOutputStreams();
Expand Down Expand Up @@ -111,7 +112,7 @@ private void EnsureFileSystemWatcherIsDisposed()
}
}

private static Process LaunchNodeProcess(string entryPointFilename, string projectPath, string commandLineArguments)
private static Process LaunchNodeProcess(string entryPointFilename, string projectPath, string commandLineArguments, Action<System.Diagnostics.ProcessStartInfo> onBeforeStartExternalProcess)
{
var startInfo = new ProcessStartInfo("node")
{
Expand All @@ -136,6 +137,10 @@ private static Process LaunchNodeProcess(string entryPointFilename, string proje
#else
startInfo.Environment["NODE_PATH"] = nodePathValue;
#endif
if (onBeforeStartExternalProcess != null)
{
onBeforeStartExternalProcess(startInfo);
}

var process = Process.Start(startInfo);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
/// <seealso cref="Microsoft.AspNetCore.NodeServices.HostingModels.OutOfProcessNodeInstance" />
internal class SocketNodeInstance : OutOfProcessNodeInstance
{
private readonly static JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings
private readonly static JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
Expand All @@ -36,16 +36,17 @@ internal class SocketNodeInstance : OutOfProcessNodeInstance
private string _socketAddress;
private VirtualConnectionClient _virtualConnectionClient;

public SocketNodeInstance(string projectPath, string[] watchFileExtensions, string socketAddress): base(
public SocketNodeInstance(string projectPath, string[] watchFileExtensions, string socketAddress, Action<System.Diagnostics.ProcessStartInfo> onBeforeStartExternalProcess = null) : base(
EmbeddedResourceReader.Read(
typeof(SocketNodeInstance),
"/Content/Node/entrypoint-socket.js"),
projectPath,
watchFileExtensions,
MakeNewCommandLineOptions(socketAddress))
MakeNewCommandLineOptions(socketAddress),
onBeforeStartExternalProcess)
{
_socketAddress = socketAddress;
}
}

protected override async Task<T> InvokeExportAsync<T>(NodeInvocationInfo invocationInfo)
{
Expand Down Expand Up @@ -170,7 +171,7 @@ private static async Task<T> ReadJsonAsync<T>(Stream stream)

private static async Task<byte[]> ReadAllBytesAsync(Stream input)
{
byte[] buffer = new byte[16*1024];
byte[] buffer = new byte[16 * 1024];

using (var ms = new MemoryStream())
{
Expand Down