예제 #1
0
        /// <summary>
        /// Reflects on all public methos in the given StateLoader, registers them with dbf
        /// </summary>
        /// <param name="dbf"></param>
        /// <param name="sl"></param>
        public static void RegisterStateLoader(DBFiller dbf, StateLoader sl)
        {
            var methods = sl.GetType().GetMethods();

            var alphabetic = methods.Where(m => m.Name.Contains('_')).ToList();

            alphabetic.Sort((t1, t2) => { return(t1.Name.CompareTo(t2.Name)); });

            var eventInfo = dbf.GetType().GetEvent("OnCreationLoadState");

            foreach (var m in alphabetic)
            {
                var d = Delegate.CreateDelegate(eventInfo.EventHandlerType, sl, m);
                eventInfo.AddEventHandler(dbf, d);
            }
        }
예제 #2
0
        public static void Main()
        {
            _config = new DBFillerConfig();

            MongoDatabaseManager _databaseManager = new MongoDatabaseManager();

            _databaseManager.ResetDB();
            //_databaseManager.DeleteCollection("all");

            //_databaseManager.ClearDatabase();
            DBFiller dbf = new DBFiller(_config, _databaseManager);

            Helpers.RegisterStateLoader(dbf, new StateLoader());

            //((MongoDatabaseManager)_databaseManager).ClearCollection<ShipModel>("all");
            var t = dbf.FillDB();

            try
            {
                t.Wait();//This occasionally throws missing key exceptions. Probably a race condition. Just try running again.
            }
            catch (Exception e)
            {
            }

            if (t.Exception != null)
            {
                throw t.Exception;
            }


            dbf.MockServer.KillThreads();

            ConsoleManager.WriteLine("\n\n\nDatabase filled. You may close this window.", ConsoleMessageType.Notification);
            Console.ReadKey();



            return;
        }