search for: connectioninterface

Displaying 3 results from an estimated 3 matches for "connectioninterface".

2020 Apr 24
1
[PATCH nbdkit] golang: Pass Plugin and Connection by reference not value.
...called when the client has connected and where you should return a new instance of your connection struct. For example: - func (p MyPlugin) Load() { + func (p *MyPlugin) Load() { // global callback used for initializing the plugin } - func (p MyPlugin) Open(readonly bool) (nbdkit.ConnectionInterface, error) { + func (p *MyPlugin) Open(readonly bool) (nbdkit.ConnectionInterface, error) { // new client has connected return &MyConnection{}, nil } - func (c MyConnection) GetSize() (uint64, error) { + func (c *MyConnection) GetSize() (uint64, error) { // calle...
2020 Apr 23
2
Re: [PATCH nbdkit v2] Add the ability to write plugins in golang.
...(e PluginError) Error() string { + return e.String() +} + +// The plugin interface. +type PluginInterface interface { + // Open is required for all plugins. + // Other methods are optional. + Load() + Unload() + Config(key string, value string) error + ConfigComplete() error + Open(readonly bool) (ConnectionInterface, error) +} + +// The client connection interface. +type ConnectionInterface interface { + // GetSize and PRead are required for all plugins. + // Other methods are optional. + Close() + GetSize() (uint64, error) + PRead(buf []byte, offset uint64, flags uint32) error +} + +// Default implementations...
2020 Apr 21
2
[PATCH nbdkit v2] Add the ability to write plugins in golang.
Thanks: Dan Berrangé XXX UNFINISHED: - Is using uintptr for the handle a good idea? Plugins must return something != 0. In other languages we would allow plugins to return an arbitrary object here, but this is not possible in golang because of lack of GC roots. - Default can_* methods are hard to implement. Ideally we would be able to test if a user plugin implements a