private static void InitSilo( string[] args )
 {
   siloHost = new SiloHost( "Primary" ) {
     ConfigFileName = "DevTestServerConfiguration.xml",
     DeploymentId = "1"
   };
   siloHost.InitializeOrleansSilo();
   var ok = siloHost.StartOrleansSilo();
   if( !ok )
     throw new SystemException( string.Format( "Failed to start Orleans silo '{0}' as a {1} node.", siloHost.Name, siloHost.Type ) );
 }
 public static void GrainTestsClassCleanUp()
 {
   hostDomain.DoCallBack( () => {
     siloHost.Dispose();
     siloHost = null;
     AppDomain.Unload( hostDomain );
   } );
   var startInfo = new ProcessStartInfo {
     FileName = "taskkill",
     Arguments = "/F /IM vstest.executionengine.x86.exe",
     UseShellExecute = false,
     WindowStyle = ProcessWindowStyle.Hidden,
   };
   Process.Start( startInfo );
 }
    private static void InitSilo( string[] args )
    {
      // this is a hack to replace the local azure storage emulator for a real storage account
      // which is stored in an environment variable in travis ci
      const string SILO_SETTINGS_FILE = "DevTestServerConfiguration.xml";
      string connectionString = null;
      if (null != (connectionString = Environment.GetEnvironmentVariable("DataConnectionString")))
      {
        Console.WriteLine("rewritten DataConnectinString variable");
        var settings = File.ReadAllText(SILO_SETTINGS_FILE).Replace("UseDevelopmentStorage=true", connectionString);
        File.WriteAllText(SILO_SETTINGS_FILE, settings);
      }

      siloHost = new SiloHost( "Primary" ) {
        ConfigFileName = SILO_SETTINGS_FILE,
        DeploymentId = "1"
      };
      siloHost.InitializeOrleansSilo();
      var ok = siloHost.StartOrleansSilo();
      if( !ok )
        throw new SystemException( string.Format( "Failed to start Orleans silo '{0}' as a {1} node.", siloHost.Name, siloHost.Type ) );
    }
Esempio n. 4
0
 public OrleansHostWrapper(ClusterConfiguration clusterConfiguration)
 {
     _siloHost = new SiloHost(Dns.GetHostName(), clusterConfiguration);
     _siloHost.LoadOrleansConfig();
 }
 protected virtual void Dispose(bool dispose)
 {
     siloHost.Dispose();
     siloHost = null;
 }
