HiveNetFileTransfer.protocol module

文件传输协议模块

class HiveNetFileTransfer.protocol.LocalProtocol(src_file: Union[str, _io.FileIO], dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]

基类:HiveNetFileTransfer.protocol.ProtocolFw

本地文件传输至本地的传输协议(复制)

__init__(src_file: Union[str, _io.FileIO], dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]

初始化文件传输协议类

注: 实现类必须在初始化中完成目标端 TransferSaver 的初始化处理

参数
  • src_file (str|FileIO) – 源文件路径或已打开的文件句柄

  • dest_file (str) – 目标文件路径

  • is_resume (bool) – default=True, 指定是否续传(自动查找已下载的信息), 如果不指定续传将自动删除原来已下载临时文件

  • is_overwrite (bool) – default=False, 是否覆盖已有文件, 如果为否, 则目标文件已存在的情况下抛出异常

  • thread_num (int) – default=1, 写入处理线程数量

  • block_size (int) – default=4096, 每次传输块大小, 单位为byte

  • cache_size (int) – default=1024, 单线程缓存大小, 单位为kb(注意: 真实缓存大小还需要乘以处理线程数量)

  • auto_expand (bool) – default=True, 是否自动扩展文件大小(否则在初始化时会自动创建指定大小的文件)

  • 扩展参数 (-) –

  • 重载类自行扩展处理所需的参数 (kwargs) –

close()[源代码]

关闭传输协议对象

close_file(index: int, is_force: bool = False)[源代码]

关闭打开的文件

参数
  • index (int) – 要关闭的文件对象对应的处理线程索引

  • is_force (bool) – default=False, 指示是否强制关闭

close_writer(index: int, is_force: bool = False)[源代码]

关闭打开的写入对象

参数
  • index (int) – 要关闭的写入对象对应的处理线程索引

  • is_force (bool) – default=False, 指示是否强制关闭

destroy_saver()[源代码]

销毁接收数据对象

file_finished()[源代码]

通知数据保存对象文件已结束

property file_size: int

获取传输文件大小

@property {int}

flush_cache()[源代码]

强制将缓存数据写入实际文件

get_extend_info() dict[源代码]

获取保存的扩展信息字典

返回

返回保存的扩展信息字典

返回类型

dict

get_file_md5() str[源代码]

获取文件的md5值

返回

文件md5值, 如果获取不到md5值返回None

返回类型

str

get_file_size() int[源代码]

获取文件的大小

返回

文件大小, 如果不支持获取文件大小返回 None

返回类型

int

get_saver_info() dict[源代码]

获取数据保存信息

返回

已保存的信息字典

{

‘file_size’: -1, # 要接收的文件大小, -1 代表不确定文件实际大小

’write_size’: 0, # 已写入的数据大小

’md5’: ‘’, # 文件的md5值

}

返回类型

dict

get_thread_num() int[源代码]

获取支持处理的线程数

返回

线程数

返回类型

int

init_saver()[源代码]

初始化数据保存对象

open_file(index: int = 0)[源代码]

打开文件并返回文件对象

参数

index (int) – default=0, 当前的数据处理线程索引

返回

打开的文件对象属性字典

{‘handle’: FileIO, ‘close_able’: 是否可关闭, lock: 锁对象}

返回类型

dict

open_writer(index: int = 0) dict[源代码]

打开写入对象并返回对象属性

参数

index (int) – default=0, 当前的数据处理线程索引

返回

打开的文件对象属性字典

{‘handle’: 写入对象, ‘close_able’: 是否可关闭, lock: 锁对象}

返回类型

dict

pause()[源代码]

通知协议暂停传输, 保存当前状态

read_file_data(index: int, handle: _io.FileIO, start: int, size: int, lock: threading.RLock) bytes[源代码]

获取文件指定位置数据

参数
  • index (int) – 处理读取的线程索引

  • handle (object) – 打开的文件句柄

  • start (int) – 要获取的数据开始位置

  • size (int) – 要获取的数据大小

  • lock (threading.RLock) – 读取数据的锁对象

返回

获取到的数据字典

注: 如果开始位置超过文件大小, 将返回b’’; 如果要获取的数据大小超过文件, 则返回真实的数据大小

对于无法预知文件大小的情况, 如果返回b’’也代表着文件结束

返回类型

bytes

write_data(handle, lock: threading.RLock, index: int = 0, start: Optional[int] = None, size: Optional[int] = None, data: Optional[bytes] = None) dict[源代码]

写入文件

参数
  • handle (object) – 写入对象

  • lock (threading.RLock) – 锁定写入操作的锁对象

  • index (int) – default=0, 指定写入数据的线程索引

  • start (int) – default=None, 数据在文件的开始位置, 如果传空代表请求该线程索引对应的获取任务信息

  • size (int) – default=None, 传入数据的长度

  • data (bytes) – default=None, 传入数据字节数组

返回

返回下一个任务要获取的信息字典, 格式为:

