Skip to content
Snippets Groups Projects
Select Git revision
  • f33fafb543b8b9f76632b303e753eaacd4dd954e
  • 4.26 default protected
  • 5.3
  • dev/5.5
  • dev/5.3
  • dev/5.1
  • deprecated/4.22
7 results

VAReceiverActor.cpp

Blame
  • LogStream.cpp 3.79 KiB
    #include "LogStream.h"
    #include "UniversalLogging.h"
    
    #include "HAL/PlatformFilemanager.h"
    #include "Paths.h"
    #include "IPlatformFileProfilerWrapper.h"
    
    LogStreamImpl::LogStreamImpl(const FString Filepath, const FString Filename, const bool bPer_Session, const bool bLogOnMaster, const bool bLogOnSlaves)
      : Filepath(Filepath)
      , Filename(Filename)
      , bPer_Session(bPer_Session)
      , bOnScreen(false)
      , OnScreenColor(255, 255, 255, 255)
      , OnScreenBackgroundColor(0, 0, 0, 128)
      , OnScreenSize(1.0)
      , OnScreenDuration(5.0)
      , bLogToDefaultLog(false)
      , bLogOnMaster(bLogOnMaster)
      , bLogOnSlaves(bLogOnSlaves)
      , bLogOnScreenOnMaster(true)
      , bLogOnScreenOnSlaves(false)
      , bIs_Open(false)
      , bIs_Valid(false)
      , File_Handle(nullptr)
    {
      if ((bLogOnMaster && UniversalLoggingImpl::IsClusterMaster()) || (bLogOnSlaves && !UniversalLoggingImpl::IsClusterMaster()))
      {
        Open();
        if (bIs_Open)
          bIs_Valid = true;
        Close();
      }
      else
      {
        bIs_Valid = true;
      }
    }
    
    LogStreamImpl::~LogStreamImpl()
    {
      Close();
    }
    
    FString LogStreamImpl::GetFilepath()
    {
      return Filepath;
    }
    
    FString LogStreamImpl::GetFilename()
    {
      return Filename;
    }
    
    void LogStreamImpl::SetOnScreen(const bool Val)
    {
      bOnScreen = Val;
    }
    
    bool LogStreamImpl::GetOnScreen() const
    {
      return bOnScreen;
    }
    
    void LogStreamImpl::SetOnScreenColor(const FColor Color)
    {
      OnScreenColor = Color;
    }
    
    FColor LogStreamImpl::GetOnScreenColor() const
    {
      return OnScreenColor;
    }
    
    void LogStreamImpl::SetOnScreenBackgroundColor(const FColor Color)
    {
      OnScreenBackgroundColor = Color;
    }
    
    FColor LogStreamImpl::GetOnScreenBackgroundColor() const
    {
      return OnScreenBackgroundColor;
    }
    
    void LogStreamImpl::SetOnScreenSize(const float Scale)
    {
      OnScreenSize = Scale;
    }
    
    float LogStreamImpl::GetOnScreenSize() const
    {
      return OnScreenSize;
    }
    
    void LogStreamImpl::SetOnScreenDuration(const float Seconds)
    {
      OnScreenDuration = Seconds;
    }
    
    float LogStreamImpl::GetOnScreenDuration() const
    {
      return OnScreenDuration;
    }
    
    void LogStreamImpl::SetLogToDefaultLog(const bool Val)
    {
      bLogToDefaultLog = Val;
    }
    
    bool LogStreamImpl::GetLogToDefaultLog() const
    {
      return bLogToDefaultLog;
    }
    
    bool LogStreamImpl::GetLogOnMaster() const
    {
      return bLogOnMaster;
    }
    
    bool LogStreamImpl::GetLogOnSlaves() const
    {
      return bLogOnSlaves;
    }
    
    void LogStreamImpl::SetLogOnScreenOnMaster(const bool Val)
    {
      if(Val) // to avoid confusion, this also enables logging
        SetOnScreen(true); 
      bLogOnScreenOnMaster = Val;
    }
    
    bool LogStreamImpl::GetLogOnScreenOnMaster() const
    {
      return bLogOnScreenOnMaster;
    }
    
    void LogStreamImpl::SetLogOnScreenOnSlaves(const bool Val)
    {
      if (Val) // to avoid confusion, this also enables logging
        SetOnScreen(true);
      bLogOnScreenOnSlaves = Val;
    }
    
    bool LogStreamImpl::GetLogOnScreenOnSlaves() const
    {
      return bLogOnScreenOnSlaves;
    }
    
    bool LogStreamImpl::GetIsValid()
    {
      return bIs_Valid;
    }
    
    void LogStreamImpl::Open()
    {
      IPlatformFile& platform_file = FPlatformFileManager::Get().GetPlatformFile();
      FString file_path = FPaths::ConvertRelativePathToFull(FPaths::ProjectDir() + Filepath);
      if(bPer_Session)
        file_path += "/" + UniLog.GetSessionIdentifier();
      platform_file.CreateDirectoryTree(*file_path);
      file_path += "/" + Filename;
      File_Handle = platform_file.OpenWrite(*file_path);
      if (!File_Handle)
      {
        UE_LOG(LogTemp, Error, TEXT("Universal Logging: The file %s could not be opened for writing."), *file_path);
        bIs_Open = false;
        bIs_Valid = false;
        return;
      }
      bIs_Open = true;
    }
    
    void LogStreamImpl::Close()
    {
      delete File_Handle;
      File_Handle = nullptr;
      bIs_Open = false;
    }
    
    bool LogStreamImpl::GetIsOpen() const
    {
      return bIs_Open;
    }
    
    void LogStreamImpl::Write(const FString Text)
    {
      if (!bIs_Valid)
        return;
      if (!bIs_Open)
        Open();
      File_Handle->Write(reinterpret_cast<const uint8*>(TCHAR_TO_ANSI(*Text)), Text.Len());
    }