pgadmin3/include/dlg/dlgClasses.h
lsv 450c00ea90 Added collection of waiting events.
В окне "Status server" при получении информации о процессах добавлен сбор событий ожидания.
Должно быть установлено расширение pg_wait_sampling.
И правильно настроены параметры. Для примера минимальный размер буфера:
при частоте опроса 1 сек (1000мс), количестве процессов 100 (num_p),
pg_wait_sampling.history_period=10
Значение pg_wait_sampling.history_size = 1000 /10 * 100 = 10000
для 3-х кратного запаса можно взять 30000.
Ожидание ClientRead немного изменено и означает, ожидание данных от клиента в НАЧАТОЙ ТРАНЗАКЦИИ.
События ожидания можно сохранить в текстовый файл.
В настройках pgadmin3opt.json можно выбрать цвета для отдельных событий или отключить сбор.
2024-09-24 13:18:02 +05:00

189 lines
3.9 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// dlgClasses.h - Some dialogue base classes
//
//////////////////////////////////////////////////////////////////////////
#ifndef DLGCLASSES_H
#define DLGCLASSES_H
#include <wx/wx.h>
WX_DECLARE_LIST(wxWindow, windowList);
#define btnOK CTRL_BUTTON("wxID_OK")
#define btnCancel CTRL_BUTTON("wxID_CANCEL")
class frmMain;
class pgObject;
class pgQueryThread;
class ctlMenuToolbar;
class pgDialog : public wxDialog
{
public:
pgDialog()
{
statusBar = 0;
}
void RestorePosition(int defaultX = -1, int defaultY = -1, int defaultW = -1, int defaultH = -1, int minW = -1, int minH = -1);
void SavePosition();
void LoadResource(wxWindow *parent, const wxChar *name = 0);
protected:
void OnCancel(wxCommandEvent &ev);
void OnClose(wxCloseEvent &event);
void AddStatusBar();
void PostCreation();
wxString dlgName;
wxStatusBar *statusBar;
DECLARE_EVENT_TABLE()
};
class menuFactoryList;
class pgFrame : public wxFrame
{
public:
pgFrame(wxFrame *parent, const wxString &title, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long flags = wxDEFAULT_FRAME_STYLE) ;
~pgFrame();
void RemoveFrame(wxWindow *frame);
void AddFrame(wxWindow *wnd)
{
frames.Append(wnd);
}
void RestorePosition(int defaultX = -1, int defaultY = -1, int defaultW = -1, int defaultH = -1, int minW = 100, int minH = 70);
void SavePosition();
void OnAction(wxCommandEvent &event);
void UpdateRecentFiles(bool updatefile = true);
menuFactoryList *GetMenuFactories()
{
return menuFactories;
}
protected:
void OnKeyDown(wxKeyEvent &event);
void OnExit(wxCommandEvent &event);
void OnRecent(wxCommandEvent &event);
void OnHelp(wxCommandEvent &event);
virtual void OpenLastFile() {}
virtual bool CheckChanged(bool canVeto)
{
return false;
}
virtual wxString GetHelpPage() const
{
return wxEmptyString;
}
windowList frames;
menuFactoryList *menuFactories;
wxString dlgName;
wxString lastFilename, lastDir, lastPath;
wxString recentKey;
wxMenu *fileMenu, *editMenu, *viewMenu, *recentFileMenu, *helpMenu, *waitMenu;
wxStatusBar *statusBar;
wxMenuBar *menuBar;
ctlMenuToolbar *toolBar;
bool changed;
DECLARE_EVENT_TABLE()
};
class DialogWithHelp : public pgDialog
{
public:
DialogWithHelp(frmMain *frame);
protected:
frmMain *mainForm;
void OnHelp(wxCommandEvent &ev);
private:
virtual wxString GetHelpPage() const = 0;
DECLARE_EVENT_TABLE()
};
class ExecutionDialog : public DialogWithHelp
{
public:
ExecutionDialog(frmMain *frame, pgObject *_object);
virtual wxString GetSql() = 0;
void OnOK(wxCommandEvent &ev);
void OnCancel(wxCommandEvent &ev);
void OnClose(wxCloseEvent &event);
void Abort();
protected:
void EnableOK(const bool enable);
pgConn *conn;
pgObject *object;
pgQueryThread *thread;
wxTextCtrl *txtMessages;
private:
bool bIsAborted;
bool bIsExecutionStarted;
bool bIsExecutionCompleted;
DECLARE_EVENT_TABLE()
};
class sysProcess;
class wxProcessEvent;
class wxTimer;
class wxTimerEvent;
class ExternProcessDialog : public DialogWithHelp
{
public:
ExternProcessDialog(frmMain *frame);
~ExternProcessDialog();
virtual wxString GetDisplayCmd(int version) = 0;
virtual wxString GetCmd(int step) = 0;
bool Execute(int step = 0, bool finalStep = true);
void Abort();
protected:
wxTextCtrl *txtMessages;
sysProcess *process;
bool done, final;
long processID;
wxArrayString environment;
#if __GNUC__ >= 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
public:
#endif
void OnOK(wxCommandEvent &ev);
void OnCancel(wxCommandEvent &ev);
void OnClose(wxCloseEvent &event);
protected:
void OnEndProcess(wxProcessEvent &event);
void OnPollProcess(wxTimerEvent &event);
void checkStreams();
wxTimer *timer;
DECLARE_EVENT_TABLE()
};
#endif