Beispiel #1
0
        /////////////////////////////////////////////
        /// <summary>
        /// データベース登録スレッド
        /// </summary>
        public async void StartMongoDBThread(IConfiguration config)
        {
            priceQueue = new BlockingCollection <Price>(MaxPriceQueueSize);

            var server   = config["MongoDB:Server"];
            var database = config["MongoDB:Database"];
            var user     = config["MongoDB:User"];
            var password = config["MongoDB:Password"];
            var port     = config.GetValue <int>("MongoDB:Port");

            if (string.IsNullOrEmpty(server))
            {
                Log("[MongoDB] no server settings.");
                RunFlag = false;
                return;
            }
            /////////////////////////////////////////////
            //      別スレッドで処理
            await Task.Run(() =>
            {
                try
                {
                    mongoManager = new MongoManager(server, database, user, password, port);
                }
                catch (Exception e)
                {
                    Log($"Database Connection Error:" + e.Message);
                    RunFlag = false;
                }

                while (RunFlag)
                {
                    if (!priceQueue.TryTake(out var price, Timeout.Infinite))
                    {
                        continue;
                    }
                    if (price == null)
                    {
                        continue;
                    }
                    try
                    {
                        price.Id = ObjectId.GenerateNewId().ToString();
                        mongoManager.Insert(price, price.Pair);
                    }
                    catch (Exception e)
                    {
                        Log($"[MongoDB] {e.Message}");
                    }
                }
                RunFlag = false;
            });
        }
Beispiel #2
0
        public static void SaveUploaderConfig(string data)
        {
            try
            {
                MongoManager mongoManager = new MongoManager();

                List <UploaderConfigItem> itemsSaved     = new List <UploaderConfigItem>();
                List <UploaderConfigItem> itemsExisting  = new List <UploaderConfigItem>();
                List <UploaderConfigItem> alreadyChecked = new List <UploaderConfigItem>();

                itemsSaved    = JsonConvert.DeserializeObject <List <UploaderConfigItem> >(data);
                itemsExisting = mongoManager.SelectFromCollection(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter());

                foreach (UploaderConfigItem item in itemsSaved)
                {
                    if (itemsExisting.Any(x => x.UploaderId == item.UploaderId))                                    //Item schon vorhanden
                    {
                        if (itemsExisting.Any(x => x.UploaderId == item.UploaderId && x.Position != item.Position)) //Positionseigenschaft hat sich geändert
                        {
                            List <BsonElement> elements = new List <BsonElement>
                            {
                                new BsonElement(Constants.Database.Fields.UploaderConfig.Id, BsonValue.Create(item.UploaderId)),
                                new BsonElement(Constants.Database.Fields.UploaderConfig.Position, BsonValue.Create(item.Position))
                            };

                            BsonDocument document = new BsonDocument(elements);
                            mongoManager.Delete(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter(item.UploaderId));
                            mongoManager.Insert(document, new CollectionItem(Constants.Database.Settings));
                        }
                    }
                    else    //Item noch nicht vorhanden
                    {
                        List <BsonElement> elements = new List <BsonElement>
                        {
                            new BsonElement(Constants.Database.Fields.UploaderConfig.Id, BsonValue.Create(item.UploaderId)),
                            new BsonElement(Constants.Database.Fields.UploaderConfig.Position, BsonValue.Create(item.Position))
                        };

                        BsonDocument document = new BsonDocument(elements);
                        mongoManager.Insert(document, new CollectionItem(Constants.Database.Settings));
                    }
                }

                //Deleting
                itemsExisting = mongoManager.SelectFromCollection(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter());

                if (itemsSaved.Count != itemsExisting.Count)
                {
                    foreach (UploaderConfigItem item in itemsExisting)
                    {
                        if (!itemsSaved.Any(x => x.UploaderId == item.UploaderId))
                        {
                            mongoManager.Delete(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter(item.UploaderId));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingManager.LogError(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
            }
        }
Beispiel #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(Request.Params.Get("action")))
                {
                    _action = Request.Params.Get("action");
                }

                if (!string.IsNullOrEmpty(Request.Params.Get("uploaderId")))
                {
                    _uploaderId = Request.Params.Get("uploaderId");
                }

                if (!string.IsNullOrEmpty(Request.Params.Get("temp")))
                {
                    float.TryParse(Request.Params.Get("temp"), out _temperature);
                }

                if (!string.IsNullOrEmpty(Request.Params.Get("hum")))
                {
                    float.TryParse(Request.Params.Get("hum"), out _humidity);
                }

                if (!string.IsNullOrEmpty(Request.Params.Get("apisecret")))
                {
                    _apisecret = Request.Params.Get("apisecret");
                }

                if (string.IsNullOrEmpty(_action) || string.IsNullOrEmpty(_uploaderId) || string.IsNullOrEmpty(_apisecret) || _temperature == -100 || _humidity == -100)
                {
                    return;
                }

                if (!AuthentificationManager.AuthenticateApi(_apisecret))
                {
                    return;
                }

                mongoManager = new MongoManager();

                if (_action == "AddRecord")
                {
                    List <BsonElement> elements = new List <BsonElement>
                    {
                        new BsonElement(Constants.Database.Fields.Humiture.Date, BsonValue.Create(DateTime.Now)),
                        new BsonElement(Constants.Database.Fields.Humiture.Temperature, BsonValue.Create(_temperature)),
                        new BsonElement(Constants.Database.Fields.Humiture.Humidity, BsonValue.Create(_humidity))
                    };

                    List <UploaderConfigItem> configItems = mongoManager.SelectFromCollection(new CollectionItem(Constants.Database.Settings), FilterBuilder.UploaderConfig.BuildFilter(_uploaderId));
                    if (configItems.Any())
                    {
                        mongoManager.Insert(new BsonDocument(elements), new CollectionItem(configItems.FirstOrDefault().Position, Constants.Database.CollectionType.Humiture));
                    }
                    else
                    {
                        LoggingManager.LogWaring("Cant find a Position for uploader with ID " + _uploaderId + ". Pleas add this Uploader to the Config. Value recieved is lost.", System.Reflection.MethodBase.GetCurrentMethod().Name);
                    }

                    return;
                }
            }
            catch (Exception ex)
            {
                LoggingManager.LogError(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
            }
        }