Refactor IMediaImage.ReadMediaTag to return error status instead of buffer.

This commit is contained in:
2021-09-18 15:01:31 +01:00
parent ef2fc1788a
commit fbccfb2ca9
68 changed files with 1013 additions and 651 deletions

View File

@@ -907,21 +907,24 @@ namespace Aaru.DiscImages
}
/// <inheritdoc />
public byte[] ReadDiskTag(MediaTagType tag)
public ErrorNumber ReadMediaTag(MediaTagType tag, out byte[] buffer)
{
buffer = null;
switch(tag)
{
case MediaTagType.CD_FullTOC: return _fullToc;
case MediaTagType.CD_FullTOC:
buffer = _fullToc?.Clone() as byte[];
return buffer != null ? ErrorNumber.NoError : ErrorNumber.NoData;
case MediaTagType.CD_TEXT:
{
if(_cdtext != null &&
_cdtext.Length > 0)
return _cdtext;
if(_cdtext is { Length: > 0 })
buffer = _cdtext?.Clone() as byte[];
throw new FeatureNotPresentImageException("Image does not contain CD-TEXT information.");
return buffer != null ? ErrorNumber.NoError : ErrorNumber.NoData;
}
default:
throw new FeatureSupportedButNotImplementedImageException("Feature not supported by image format");
default: return ErrorNumber.NotSupported;
}
}