pgadmin3/include/slony/slCluster.h
2020-07-07 22:19:12 +05:00

226 lines
4.6 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// slCluster.h PostgreSQL Slony-I Cluster
//
//////////////////////////////////////////////////////////////////////////
#ifndef SLCLUSTER_H
#define SLCLUSTER_H
#include "schema/pgDatabase.h"
class frmMain;
class RemoteConn;
class slNode;
WX_DECLARE_OBJARRAY(RemoteConn, RemoteConnArray);
class pgaSlClusterFactory : public pgDatabaseObjFactory
{
public:
pgaSlClusterFactory();
virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
virtual pgCollection *CreateCollection(pgObject *obj);
};
extern pgaSlClusterFactory slClusterFactory;
class slCluster : public pgDatabaseObject
{
public:
slCluster(const wxString &newName = wxT(""));
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
static pgObject *ReadObjects(pgCollection *coll, ctlTree *browser);
wxString GetTranslatedMessage(int kindOfMessage) const;
bool ClusterMinimumVersion(int major, int minor);
void iSetSchemaPrefix(const wxString &s)
{
schemaPrefix = s;
}
wxString GetSchemaPrefix() const
{
return schemaPrefix;
}
void iSetLocalNodeID(long l)
{
localNodeID = l;
}
long GetLocalNodeID()
{
return localNodeID;
}
void iSetLocalNodeName(const wxString &s)
{
localNodeName = s;
}
wxString GetLocalNodeName() const
{
return localNodeName;
}
void iSetAdminNodeID(long l)
{
adminNodeID = l;
}
long GetAdminNodeID()
{
return adminNodeID;
}
void iSetAdminNodeName(const wxString &s)
{
adminNodeName = s;
}
wxString GetAdminNodeName() const
{
return adminNodeName;
}
void iSetClusterVersion(const wxString &s)
{
clusterVersion = s;
}
wxString GetClusterVersion() const
{
return clusterVersion;
}
long GetSlonPid();
slNode *GetLocalNode(ctlTree *browser);
bool RequireDropConfirm()
{
return true;
}
bool WantDummyChild()
{
return true;
}
pgConn *GetNodeConn(frmMain *form, long nodeId, bool create = true);
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
wxMenu *GetNewMenu();
wxString GetSql(ctlTree *browser);
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
private:
wxString schemaPrefix;
wxString localNodeName, adminNodeName;
wxString clusterVersion;
long localNodeID, adminNodeID;
slNode *localNode;
RemoteConnArray remoteConns;
};
class slClusterCollection : public pgDatabaseObjCollection
{
public:
slClusterCollection(pgaFactory *factory, pgDatabase *db);
wxString GetTranslatedMessage(int kindOfMessage) const;
};
// Slony-I object
class slObject : public pgDatabaseObject
{
public:
slObject(slCluster *_slCluster, pgaFactory &factory, const wxString &newName = wxT(""));
slCluster *GetCluster()
{
return cluster;
}
void iSetSlId(long i)
{
slId = i;
}
long GetSlId() const
{
return slId;
}
private:
slCluster *cluster;
long slId;
};
// Collection of Slony-I objects
class slObjCollection : public pgDatabaseObjCollection
{
public:
slObjCollection(pgaFactory *factory, slCluster *_cluster);
slCluster *GetCluster()
{
return cluster;
}
long GetSlId() const
{
return slId;
}
void iSetSlId(long l)
{
slId = l;
}
private:
slCluster *cluster;
long slId;
};
class slObjFactory : public pgDatabaseObjFactory
{
public:
slObjFactory(const wxChar *tn, const wxChar *ns, const wxChar *nls, wxImage *img, wxImage *imgSm = 0) : pgDatabaseObjFactory(tn, ns, nls, img, imgSm) {}
virtual pgCollection *CreateCollection(pgObject *obj);
};
class clusterActionFactory : public contextActionFactory
{
public:
clusterActionFactory(menuFactoryList *list) : contextActionFactory(list) {}
bool CheckEnable(pgObject *obj);
};
class slonyRestartFactory : public clusterActionFactory
{
public:
slonyRestartFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
};
class slonyUpgradeFactory : public clusterActionFactory
{
public:
slonyUpgradeFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
};
class slonyFailoverFactory : public clusterActionFactory
{
public:
slonyFailoverFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
bool CheckEnable(pgObject *obj);
};
#endif