# -*- coding: utf-8 -*-
"""
DataSlice 内存数据分片

从内存中的字节数据读取。
"""

from typing import Optional

from .base import SimpleSlice


class DataSlice(SimpleSlice):
    """
    内存数据分片读取器
    
    从内存中的字节数据读取。
    
    属性:
        _data: 字节数据
    """

    def __init__(self, data: bytes) -> None:
        """
        初始化数据分片
        
        Args:
            data: 字节数据
        
        Raises:
            TypeError: 数据类型不支持
        """
        super().__init__()

        if not isinstance(data, bytes):
            raise TypeError(f"不支持的类型: {type(data)}，期望 bytes")

        self._data = data
        self._length = len(data)
        self._position = 0

    async def read_abstract(self, size: int) -> bytes:
        """
        读取原始数据
        
        Args:
            size: 读取的字节数
        
        Returns:
            bytes: 原始数据
        """
        end = min(self._position + size, self._length)
        start = self._position
        data = self._data[start:end]
        return data
    
    async def _close(self) -> None:
        """
        关闭数据资源（无操作）
        """
        pass