Esempio n. 6
0
        private bool ParseArguments(string[] args)
        {
            string deploymentId = null;

            string configFileName = "DevTestServerConfiguration.xml";
            string siloName       = Dns.GetHostName(); // Default to machine name

            int argPos = 1;

            for (int i = 0; i < args.Length; i++)
            {
                string a = args[i];
                if (a.StartsWith("-") || a.StartsWith("/"))
                {
                    switch (a.ToLowerInvariant())
                    {
                    case "/?":
                    case "/help":
                    case "-?":
                    case "-help":
                        // Query usage help
                        return(false);

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                else if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (String.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                    switch (split[0].ToLowerInvariant())
                    {
                    case "deploymentid":
                        deploymentId = split[1];
                        break;

                    case "deploymentgroup":
                        // TODO: Remove this at some point in future
                        Console.WriteLine("Ignoring deprecated command line argument: " + a);
                        break;

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                // unqualified arguments below
                else if (argPos == 1)
                {
                    siloName = a;
                    argPos++;
                }
                else if (argPos == 2)
                {
                    configFileName = a;
                    argPos++;
                }
                else
                {
                    // Too many command line arguments
                    Console.WriteLine("Too many command line arguments supplied: " + a);
                    return(false);
                }
            }

            siloHost = new SiloHost(siloName);
            siloHost.ConfigFileName = configFileName;
            if (deploymentId != null)
            {
                siloHost.DeploymentId = deploymentId;
            }

            return(true);
        }
Esempio n. 7
0
 private void Dispose(bool dispose)
 {
     this.siloHost.Dispose();
     this.siloHost = null;
 }
Esempio n. 8
0
    //-------------------------------------------------------------------------
    // Parse command line arguments, to allow override of some silo runtime config settings.
    // <param name="args">Command line arguments, as received by the Main program.</param>
    public bool ParseArguments(string[] args)
    {
        string silo_name = Dns.GetHostName(); // Default to machine name

        SiloHost = new SiloHost(silo_name);

        int argPos = 1;

        for (int i = 0; i < args.Length; i++)
        {
            string a = args[i];
            if (a.StartsWith("-") || a.StartsWith("/"))
            {
                switch (a.ToLowerInvariant())
                {
                case "/?":
                case "/help":
                case "-?":
                case "-help":
                    // Query usage help
                    return(false);

                case "/debug":
                    SiloHost.Debug = true;
                    break;

                default:
                    EbLog.Error("Bad command line arguments supplied: " + a);
                    return(false);
                }
            }
            else if (a.Contains("="))
            {
                string[] split = a.Split('=');
                if (String.IsNullOrEmpty(split[1]))
                {
                    EbLog.Error("Bad command line arguments supplied: " + a);
                    return(false);
                }
                switch (split[0].ToLowerInvariant())
                {
                case "deploymentid":
                    SiloHost.DeploymentId = split[1];
                    break;

                case "deploymentgroup":
                    Console.WriteLine("Ignoring deprecated command line argument: " + a);
                    break;

                default:
                    EbLog.Error("Bad command line arguments supplied: " + a);
                    return(false);
                }
            }
            // unqualified arguments below
            else if (argPos == 1)
            {
                SiloHost.Name = a;
                argPos++;
            }
            else if (argPos == 2)
            {
                SiloHost.ConfigFileName = a;
                argPos++;
            }
            else
            {
                // Too many command line arguments
                EbLog.Error("Too many command line arguments supplied: " + a);
                return(false);
            }
        }

        return(true);
    }
Esempio n. 9
0
        public bool ParseArguments(string[] args)
        {
            string deploymentId = null;
            string siloName     = Dns.GetHostName();// Default to machine name
            int    argPos       = 1;

            for (int i = 0; i < args.Length; i++)
            {
                string a = args[i];
                if (a.StartsWith("-") || a.StartsWith("/"))
                {
                    switch (a.ToLowerInvariant())
                    {
                    case "/?":
                    case "/help":
                    case "-?":
                    case "-help":
                        // Query usage help
                        return(false);

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                else if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (String.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                    switch (split[0].ToLowerInvariant())
                    {
                    case "deploymentid":
                        deploymentId = split[1];
                        break;

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                // unqualified arguments below
                else if (argPos == 1)
                {
                    siloName = a;
                    argPos++;
                }
                else
                {
                    // Too many command line arguments
                    Console.WriteLine("Too many command line arguments supplied: " + a);
                    return(false);
                }
            }
            var config = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory + $"{Path.GetFileNameWithoutExtension(CommomHelper.Filename)}.xml"));

            if (!config.Exists)
            {
                var _config = ClusterConfiguration.LocalhostPrimarySilo();
                _config.UseStartupType <MyStartup>();
                _config.AddMemoryStorageProvider();
                siloHost = new SiloHost(siloName, _config);
            }
            else
            {
                siloHost = new SiloHost(CommomHelper.SoliName, config);

                //  Console.WriteLine($"the {Filename}.xml is ")
            }

            if (deploymentId != null)
            {
                siloHost.DeploymentId = deploymentId;
            }
            return(true);
        }
        #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously

        /// <summary>
        /// Called when the service stops. This methods stops the silo. In most scenarios, you shouldn't override this
        /// method.
        /// </summary>
        protected override void OnStop()
        {
            SiloHost.Stop(); // This calls BeforeOrleansShutdown()
            Dispose();
        }
Esempio n. 11
0
        static int Main(string[] args)
        {
            string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development";
            var    builder     = new ConfigurationBuilder()
                                 .SetBasePath(Directory.GetCurrentDirectory())
                                 .AddInMemoryCollection(new Dictionary <string, string> // add default settings, that will be overridden by commandline
            {
                { "Id", "OrleansHost" },
                { "Version", "1.0.0" },
                { "DeploymentId", "testdeploymentid" },
            })
                                 .AddCommandLine(args)
                                 .AddJsonFile($"appconfig.json", optional: true)
                                 .AddJsonFile($"appconfig.{environment}.json", optional: true)
                                 .AddEnvironmentVariables("ASPNETCORE_"); // The CloudService will pass settings (such as) the connectionstring through environment variables

            if ("Development".Equals(environment) && builder.GetFileProvider().GetFileInfo("OrleansHost.csproj").Exists)
            {
                // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
                builder.AddUserSecrets();
            }

            var config = builder.Build();

            loggerFactory.AddConsole(config.GetSection("Logging"));
            loggerFactory.AddDebug();
            var logger = loggerFactory.CreateLogger <Program>();

            ClusterConfiguration clusterConfig = ClusterConfiguration.LocalhostPrimarySilo();

            clusterConfig.Globals.DeploymentId         = config["Id"];
            clusterConfig.Globals.DataConnectionString = config.GetConnectionString("DataConnectionString");
            clusterConfig.AddMemoryStorageProvider("Default");
            clusterConfig.AddMemoryStorageProvider("PubSubStore");
            clusterConfig.AddSimpleMessageStreamProvider("Default");
            clusterConfig.Defaults.DefaultTraceLevel = Orleans.Runtime.Severity.Warning;
            clusterConfig.Defaults.TraceFileName     = "";
            clusterConfig.UseStartupType <Startup>();

            var siloHost = new SiloHost(config["Id"], clusterConfig);

            try
            {
                siloHost.InitializeOrleansSilo();
                bool ok = siloHost.StartOrleansSilo(catchExceptions: false);

                if (!ok)
                {
                    logger.LogError(string.Format($"Failed to start Orleans silo '{siloHost.Name}' as a {siloHost.Type} node."));
                    return(1);
                }
            }
            catch (Exception exc)
            {
                siloHost.ReportStartupError(exc);
                return(2);
            }

            Console.WriteLine("OrleansHost is running. Press [Ctrl]-C to stop...");
            siloHost.WaitForOrleansSiloShutdown();
            // logger.LogInformation(string.Format($"Orleans silo '{siloHost.Name}' shutdown. Press [Enter]"));
            // Console.ReadLine();
            return(0);
        }
Esempio n. 12
0
        static void Main(string[] args)
        {
            // First, configure and start a local silo
            var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
            var props      = new Dictionary <string, string> {
                { "UseJsonFormat", "true" }
            };
            IProviderConfiguration pConfig = new ProviderConfiguration(props, "Orleans.Storage.DynamoDBStorageProvider", "DynamoDBStorage");
            var catConfig = new ProviderCategoryConfiguration("Storage")
            {
                Providers = new Dictionary <string, IProviderConfiguration> {
                    { "DynamoDBStorage", pConfig }
                }
            };

            siloConfig.Globals.ProviderConfigurations.Add("Storage", catConfig);
            //siloConfig.Add.AddMemoryStorageProvider();
            //siloConfig.LoadFromFile("DevTestServerConfiguration.xml");
            var silo = new SiloHost("TestSilo", siloConfig);

            //silo.ConfigFileName = "DevTestServerConfiguration.xml";

            silo.InitializeOrleansSilo();
            silo.StartOrleansSilo();

            Console.WriteLine("Silo started.");

            // Then configure and connect a client.
            var clientConfig = ClientConfiguration.LocalhostSilo();
            var client       = new ClientBuilder().UseConfiguration(clientConfig).Build();

            client.Connect().Wait();

            Console.WriteLine("Client connected.");

            //
            // This is the place for your test code.
            //
            var usr1 = new User()
            {
                Id = Guid.Parse("8ac512e4-a618-4ba0-b69b-c3051d53888a"), Nickname = "eugene"
            };
            var usr2 = new User()
            {
                Id = Guid.Parse("8ac512e4-a618-4ba0-b69b-c3051d53888b"), Nickname = "petro"
            };

            var usr1Grain = client.GetGrain <IUserGrain>(usr1.Id);
            var usr2Grain = client.GetGrain <IUserGrain>(usr2.Id);

            usr1Grain.Create(usr1).Wait();
            usr2Grain.Create(usr2).Wait();

            var chatRoom = new ChatRoom()
            {
                Id = Guid.Parse("8ac512e4-a618-4ba0-b69b-c3051d53888c"), Name = "eugene&petro"
            };
            var chatRoomGrain = client.GetGrain <IChatRoomGrain>(chatRoom.Id);

            chatRoomGrain.Create(chatRoom).Wait();

            chatRoomGrain.Join(usr1Grain, usr2Grain).Wait();

            SubscribeToMessageNotifications(client, chatRoom, chatRoomGrain);

            usr1Grain.SendMsg("Hi, group!", chatRoomGrain).Wait();

            var msgs = chatRoomGrain.GetMessages().Result;

            Console.WriteLine("\nPress Enter to terminate...");
            Console.ReadLine();

            // Shut down
            client.Close();
            silo.ShutdownOrleansSilo();
        }
 internal OrleansService(SiloHost silohost)
 {
     host = silohost;
 }
Esempio n. 14
0
        static void Main(string[] args)
        {
            // First, configure and start a local silo
            var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
            var silo       = new SiloHost("TestSilo", siloConfig);

            silo.InitializeOrleansSilo();
            silo.StartOrleansSilo();

            Console.WriteLine("Silo started.");

            // Then configure and connect a client.
            //var clientConfig = ClientConfiguration.LocalhostSilo();
            //var client = new ClientBuilder().UseConfiguration(clientConfig).Build();
            //client.Connect().Wait();
            GrainClient.Initialize(ClientConfiguration.LocalhostSilo());
            Console.WriteLine("Client connected.");



            var game = new GameController();

            //// mock
            //var nir = game.CreatePlayer("p1", "p1name").Result;
            //nir = game.CreatePlayer("p2", "p2name").Result;
            //nir = game.CreatePlayer("p3", "p3name").Result;
            //nir = game.CreatePlayer("p4", "p4name").Result;
            //game.CreateTeam("t1");
            //nir = game.AddPlayerToTeam("p1", "t1").Result;
            //nir = game.AddPlayerToTeam("p2", "t1").Result;
            //nir = game.AddPlayerToTeam("p3", "t1").Result;
            //var players2 = game.ListPlayers("t1").Result;
            //Console.WriteLine(String.Join(", ", players2));

            while (true)
            {
                var line = double.Parse(Console.ReadLine());
                OperationResults.ServiceCallResult status = OperationResults.ServiceCallResult.ERROR;
                switch (line)
                {
                case 1:     // CreatePlayer
                    Console.WriteLine("CreatePlayer");
                    Console.WriteLine("Enter Player ID:");
                    var id = Console.ReadLine();
                    Console.WriteLine("Enter Player Name:");
                    var name = Console.ReadLine();

                    status = game.CreatePlayer(id, name).Result;
                    if (status == OperationResults.ServiceCallResult.ERROR)
                    {
                        Console.WriteLine("error creating player");
                    }
                    break;

                case 2:     // CreateTeam
                    Console.WriteLine("CreateTeam");
                    Console.WriteLine("Enter Team ID:");
                    game.CreateTeam(Console.ReadLine());
                    status = OperationResults.ServiceCallResult.OK;
                    break;

                case 3:     // AddPlayerToTeam
                    Console.WriteLine("AddPlayerToTeam");
                    Console.WriteLine("Player ID:");
                    var playerId = Console.ReadLine();
                    Console.WriteLine("Team ID:");
                    var teamId = Console.ReadLine();
                    status = game.AddPlayerToTeam(playerId, teamId).Result;
                    if (status == OperationResults.ServiceCallResult.ERROR)
                    {
                        Console.WriteLine("error AddPlayerToTeam");
                    }

                    break;

                case 4:     // RemovePlayerFromTeam
                    Console.WriteLine("RemovePlayerFromTeam");
                    Console.WriteLine("Player ID:");
                    Console.WriteLine("Team ID:");
                    status = game.RemovePlayerFromTeam(Console.ReadLine(), Console.ReadLine()).Result;
                    if (status == OperationResults.ServiceCallResult.ERROR)
                    {
                        Console.WriteLine("error RemovePlayerFromTeam");
                    }

                    break;

                case 5:     // ListPlayers
                    Console.WriteLine("ListPlayers");
                    Console.WriteLine("Enter Team ID:");
                    var players = game.ListPlayers(Console.ReadLine()).Result;
                    Console.WriteLine(String.Join(", ", players));
                    status = OperationResults.ServiceCallResult.OK;
                    break;

                default:
                    Console.WriteLine("no such command");
                    break;
                }
            }


            //// End
            //Console.WriteLine("\nPress Enter to terminate...");
            //Console.ReadLine();

            // Shut down
            //client.Close();
            silo.ShutdownOrleansSilo();
        }
 internal EmbeddedActorSystem(IActorSystem system, AppDomain domain, SiloHost host)
 {
     this.system = system;
     this.domain = domain;
     this.host   = host;
 }
Esempio n. 16
0
 internal ClusterActorSystem(ClusterConfiguration configuration)
 {
     current = this;
     Host    = new SiloHost(Dns.GetHostName(), configuration);
 }
Esempio n. 17
0
 /// <summary>
 /// start primary
 /// </summary>
 public OrleansHostWrapper()
 {
     siloHost = new SiloHost("primary", ClusterConfiguration.LocalhostPrimarySilo());
 }
Esempio n. 18
0
 public void Start(string siloName, ClusterConfiguration configuration)
 {
     this.host = new SiloHost(siloName, configuration);
     this.host.InitializeOrleansSilo();
     this.host.StartOrleansSilo(catchExceptions: false);
 }
Esempio n. 19
0
 public void Dispose()
 {
     this.host?.Dispose();
     this.host = null;
 }
        /// <summary>
        /// Starts the silo.
        /// </summary>
        /// <param name="config">
        /// The config.
        /// </param>
        /// <returns>
        /// Whether or not initialization was successful.
        /// </returns>
        /// <exception cref="OrleansException">
        /// An exception occurred starting the silo.
        /// </exception>
        public bool Start(ClusterConfiguration config)
        {
            try
            {
                Trace.TraceInformation(
                    $"Starting silo. Name: {this.siloName}, DeploymentId: {this.deploymentId}, Primary Endpoint: {this.SiloEndpoint}");

                // Configure this Orleans silo instance
                if (config == null)
                {
                    Trace.TraceInformation("Loading configuration from default locations.");
                    this.host = new SiloHost(this.siloName);
                    this.host.LoadOrleansConfig();
                }
                else
                {
                    Trace.TraceInformation("Using provided configuration.");
                    this.host = new SiloHost(this.siloName, config);
                }

                // Configure the silo for the current environment.
                var generation = SiloAddress.AllocateNewGeneration();
                this.host.SetSiloType(Silo.SiloType.Secondary);
                this.host.SetSiloLivenessType(config?.Globals.LivenessType??GlobalConfiguration.LivenessProviderType.AzureTable);
                this.host.SetReminderServiceType(config?.Globals.ReminderServiceType ?? GlobalConfiguration.ReminderServiceProviderType.AzureTable);
                this.host.SetDeploymentId(this.deploymentId, this.connectionString);
                this.host.SetSiloEndpoint(this.SiloEndpoint, generation);
                this.host.SetProxyEndpoint(this.ProxyEndpoint);

                this.host.InitializeOrleansSilo();
                Trace.TraceInformation($"Successfully initialized Orleans silo '{this.siloName}'.");
                Trace.TraceInformation($"Starting Orleans silo '{this.siloName}'.");

                var ok = this.host.StartOrleansSilo();
                if (ok)
                {
                    Trace.TraceInformation(
                        $"Successfully started Orleans silo '{this.siloName}'.");
                }
                else
                {
                    Trace.TraceInformation($"Failed to start Orleans silo '{this.siloName}'");
                }

                this.MonitorSilo();
                return ok;
            }
            catch (Exception e)
            {
                this.stopped.TrySetException(e);
                this.Abort();

                throw;
            }
        }
Esempio n. 21
0
 /// <summary>
 ///     The abort.
 /// </summary>
 public void Abort()
 {
     this.host?.UnInitializeOrleansSilo();
     this.host?.Dispose();
     this.host = null;
 }
 /// <summary>
 ///     The abort.
 /// </summary>
 public void Abort()
 {
     this.host?.UnInitializeOrleansSilo();
     this.host?.Dispose();
     this.host = null;
 }
Esempio n. 23
0
        private bool ParseArguments(IEnumerable <string> args)
        {
            string deploymentId = null;

            string configFileName = "DevTestServerConfiguration.xml";
            string siloName       = Dns.GetHostName(); // Default to machine name

            int argPos = 1;

            foreach (string a in args)
            {
                if (a.StartsWith("-", StringComparison.Ordinal) || a.StartsWith("/", StringComparison.Ordinal))
                {
                    switch (a.ToLowerInvariant())
                    {
                    case "/?":
                    case "/help":
                    case "-?":
                    case "-help":
                        // Query usage help
                        return(false);

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (string.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                    switch (split[0].ToLowerInvariant())
                    {
                    case "deploymentid":
                        deploymentId = split[1];
                        break;

                    case "deploymentgroup":
                        // TODO: Remove this at some point in future
                        Console.WriteLine("Ignoring deprecated command line argument: " + a);
                        break;

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                // unqualified arguments below
                else
                {
                    switch (argPos)
                    {
                    case 1:
                        siloName = a;
                        argPos++;
                        break;

                    case 2:
                        configFileName = a;
                        argPos++;
                        break;

                    default:
                        // Too many command line arguments
                        Console.WriteLine("Too many command line arguments supplied: " + a);
                        return(false);
                    }
                }
            }

            this.siloHost = new SiloHost(siloName)
            {
                ConfigFileName = configFileName
            };

            if (deploymentId != null)
            {
                this.siloHost.DeploymentId = deploymentId;
            }

            return(true);
        }
Esempio n. 24
0
        static void Main(string[] args)
        {
            var properties = new Dictionary <string, string>()
            {
                //["AdoInvariant"] = "System.Data.SqlClient",
                //["DataConnectionString"] = "Data Source=SQLLFISDEV,1460;Initial Catalog=TardisFlow;Persist Security Info=True;User ID=TardisFlowUsrRW;Password=6Sk&>3R-",
                //["UseJsonFormat"] = "true"

                ["DataConnectionString"] = "UseDevelopmentStorage=true",
            };

            // First, configure and start a local silo
            var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();

            //siloConfig.Globals.RegisterStorageProvider<AdoNetStorageProvider>("OrleansSqlStorage", properties);

            siloConfig
            .Globals
            .RegisterStorageProvider <AzureTableStorage>(
                "OrleansAzureTableStorage",
                properties);

            //var custom = new Dictionary<string, object>()
            //                 {
            //                     ["directory"] = "wdqsdf"
            //                 };

            //siloConfig
            //    .Globals
            //    .RegisterStorageProvider<Exploration.IoT.FileStorage.FileStorageProvider>("sd", custom);

            var silo = new SiloHost("TestSilo", siloConfig);

            silo.InitializeOrleansSilo();
            silo.StartOrleansSilo();

            Console.WriteLine("Silo started.");

            // Then configure and connect a client.
            var clientConfig = ClientConfiguration.LocalhostSilo();
            var client       = new ClientBuilder().UseConfiguration(clientConfig).Build();

            client.Connect().Wait();

            Console.WriteLine("Client connected.");

            //
            // This is the place for your test code.
            //

            var grain = client.GetGrain <IDeviceGrain>((long)0);

            //var deviceGrain_3 = client.GetGrain<IDeviceGrain>(3);
            //deviceGrain_3.JoinSystem("vehicle1").Wait();

            //var deviceGrain_4 = client.GetGrain<IDeviceGrain>(4);
            //deviceGrain_4.JoinSystem("vehicle1").Wait();

            //var deviceGrain_6 = client.GetGrain<IDeviceGrain>(6);
            //deviceGrain_6.JoinSystem("vehicle1").Wait();

            //var observer = new SystemObserver();
            //var observerRef = client.CreateObjectReference<ISystemObserver>(observer).Result;

            //var systemGrain = client.GetGrain<ISystemGrain>(0);
            //systemGrain.Subscribe(observerRef).Wait();

            //var grain = client.GetGrain<IGrainDecoder>(0);
            while (true)
            {
                grain.SetTemperature(double.Parse(Console.ReadLine()));
                //grain.Decode(Console.ReadLine());
            }

            Console.WriteLine("\nPress Enter to terminate...");
            Console.ReadLine();

            // Shut down
            client.Close();
            silo.ShutdownOrleansSilo();
        }
Esempio n. 25
0
        private bool ParseArguments(string[] args)
        {
            string deploymentId = null;

            string siloName = Dns.GetHostName(); // Default to machine name

            int argPos = 1;

            for (int i = 0; i < args.Length; i++)
            {
                string a = args[i];
                if (a.StartsWith("-") || a.StartsWith("/"))
                {
                    switch (a.ToLowerInvariant())
                    {
                    case "/?":
                    case "/help":
                    case "-?":
                    case "-help":
                        // Query usage help
                        return(false);

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                else if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (String.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                    switch (split[0].ToLowerInvariant())
                    {
                    case "deploymentid":
                        deploymentId = split[1];
                        break;

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                // unqualified arguments below
                else if (argPos == 1)
                {
                    siloName = a;
                    argPos++;
                }
                else
                {
                    // Too many command line arguments
                    Console.WriteLine("Too many command line arguments supplied: " + a);
                    return(false);
                }
            }

            var config = ClusterConfiguration.LocalhostPrimarySilo();

            config.AddMemoryStorageProvider();
            siloHost = new SiloHost(siloName, config);

            if (deploymentId != null)
            {
                siloHost.DeploymentId = deploymentId;
            }

            return(true);
        }
Esempio n. 26
0
 internal ClusterActorSystem(IDisposable configurator, ClusterConfiguration configuration)
 {
     current           = this;
     this.configurator = configurator;
     host = new SiloHost(Dns.GetHostName(), configuration);
 }
        private bool ParseArguments(string[] args)
        {
            string deploymentId = null;

            string siloName = Dns.GetHostName(); // Default to machine name

            int argPos = 1;
            for (int i = 0; i < args.Length; i++)
            {
                string a = args[i];
                if (a.StartsWith("-") || a.StartsWith("/"))
                {
                    switch (a.ToLowerInvariant())
                    {
                        case "/?":
                        case "/help":
                        case "-?":
                        case "-help":
                            // Query usage help
                            return false;
                        default:
                            Console.WriteLine("Bad command line arguments supplied: " + a);
                            return false;
                    }
                }
                else if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (String.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return false;
                    }
                    switch (split[0].ToLowerInvariant())
                    {
                        case "deploymentid":
                            deploymentId = split[1];
                            break;
                        default:
                            Console.WriteLine("Bad command line arguments supplied: " + a);
                            return false;
                    }
                }
                // unqualified arguments below
                else if (argPos == 1)
                {
                    siloName = a;
                    argPos++;
                }
                else
                {
                    // Too many command line arguments
                    Console.WriteLine("Too many command line arguments supplied: " + a);
                    return false;
                }
            }
            //集群启动
            ClusterConfiguration config = new ClusterConfiguration();
            string configpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{Path.GetFileNameWithoutExtension("OrleansConfiguration.xml")}.xml");
            if (File.Exists(configpath))
                config.LoadFromFile(configpath);
            else
                config = ClusterConfiguration.LocalhostPrimarySilo();
            config.AddMemoryStorageProvider();
            siloHost = new SiloHost(siloName, config);

            if (deploymentId != null)
                siloHost.DeploymentId = deploymentId;

            return true;
        }
Esempio n. 28
0
        private bool ParseArguments(string[] args)
        {
            string deploymentId = null;

            string siloName = Dns.GetHostName(); // Default to machine name

            int argPos = 1;

            for (int i = 0; i < args.Length; i++)
            {
                string a = args[i];
                if (a.StartsWith("-") || a.StartsWith("/"))
                {
                    switch (a.ToLowerInvariant())
                    {
                    case "/?":
                    case "/help":
                    case "-?":
                    case "-help":
                        // Query usage help
                        return(false);

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                else if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (String.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                    switch (split[0].ToLowerInvariant())
                    {
                    case "deploymentid":
                        deploymentId = split[1];
                        break;

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                // unqualified arguments below
                else if (argPos == 1)
                {
                    siloName = a;
                    argPos++;
                }
                else
                {
                    // Too many command line arguments
                    Console.WriteLine("Too many command line arguments supplied: " + a);
                    return(false);
                }
            }

            var config = ClusterConfiguration.LocalhostPrimarySilo();

            //Comment out either one of these

            //JSON Files
            var props = new Dictionary <string, string>();

            props["RootDirectory"] = @".\Samples.FileStorage";
            config.Globals.RegisterStorageProvider <Samples.StorageProviders.OrleansFileStorage>("TestStore", props);

//            //MongoDB
//            var props = new Dictionary<string, string>();
//            props["Database"] = "orleanssamples";
//            props["ConnectionString"] = "mongodb://localhost:27017/";
//            config.Globals.RegisterStorageProvider<Samples.StorageProviders.MongoDBStorage>("TestStore", props);

            siloHost = new SiloHost(siloName, config);

            if (deploymentId != null)
            {
                siloHost.DeploymentId = deploymentId;
            }

            return(true);
        }