public void AddCallbackParameter(string key, string value) { if (!CheckParameter(key, "key", "Callback")) { return; } if (!CheckParameter(value, "value", "Callback")) { return; } if (CallbackParameters == null) { CallbackParameters = new Dictionary <string, string>(); } string previousValue; if (CallbackParameters.TryGetValue(key, out previousValue)) { Logger.Warn("key {0} was overwritten", key); CallbackParameters.Remove(key); } CallbackParameters.Add(key, value); }
/// <summary cref="ICallable.Call" /> public virtual ServiceResult Call( OperationContext context, NodeId methodId, object methodHandle, NodeId objectId, IList <object> inputArguments, IList <ServiceResult> argumentErrors, IList <object> outputArguments) { // find the method to call for the object. CallbackParameters callbackParameters = null; lock (DataLock) { if (!m_executable || !m_userExecutable) { return(StatusCodes.BadUserAccessDenied); } if (!m_callbacks.TryGetValue(objectId, out callbackParameters)) { return(ServiceResult.Create(StatusCodes.BadInternalError, "No handler specified for the method.")); } } try { // dereference extension objects. List <object> convertedArguments = new List <object>(); foreach (object inputArgument in inputArguments) { ExtensionObject extension = inputArgument as ExtensionObject; if (extension != null) { IEncodeable encodeable = extension.Body as IEncodeable; if (encodeable != null) { convertedArguments.Add(encodeable); continue; } } convertedArguments.Add(inputArgument); } // invoke the method. Call( context, callbackParameters.Target, callbackParameters.Callback, convertedArguments, argumentErrors, outputArguments); // check for argument errors. foreach (ServiceResult argumentError in argumentErrors) { if (ServiceResult.IsBad(argumentError)) { return(StatusCodes.BadInvalidArgument); } } // everthing ok. return(ServiceResult.Good); } catch (Exception e) { return(new ServiceResult(e)); } }
void ILotMother.Log(CallbackParameters callbackParameteres) { Log(callbackParameteres); }