{

‘status’: 0, # 状态, 0-成功, 1-开始位置与线程缓存不一致, 2-全部下载完成, 3-文件md5校验失败

’index’: 0, # 当前线程索引

’start’: -1, # 开始位置, 如果传入-1代表该线程已无获取任务

’size’: 0, # 要获取数据的大小

}

返回类型

dict

class HiveNetFileTransfer.protocol.ProtocolFw(src_file: str, dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]

基类:object

文件传输协议框架

__init__(src_file: str, dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]

初始化文件传输协议类

注: 实现类必须在初始化中完成目标端 TransferSaver 的初始化处理

参数
  • src_file (str) – 源文件信息

  • dest_file (str) – 目标文件信息

  • is_resume (bool) – default=True, 指定是否续传(自动查找已下载的信息), 如果不指定续传将自动删除原来已下载临时文件

  • is_overwrite (bool) – default=False, 是否覆盖已有文件, 如果为否, 则目标文件已存在的情况下抛出异常

  • thread_num (int) – default=1, 写入处理线程数量

  • block_size (int) – default=4096, 每次传输块大小, 单位为byte

  • cache_size (int) – default=1024, 单线程缓存大小, 单位为kb(注意: 真实缓存大小还需要乘以处理线程数量)

  • auto_expand (bool) – default=True, 是否自动扩展文件大小(否则在初始化时会自动创建指定大小的文件)

  • 扩展参数 (-) –

  • 重载类自行扩展处理所需的参数 (kwargs) –

close()[源代码]

关闭传输协议对象

close_file(index: int, is_force: bool = False)[源代码]

关闭打开的文件

参数
  • index (int) – 要关闭的文件对象对应的处理线程索引

  • is_force (bool) – default=False, 指示是否强制关闭

close_writer(index: int, is_force: bool = False)[源代码]

关闭打开的写入对象

参数
  • index (int) – 要关闭的写入对象对应的处理线程索引

  • is_force (bool) – default=False, 指示是否强制关闭

file_finished()[源代码]

通知数据保存对象文件已结束

property file_size: int

获取传输文件大小

@property {int}

flush_cache()[源代码]

强制将缓存数据写入实际文件

get_extend_info() dict[源代码]

获取保存的扩展信息字典

返回

返回保存的扩展信息字典

返回类型

dict

get_saver_info() dict[源代码]

获取数据保存信息

返回

已保存的信息字典

{

‘file_size’: -1, # 要接收的文件大小, -1 代表不确定文件实际大小

’write_size’: 0, # 已写入的数据大小

’md5’: ‘’, # 文件的md5值

}

返回类型

dict

get_thread_num() int[源代码]

获取支持处理的线程数

返回

线程数

返回类型

int

open_file(index: int = 0)[源代码]

打开文件并返回文件对象

参数

index (int) – default=0, 当前的数据处理线程索引

返回

打开的文件对象属性字典

{‘handle’: FileIO, ‘close_able’: 是否可关闭, lock: 锁对象}

返回类型

dict

open_writer(index: int = 0) dict[源代码]

打开写入对象并返回对象属性

参数

index (int) – default=0, 当前的数据处理线程索引

返回

打开的文件对象属性字典

{‘handle’: 写入对象, ‘close_able’: 是否可关闭, lock: 锁对象}

返回类型

dict

pause()[源代码]

通知协议暂停传输, 保存当前状态

read_file_data(index: int, handle, start: int, size: int, lock: threading.RLock) bytes[源代码]

获取文件指定位置数据

参数
  • index (int) – 处理读取的线程索引

  • handle (object) – 打开的文件句柄

  • start (int) – 要获取的数据开始位置

  • size (int) – 要获取的数据大小

  • lock (threading.RLock) – 读取数据的锁对象

返回

获取到的数据字典

注: 如果开始位置超过文件大小, 将返回b’’; 如果要获取的数据大小超过文件, 则返回真实的数据大小

对于无法预知文件大小的情况, 如果返回b’’也代表着文件结束

返回类型

bytes

write_data(handle, lock: threading.RLock, index: int = 0, start: Optional[int] = None, size: Optional[int] = None, data: Optional[bytes] = None) dict[源代码]

写入文件数据

参数
  • handle (object) – 写入对象

  • lock (threading.RLock) – 锁定写入操作的锁对象

  • index (int) – default=0, 指定写入数据的线程索引

  • start (int) – default=None, 数据在文件的开始位置, 如果传空代表请求该线程索引对应的获取任务信息

  • size (int) – default=None, 传入数据的长度

  • data (bytes) – default=None, 传入数据字节数组

返回

返回下一个任务要获取的信息字典, 格式为:

{

‘status’: 0, # 状态, 0-成功, 1-开始位置与线程缓存不一致, 2-全部下载完成, 3-文件md5校验失败

’index’: 0, # 当前线程索引

’start’: -1, # 开始位置, 如果传入-1代表该线程已无获取任务

’size’: 0, # 要获取数据的大小

}

返回类型

dict