SevenSoftware.Windows.InstanceAwareApplication.ExtractParameters C# (CSharp) Method

ExtractParameters() static private method

Extracts some parameters from the specified ApplicationInstanceAwareness value.
static private ExtractParameters ( ApplicationInstanceAwareness awareness, string &prefix, IdentityReference &identity ) : void
awareness ApplicationInstanceAwareness The ApplicationInstanceAwareness value to extract parameters from.
prefix string The synchronization object prefix.
identity System.Security.Principal.IdentityReference The identity used to handle the synchronization object.
return void
        static void ExtractParameters(
            ApplicationInstanceAwareness awareness, out string prefix, out IdentityReference identity)
        {
            new SecurityPermission(SecurityPermissionFlag.ControlPrincipal).Assert();
            WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();

            if (currentIdentity == null)
            {
                throw new Exception("Unable to retrieve current identity");
            }

            if (awareness == ApplicationInstanceAwareness.Host && currentIdentity.Groups != null)
            {
                prefix = GlobalPrefix;
                identity =
                    currentIdentity.Groups.FirstOrDefault(
                        reference => reference.Translate(typeof(SecurityIdentifier)).Value.Equals(UsersSidValue));
            }
            else
            {
                prefix = LocalPrefix;
                identity = currentIdentity.User;
            }

            CodeAccessPermission.RevertAssert();

            if (identity == null)
            {
                throw new Exception(
                    "Could not determine a proper identity to create synchronization objects access rules");
            }
        }