Beispiel #1
0
        internal bool IsEnabledAccessLog(LocalAccessLogMode mode)
        {
            if ((LocalAccessLogMode & mode) == 0)
            {
                return(false);
            }

            if (AccessLogInitialized)
            {
                return(GlobalAccessLogMode != GlobalAccessLogMode.None);
            }

            lock (_accessLogInitLocker)
            {
                if (!AccessLogInitialized)
                {
                    if (HasFileSystemServer())
                    {
                        IFileSystemProxy fsProxy = GetFileSystemProxyServiceObject();

                        Result rc = fsProxy.GetGlobalAccessLogMode(out GlobalAccessLogMode globalMode);
                        GlobalAccessLogMode = globalMode;

                        if (rc.IsFailure())
                        {
                            throw new LibHacException("Abort");
                        }
                    }
                    else
                    {
                        GlobalAccessLogMode = GlobalAccessLogMode.Log;
                    }

                    if (GlobalAccessLogMode != GlobalAccessLogMode.None)
                    {
                        InitAccessLog();
                    }

                    AccessLogInitialized = true;
                }
            }

            return(GlobalAccessLogMode != GlobalAccessLogMode.None);
        }
Beispiel #2
0
        public Result RunOperationWithAccessLog(LocalAccessLogMode logType, FileHandle handle, Func <Result> operation,
                                                Func <string> textGenerator, [CallerMemberName] string caller = "")
        {
            Result rc;

            if (IsEnabledAccessLog(logType) && handle.File.Parent.IsAccessLogEnabled)
            {
                TimeSpan startTime = Time.GetCurrent();
                rc = operation();
                TimeSpan endTime = Time.GetCurrent();

                OutputAccessLog(rc, startTime, endTime, handle, textGenerator(), caller);
            }
            else
            {
                rc = operation();
            }

            return(rc);
        }
Beispiel #3
0
 public void SetLocalAccessLogMode(LocalAccessLogMode mode)
 {
     LocalAccessLogMode = mode;
 }