NetIde.Services.Shell.NiShell.BroadcastPreMessageFilter C# (CSharp) Method

BroadcastPreMessageFilter() public method

public BroadcastPreMessageFilter ( NiMessage &message ) : HResult
message NetIde.Shell.Interop.NiMessage
return HResult
        public HResult BroadcastPreMessageFilter(ref NiMessage message)
        {
            try
            {
                if (_preMessageFilterRecursion > 0)
                    return HResult.False;

                _preMessageFilterRecursion++;

                try
                {
                    // We delay resolve the package manager because it is created
                    // after NiShell is.

                    if (_packageManager == null)
                        _packageManager = (NiPackageManager)GetService(typeof(INiPackageManager));

                    if (MessageFilterUtil.InvokeMessageFilter(ref message))
                        return HResult.OK;

                    foreach (var package in _packageManager.Packages)
                    {
                        var preMessageFilter = package.Package as INiPreMessageFilter;
                        if (
                            preMessageFilter != null &&
                            ErrorUtil.ThrowOnFailure(preMessageFilter.PreFilterMessage(ref message))
                        )
                            return HResult.OK;
                    }

                    return HResult.False;
                }
                finally
                {
                    _preMessageFilterRecursion--;
                }
            }
            catch (Exception ex)
            {
                return ErrorUtil.GetHResult(ex);
            }
        }