feat: refactor interception modules into pausable group
- Add GroupModule to wrap interception, dnsmonitor, and compat modules - Simplify pause/resume operations by grouping related modules - Update worker info collection to handle nested module groups - Remove deprecated flags and improve module lifecycle management - Add proper atomic state tracking for nfqueue interception https://github.com/safing/portmaster/issues/2050
This commit is contained in:
33
service/mgr/group_module.go
Normal file
33
service/mgr/group_module.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package mgr
|
||||
|
||||
// GroupModule is a module that wraps a group of modules,
|
||||
// to allow nesting groups of modules in parent group.
|
||||
type GroupModule struct {
|
||||
mgr *Manager
|
||||
group *Group
|
||||
}
|
||||
|
||||
func NewGroupModule(name string, modules ...Module) *GroupModule {
|
||||
return &GroupModule{
|
||||
mgr: New(name),
|
||||
group: NewGroup(modules...),
|
||||
}
|
||||
}
|
||||
|
||||
func (gm *GroupModule) Manager() *Manager {
|
||||
return gm.mgr
|
||||
}
|
||||
|
||||
func (gm *GroupModule) Start() error {
|
||||
return gm.group.Start()
|
||||
}
|
||||
|
||||
func (gm *GroupModule) Stop() error {
|
||||
return gm.group.Stop()
|
||||
}
|
||||
|
||||
// Modules returns the modules in the group wrapped by this group module.
|
||||
// (mimics Group.Modules())
|
||||
func (gm *GroupModule) Modules() []Module {
|
||||
return gm.group.Modules()
|
||||
}
|
||||
Reference in New Issue
Block a user