package plugin import ( "context" "github.com/noahlann/nnet/pkg/config" ) // Plugin 插件接口 type Plugin interface { // Name 获取插件名称 Name() string // Version 获取插件版本 Version() string // Init 初始化插件 Init(config *config.Config) error // Start 启动插件 Start(ctx context.Context) error // Stop 停止插件 Stop(ctx context.Context) error } // ServerPlugin 服务器插件接口 type ServerPlugin interface { Plugin // OnServerStart 服务器启动时调用 OnServerStart(ctx context.Context) error // OnServerStop 服务器停止时调用 OnServerStop(ctx context.Context) error } // ConnectionPlugin 连接插件接口 type ConnectionPlugin interface { Plugin // OnConnectionOpen 连接打开时调用 OnConnectionOpen(ctx context.Context, connID string) error // OnConnectionClose 连接关闭时调用 OnConnectionClose(ctx context.Context, connID string) error } // MessagePlugin 消息插件接口 type MessagePlugin interface { Plugin // OnMessage 消息到达时调用 OnMessage(ctx context.Context, data []byte) ([]byte, error) } // Manager 插件管理器接口 type Manager interface { // Register 注册插件 Register(plugin Plugin) error // Unregister 取消注册插件 Unregister(name string) error // Get 获取插件 Get(name string) (Plugin, error) // List 列出所有插件 List() []Plugin // InitAll 初始化所有插件 InitAll(config *config.Config) error // StartAll 启动所有插件 StartAll(ctx context.Context) error // StopAll 停止所有插件 StopAll(ctx context.Context) error }