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); }
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); }
public void SetLocalAccessLogMode(LocalAccessLogMode mode) { LocalAccessLogMode = mode; }