protected override ServiceResult WriteNonValueAttribute(
ISystemContext context,
uint attributeId,
object value)
{
ServiceResult result = null;
switch (attributeId)
{
case Attributes.Executable:
{
bool? executableRef = value as bool?;
if (executableRef == null)
{
return StatusCodes.BadTypeMismatch;
}
if ((WriteMask & AttributeWriteMask.Executable) == 0)
{
return StatusCodes.BadNotWritable;
}
bool executable = executableRef.Value;
if (OnWriteExecutable != null)
{
result = OnWriteExecutable(context, this, ref executable);
}
if (ServiceResult.IsGood(result))
{
Executable = executable;
}
return result;
}
case Attributes.UserExecutable:
{
bool? userExecutableRef = value as bool?;
if (userExecutableRef == null)
{
return StatusCodes.BadTypeMismatch;
}
if ((WriteMask & AttributeWriteMask.UserExecutable) == 0)
{
return StatusCodes.BadNotWritable;
}
bool userExecutable = userExecutableRef.Value;
if (OnWriteUserExecutable != null)
{
result = OnWriteUserExecutable(context, this, ref userExecutable);
}
if (ServiceResult.IsGood(result))
{
UserExecutable = userExecutable;
}
return result;
}
}
return base.WriteNonValueAttribute(context, attributeId, value);
}
#endregion