public bool RegisterParameter(string source, ushort index, byte subIndex, ParameterUpdatePriority priority) { bool result = false; var objectDictionary = _device?.ObjectDictionary; var parameter = objectDictionary?.SearchParameter(index, subIndex); if (parameter != null) { var registeredParameter = new RegisteredParameter { Source = source, Parameter = parameter, Priority = priority }; MsgLogger.WriteFlow($"{GetType().Name} - RegisterParameter", $"register parameter index = 0x{index:X4}, subindex = 0x{subIndex:X4}, add to queue ..."); lock (RegisterParametersQueueLock) { _registerParametersQueue.Add(registeredParameter); result = true; } MsgLogger.WriteFlow($"{GetType().Name} - RegisterParameter", $"register parameter index = 0x{index:X4}, subindex = 0x{subIndex:X4}, added to queue"); } else { MsgLogger.WriteError($"{GetType().Name} - RegisterParameter", $"parameter index = 0x{index:X4}, subindex = 0x{subIndex:X4}, not found"); } return(result); }
public bool Register(RegisteredParameter registeredParameter) { bool result = false; MsgLogger.WriteFlow($"{GetType().Name} - Register", $"Register parameter source = '{registeredParameter.Key}', index = {registeredParameter.Parameter.Index:X4}, subindex = {(registeredParameter.Parameter as XddParameter).SubIndex:X4}"); try { lock (RegisteredParametersLock) { if (!_registeredParameters.ContainsKey(registeredParameter.Key)) { result = AddToRegisteredParameters(registeredParameter); } else { result = UpdateParameterRefCount(registeredParameter); } } } catch (Exception e) { MsgLogger.Exception($"{GetType().Name} - Register", e); } MsgLogger.WriteDebug($"{GetType().Name} - Register", $"Register Parameter '{registeredParameter.Key}' - OK"); return(result); }
private bool AddToRegisteredParameters(RegisteredParameter registeredParameter) { bool result = false; if (_registeredParameters != null) { _registeredParameters.Add(registeredParameter.Key, registeredParameter); registeredParameter.RefCount++; MsgLogger.WriteLine($"(+)register parameter key='{registeredParameter.Key}'"); result = true; } return(result); }
public bool Unregister(RegisteredParameter registeredParameter) { bool result = false; MsgLogger.WriteDebug($"{GetType().Name} - Unregister", $"Unregister Parameter '{registeredParameter.Key}', index = {registeredParameter.Parameter.Index:X4}, subindex = {(registeredParameter.Parameter as XddParameter).SubIndex:X4}"); lock (RegisteredParametersLock) { if (_registeredParameters.ContainsKey(registeredParameter.Key)) { var parameter = _registeredParameters[registeredParameter.Key]; if (parameter != null) { parameter.RefCount--; if (parameter.RefCount == 0) { result = _registeredParameters.Remove(registeredParameter.Key); MsgLogger.WriteLine($"(-)unregister parameter key='{registeredParameter.Key}', result={result}"); } else { MsgLogger.WriteLine($"(-)unregister parameter key='{registeredParameter.Key}', refCount = {parameter.RefCount}"); result = true; } } else { MsgLogger.WriteError($"{GetType().Name} - Unregister", $"(-)unregister parameter key='{registeredParameter.Key}' failed, parameter empty!"); } } else { MsgLogger.WriteError($"{GetType().Name} - Unregister", $"(-)unregister parameter key='{registeredParameter.Key}' failed, parametere not found!"); } } MsgLogger.WriteDebug($"{GetType().Name} - Unregister", $"Unregister Parameter '{registeredParameter.Key}' - OK"); return(result); }
private bool UpdateParameterRefCount(RegisteredParameter registeredParameter) { bool result = false; var parameter = _registeredParameters[registeredParameter.Key]; if (parameter != null) { parameter.RefCount++; MsgLogger.WriteLine($"(+)register parameter key='{registeredParameter.Key}', refCount = {parameter.RefCount}"); result = true; } else { MsgLogger.WriteError($"{GetType().Name} - Register", $"(+)register parameter key='{registeredParameter.Key}' failed, parameter empty!"); } return(result); }