diff --git a/deviceset.go b/deviceset.go index 01bdba411f..2caaf153b2 100644 --- a/deviceset.go +++ b/deviceset.go @@ -9,3 +9,52 @@ type DeviceSet interface { HasDevice(hash string) bool HasInitializedDevice(hash string) bool } + +type DeviceSetWrapper struct { + wrapped DeviceSet + prefix string +} + +func (wrapper *DeviceSetWrapper) wrap(hash string) string { + if hash != "" { + hash = wrapper.prefix + "-" + hash + } + return hash +} + + +func (wrapper *DeviceSetWrapper) AddDevice(hash, baseHash string) error { + return wrapper.wrapped.AddDevice(wrapper.wrap(hash), wrapper.wrap(baseHash)) +} + +func (wrapper *DeviceSetWrapper) SetInitialized(hash string) error { + return wrapper.wrapped.SetInitialized(wrapper.wrap(hash)) +} + +func (wrapper *DeviceSetWrapper) DeactivateDevice(hash string) error { + return wrapper.wrapped.DeactivateDevice(wrapper.wrap(hash)) +} + +func (wrapper *DeviceSetWrapper) RemoveDevice(hash string) error { + return wrapper.wrapped.RemoveDevice(wrapper.wrap(hash)) +} + +func (wrapper *DeviceSetWrapper) MountDevice(hash, path string) error { + return wrapper.wrapped.MountDevice(wrapper.wrap(hash), path) +} + +func (wrapper *DeviceSetWrapper) HasDevice(hash string) bool { + return wrapper.wrapped.HasDevice(wrapper.wrap(hash)) +} + +func (wrapper *DeviceSetWrapper) HasInitializedDevice(hash string) bool { + return wrapper.wrapped.HasInitializedDevice(wrapper.wrap(hash)) +} + +func NewDeviceSetWrapper(wrapped DeviceSet, prefix string) DeviceSet { + wrapper := &DeviceSetWrapper{ + wrapped: wrapped, + prefix: prefix, + } + return wrapper +}