/** * Generic USB filter field setter. * * @param aIdx The field index. * @param aStr The new value. * * @return COM status. */ HRESULT HostUSBDeviceFilter::i_usbFilterFieldSetter(USBFILTERIDX aIdx, const com::Utf8Str &aStr) { AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); Utf8Str strOld; i_usbFilterFieldToString(&bd->mUSBFilter, aIdx, strOld); if (strOld != aStr) { //bd.backup(); com::Utf8Str errStr; HRESULT rc = USBDeviceFilter::i_usbFilterFieldFromString(&bd->mUSBFilter, aIdx, aStr, errStr); if (FAILED(rc)) { //bd.rollback(); return setError(rc, "%s", errStr.c_str()); } /* leave the lock before informing callbacks */ alock.release(); return mParent->i_onUSBDeviceFilterChange(this); } return S_OK; }
/** * Generic USB filter field getter. * * @param aIdx The field index. * @param aStr Where to store the value. * * @return COM status. */ HRESULT HostUSBDeviceFilter::i_usbFilterFieldGetter(USBFILTERIDX aIdx, com::Utf8Str &aStr) { AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); i_usbFilterFieldToString(&bd->mUSBFilter, aIdx, aStr); return S_OK; }