Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ApplicationCache = xcore.NewXCache("applications", 0, 0)
View Source
var ApplicationPlugin = map[string]*plugin.Plugin{}
View Source
var Applications = map[string]Application{}
Functions ¶
func GetApplicationPlugin ¶
Types ¶
type Application ¶
type Application interface { // standard APPs function StartHost(h config.Host) StartContext(ctx *context.Context) GetDatasourcesConfigFile() string GetDatasourceSet() DatasourceSet GetCompiledModules() ModuleSet }
Application must be compliant with the interface Application Applications ARE plugins
func GetApplication ¶
func GetApplication(appid string) Application
type Datasource ¶
type Datasource interface { // general needed funcion GetName() string GetConfig() *xconfig.XConfig AddLanguage(lang language.Tag) GetLanguages() []language.Tag SetLog(id string, logger *log.Logger) GetLog(id string) *log.Logger GetLogs() map[string]*log.Logger Log(id string, messages ...interface{}) SetDatabase(db *xdominion.XBase) GetDatabase() *xdominion.XBase SetTable(id string, table *xdominion.XTable) GetTable(id string) *xdominion.XTable GetTables() map[string]*xdominion.XTable SetCache(id string, cache *xcore.XCache) GetCache(id string) *xcore.XCache GetCaches() map[string]*xcore.XCache SetModule(moduleid string, moduleversion string) RegisterModule(mod Module) GetModule(moduleid string) string GetModules() map[string]string IsModuleAuthorized(id string) bool // Functions to clone the shell and build transactions CloneShell() Datasource StartTransaction() (*xdominion.XTransaction, error) GetTransaction() *xdominion.XTransaction Commit() error Rollback() error }
Datasource is a portable structure interface containing pointer to usefull functions used in any datasources of applications Since it's thread safe and based on maps and slices, it must be accessed through Get/Set functions with mutexes to avoid race conditions The is only ONE database by datasource, with a set of modules and tables into this database.
type DatasourceSet ¶
type DatasourceSet interface { SetDatasource(id string, ctx Datasource) GetDatasource(id string) Datasource GetDatasources() map[string]Datasource CreateDatasource(name string, config *xconfig.XConfig) (Datasource, error) TryDatasource(ctx *context.Context, defaultdatasourcename string) Datasource }
type Module ¶
type Module interface { GetID() string GetVersion() string GetLanguages() map[language.Tag]string GetNeeds() []string // module[.version[+]] GetInstalledVersion(Datasource) string Setup(Datasource, string) ([]string, error) // setup the module in the datasource (link tables definitions and others for first time) Synchronize(Datasource, string) ([]string, error) // build anything missing into the datasource (tables, logs, files, etc) StartContext(Datasource, *context.Context) error // Called at any start of a new context }
Click to show internal directories.
Click to hide internal directories.