Files
2026-11-07 13:30:45 +07:00

218 lines
5.5 KiB
C++

#pragma once
#include "afxwin.h"
#include "cBuffer.h"
#include "cPacket.h"
#include "ClientSocket.h"
#include "LauncherListCtrl.h"
#include "ProcessCtrl.h"
#include <string>
#include <vector>
#include "afxcmn.h"
class CLS_launcherDlg;
class CPerfMonDlg;
typedef std::vector<int> UNITS;
typedef struct _FOLDERSTRING_
{
CString m_folder;
CStringArray m_folders;
CStringArray m_files;
}FOLDERSTRING;
// CServerDialog 대화 상자입니다.
enum StatusIcons
{
STATUS_ON = 0,
STATUS_OFF,
};
enum ResourceTypes
{
RESOURCE_TYPE_CPU = 1,
RESOURCE_TYPE_RAM,
RESOURCE_TYPE_DISKC,
RESOURCE_TYPE_DISKD,
RESOURCE_TYPE_UPLOAD,
RESOURCE_TYPE_DOWNLOAD,
RESOURCE_TYPE_END
};
class CServerDialog : public CDialog
{
DECLARE_DYNAMIC(CServerDialog)
public:
CServerDialog(CWnd* pParent = NULL); // 표준 생성자입니다.
virtual ~CServerDialog();
// 대화 상자 데이터입니다.
enum { IDD = IDD_SERVERINFO_DIALOG };
public:
void Init(CString& title, CString& IP, UINT port, RECT pos);
void InitControls();
void CreatePopup();
BOOL CreateSocket(CString& IP, UINT port);
BOOL CloseSocket();
BOOL IsConnected();
void SendPacket(const UINT command, const void* buffer, const UINT length);
void Reset();
void Next(BOOL success = TRUE);
BOOL TransferFile();
BOOL TransferBegin();
BOOL TransferDo();
BOOL TransferEnd();
CString GetTitle() { return m_name; }
//BOOL ReadFile();
void SetAuto(BOOL b) { m_auto = b; }
BOOL GetAuto() { return m_auto; }
BOOL IsMouseOverTab(LONG x, LONG y);
void SetTabRect(RECT rect) { m_tapRect = rect; }
void SendMsgDlg( TCHAR * serviceName, int cmd );
void SendMsgDlg( int cmd );
void SendMsgDlg( FOLDERSTRING& sttmp);
void ServicePlay(TCHAR* serviceName, BOOL console);
void ServiceStop(TCHAR* serviceName, BOOL console);
public:
void RequestServices();
void RequestPeformances();
void RequestReboot();
void RequestInstall();
void RequestPlayAll();
void RequestStopAll();
void RequestFileSync();
void RequestFileRemove();
void RequestFileBackup();
protected:
void FindFiles(CString folder, CStringArray& files, CStringArray& folders);
void UpdateRoot();
void ResetApplyAll();
void Log(const TCHAR *format, ...);
int GetIndex(const TCHAR* service);
void SetCPU(UNITS& units);
void SetMemory(UNITS& units);
void SetNetwork(UNITS& units);
void SetDisk(UNITS& units);
void SetSyncComplete(BOOL result);
public:
void SyncCommandStart( CString& syncFolder, BOOL recursive );
void SyncCommandEnd();
void SyncFindFiles( BOOL recursive );
BOOL CommandFileSync( CString& syncFolder, BOOL recursive = TRUE );
BOOL CommandInstall( CString& service, CString& demon, CString& script );
BOOL CommandUninstall( CString& service );
BOOL CommandPlay( CString& service );
BOOL CommandStop( CString& service );
BOOL CommandPlayAll();
BOOL CommandStopAll();
BOOL CommandUninstallAll();
int FindServiceIndex( CString& service );
BOOL IsServiceOn( int index );
BOOL IsServiceOn( CString& service );
BOOL IsReady() { return m_ready; }
BOOL IsSyncComplete() { return m_syncComplete; }
int GetServiceCount() { return m_services.GetItemCount(); }
protected:
CClientSocket* m_socket;
UINT m_sequence;
CString m_name;
CMenu m_menu;
HBITMAP m_statusIcon[2];
// 복사할 파일목록들
CString m_folder;
CStringArray m_folders;
CStringArray m_files;
UINT m_fileIndex;
UINT m_fileOffset;
cBuffer m_buffer;
cBuffer m_send;
DWORD m_begin;
UINT m_maxCount;
UINT m_fileCount;
UINT m_fileLength;
CString m_filePath;
CString m_fileName;
CString m_root;
cPacket m_packet;
BOOL m_auto;
CMsgBox m_msgbox;
CImageList m_imageList;
RECT m_tapRect; // 해당 탭의 위치정보
CLS_launcherDlg* m_launcherDlg;
CPerfMonDlg* m_perfMonDlg;
CProgressCtrl m_progressBar;
FOLDERSTRING m_stlocal;
CLauncherListCtrl m_services;
CProcessCtrl m_ctlCPU, m_ctlRAM, m_ctlUpload, m_ctlDownload, m_ctlDisk, m_ctlDisk2;
UNITS m_CPUs, m_Memorys, m_Networks, m_Disks;
int maxResource[RESOURCE_TYPE_END];
// Batch Command 관련
BOOL m_syncComplete;
BOOL m_ready;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
CStatic m_nameStatic;
CStatic m_status;
CStatic m_log;
CStatic m_barCPU;
CStatic m_barRAM;
CStatic m_barUpload;
CStatic m_barDownload;
CStatic m_barDisk;
CStatic m_barDisk2;
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedButtonUpdate();
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnClose();
afx_msg void OnBnClickedButtonRefresh();
afx_msg void OnBnClickedButtonPlayAll();
afx_msg void OnBnClickedButtonStopAll();
afx_msg void OnBnClickedButtonRemove();
afx_msg void OnBnClickedButtonBackup();
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg LRESULT OnConnect(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnDisconnect(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnReceive(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnPeformanceMonitor(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnPlay(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnStop(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnPlayConsole(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnStopConsole(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnUninstall(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnAutomatic(WPARAM wParam, LPARAM lParam);
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
};