Skip to content

Commit

Permalink
feature: functions for listeners
Browse files Browse the repository at this point in the history
  • Loading branch information
NecrossIT committed Jun 9, 2023
1 parent a24f95d commit 0fca45d
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 1 deletion.
18 changes: 18 additions & 0 deletions listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,21 @@ type HostingListener struct {
Name string
Handler func() error
}

type HostingListenerInterface interface {
GetName() string
GetHandler() func() error
Execute() error
}

func (hl *HostingListener) GetName() string {
return hl.Name
}

func (hl *HostingListener) GetHandler() func() error {
return hl.Handler
}

func (hl *HostingListener) Execute() error {
return hl.Handler()
}
5 changes: 4 additions & 1 deletion plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@ type HostingPluginInterface interface {
GetName() string
GetVersion() string
GetAuthor() string
RegisterListeners() []HostingListener
RegisterListener(listener HostingListener) []HostingListener
RegisterListeners(listeners []HostingListener) []HostingListener
GetListeners() []HostingListener
GetListenerByName(name string) HostingListener
}
41 changes: 41 additions & 0 deletions pluginLoader.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package Hosting_System_Plugin_Library

func (plugin *HostingPlugin) RegisterListener(listener HostingListener) error {
plugin.Listeners = append(plugin.Listeners, listener)
return nil
}

func (plugin *HostingPlugin) RegisterListeners(listeners []HostingListener) error {
for _, listener := range listeners {
err := plugin.RegisterListener(listener)
if err != nil {
return err
}
}
return nil
}

func (plugin *HostingPlugin) GetListenerByName(name string) HostingListener {
for _, listener := range plugin.Listeners {
if listener.Name == name {
return listener
}
}
return HostingListener{}
}

func (plugin *HostingPlugin) GetName() string {
return plugin.Name
}

func (plugin *HostingPlugin) GetVersion() string {
return plugin.Version
}

func (plugin *HostingPlugin) GetAuthor() string {
return plugin.Author
}

func (plugin *HostingPlugin) GetListeners() []HostingListener {
return plugin.Listeners
}

0 comments on commit 0fca45d

Please sign in to comment.