//[Dependency] //public SafetyMonitorReceiver SafetyMonitorReceiver { private get; set; } //[Dependency] //public LivenessMonitorReceiver LivenessMonitorReceiver { private get; set; } public void Load(MainMonitorsViewModel vm) { var messages = new MessageCollection(); var ctx = new DistributedStorageContext(); vm.Messages = messages; vm.Context = ctx; NewMonitors(ctx, messages); ProcessExecutor.StartProcess(@"..\..\..\DistributedStorage.Remoting.Servers\bin\Debug\DistributedStorage.Remoting.Servers.exe", ctx.ToJson().ToCommandLineArgument()); }
static void NewStorageNodes(RuntimeHost runtimeHost, DistributedStorageContext ctx, MessageCollection messages) { var configure = new ConfigureStorageNode(messages, ctx.SafetyMonitor); var storageNodes = new List <IStorageNodeSender>(); for (var i = 0; i < 3; i++) { var storageNode = runtimeHost.New(MachineInterface.Sender <IStorageNodeSender>().Bundler <IStorageNodeBundler>().Receiver <StorageNodeReceiver>()); storageNode.Configure(configure); storageNode.Handshake(new HandshakeStorageNode(ctx.Server)); storageNodes.Add(storageNode); } ctx.SafetyMonitor.Handshake(new HandshakeSafetyMonitor(storageNodes.ToArray())); ctx.StorageNodes = storageNodes.ToArray(); }
public void NewServer(DistributedStorageContext ctx, MessageCollection messages) { ctx.Server = RuntimeHost.New(MachineInterface.Sender <IServerSender>().Bundler <IServerBundler>().Receiver <ServerReceiver>()); ctx.Server.Configure(new ConfigureServer(messages, ctx.SafetyMonitor, ctx.LivenessMonitor)); }
public void NewMonitors(DistributedStorageContext ctx, MessageCollection messages) { ctx.SafetyMonitor = RuntimeHost.New(MonitorInterface.Sender <ISafetyMonitorSender>().Bundler <ISafetyMonitorBundler>().Receiver <SafetyMonitorReceiver>()); ctx.SafetyMonitor.Configure(new ConfigureSafetyMonitor(messages)); ctx.LivenessMonitor = RuntimeHost.New(MonitorInterface.Sender <ILivenessMonitorSender>().Bundler <ILivenessMonitorBundler>().Receiver <LivenessMonitorReceiver>()); }
public void NewClient(DistributedStorageContext ctx, MessageCollection messages) { ctx.Client = RuntimeHost.New(MachineInterface.Sender <IClientSender>().Bundler <IClientBundler>().Receiver <ClientReceiver>()); ctx.Client.Configure(new ConfigureClient(messages, ctx.Server)); ctx.Server.Handshake(new HandshakeServer(ctx.Client, ctx.StorageNodes)); }