public void WriteMaster(string objKey, string objValue) { var lockRequest = new LockRequest() { PartitionId = _id, ObjectId = objKey }; var unlockRequest = new UnlockRequest { PartitionId = _id, ObjectId = objKey, ObjectValue = objValue }; //Very important - order slaves IEnumerable <SlaveInfo> orderedSlaves = SlaveServers.OrderBy(s => s.ServerId); BaseServerObjectInfo objectInfo; lock (Objects) { if (!Objects.TryGetValue(objKey, out objectInfo)) { Objects.Add(objKey, objectInfo = new BaseServerObjectInfo("NA")); } } objectInfo._lock.Set(); objectInfo.Write(objValue); foreach (var slave in orderedSlaves) { try { slave.SlaveChannel.lockServer(lockRequest); } catch (Exception) { Console.WriteLine($"Error locking partition {_id} slave {slave.ServerId}"); } } foreach (var slave in orderedSlaves) { try { slave.SlaveChannel.unlockServer(unlockRequest); } catch (Exception) { Console.WriteLine($"Error unlocking partition {_id} slave {slave.ServerId}"); } } objectInfo._lock.Reset(); }
private void LoadConfiguration(ModelGeneralInformation ModelConfiguration) { try { string CtrlCardPath = XMLFolderPath + ModelConfiguration.ControlCardFileName; ControlCardInfomation = XMLSerializeHelper.DeserializeXML <ControlCards>(CtrlCardPath); context.ControlCard = ControlCardInfomation; string CameraCfgPath = XMLFolderPath + ModelConfiguration.CameraConfigFileName; CameraInfomation = XMLSerializeHelper.DeserializeXML <SlaveServers>(CameraCfgPath); context.SlaveServerConfig = CameraInfomation; string RecipePath = XMLFolderPath + ModelConfiguration.ModelRecipeFileName; Recipes RecipeInfomation = XMLSerializeHelper.DeserializeXML <Recipes>(RecipePath); context.ModuleRecipe = RecipeInfomation.RecipeArray; } catch (Exception ex) { throw new Exception(ex.Message); } }