transfer_manager

package
v0.0.0-...-58a2b35 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2024 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MinLenth                          int64 = 100 * 1024       //每次传最小(100kb)
	MaxLenth                          int64 = 20 * 1024 * 1024 //每次传输最大(20M)
	Transfer_slice_max_time_diff      int64 = 100              //每次传输最大时间差阀值(100ms)
	ErrNum                            int   = 5                //传输失败重试次数 5次
	Second                            int64 = 1                //传输速度统计时间间隔 1秒
	Recfilepath                             = "files"
	Transferlog_push_task_db_key            = "transfer_push_task_db_key"
	Transferlog_pull_task_db_key            = "transfer_pull_task_db_key"
	Transfer_push_task_id_max               = "transfer_push_task_id_max"
	Transfer_pull_task_id_max               = "transfer_pull_task_id_max"
	Transfer_task_expiration_interval       = 24 * 60 * 60 * time.Second        //任务有效期24小时
	Transfer_push_task_sharing_dirs         = "transfer_push_task_sharing_dirs" // 共享文件夹
	Transfer_pull_addr_white_list           = "transfer_pull_addr_white_list"   //有权限拉取文件的地址白名单
	Transfer_pull_task_if_atuo_db_key       = "transfer_pull_task_if_atuo_db_key"
	Transfer_p2p_mgs_timeout                = 5 * time.Second //p2p消息超时时间为5s
)
View Source
const (
	Transfer_pull_task_stautus_pending_confirmation = "pendingConfirmation" //任务待确认
	Transfer_pull_task_stautus_running              = "running"             // 运行中
	Transfer_pull_task_stautus_stop                 = "stop"                // 已停止
)
View Source
const (
	NameError = 4005
)

Variables

This section is empty.

Functions

func GetPullTaskByTaskId

func GetPullTaskByTaskId(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func GetPushTaskByTaskId

func GetPushTaskByTaskId(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func RegisterRPC

func RegisterRPC()

func Start

func Start(transferManger *TransferManger)

func TransferFilePullTaskDel

func TransferFilePullTaskDel(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferFilePullTaskList

func TransferFilePullTaskList(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferFilePullTaskStart

func TransferFilePullTaskStart(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferFilePullTaskStop

func TransferFilePullTaskStop(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferNewPullTask

func TransferNewPullTask(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferNewPushTask

func TransferNewPushTask(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPullAddrWhiteList

func TransferPullAddrWhiteList(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPullAddrWhiteListAdd

func TransferPullAddrWhiteListAdd(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPullAddrWhiteListDel

func TransferPullAddrWhiteListDel(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPullTaskIsAutoGet

func TransferPullTaskIsAutoGet(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPullTaskIsAutoSet

func TransferPullTaskIsAutoSet(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPushTaskList

func TransferPushTaskList(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPushTaskSharingDirs

func TransferPushTaskSharingDirs(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPushTaskSharingDirsAdd

func TransferPushTaskSharingDirsAdd(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

func TransferPushTaskSharingDirsDel

func TransferPushTaskSharingDirsDel(rj *model.RpcJson, w http.ResponseWriter, r *http.Request) (res []byte, err error)

Types

type FileInfo

type FileInfo struct {
	From  nodeStore.AddressNet `json:"from"` //传输者
	To    nodeStore.AddressNet `json:"to"`   //接收者
	Name  string               `json:"name"` //原始文件名
	Hash  []byte               `json:"hash"`
	Size  int64                `json:"size"`
	Path  string               `json:"path"`
	Index int64                `json:"index"` //下一次要从哪个偏移量
	Data  []byte               `json:"data"`
	Speed map[string]int64     `json:"speed"` //传输速度统计
	Rate  int64                `json:"rate"`
}

func (*FileInfo) CheckFileHash

func (f *FileInfo) CheckFileHash() (err error)

func (*FileInfo) GetSpeed

func (f *FileInfo) GetSpeed() int64

获取速度

func (*FileInfo) SetSpeed

func (f *FileInfo) SetSpeed(stime int64, size int) error

采集速度参数

type FileinfoVO

type FileinfoVO struct {
	PushTaskID uint64           //
	PullTaskID uint64           //
	From       string           //传输者
	To         string           //接收者
	Name       string           //原始文件名
	Hash       string           //
	Size       int64            //
	Path       string           //
	Index      int64            //
	Data       string           //
	Speed      map[string]int64 //传输速度统计
	Rate       int64            //
	Status     string           //ture 为传输中 false为暂停中
}

func ConverPullTaskVO

func ConverPullTaskVO(tm *PullTask) FileinfoVO

转换文件下载信息

func ConverTransferMsgVO

func ConverTransferMsgVO(tm *TransferMsg) FileinfoVO

转换文件下载信息

type PullTask

type PullTask struct {
	PushTaskID uint64    `json:"push_task_id"`
	PullTaskID uint64    `json:"pull_task_id"`
	FileInfo   *FileInfo `json:"file_info"`
	Status     string    `json:"status"` //ture 为传输中 false为暂停中
	Fault      string    `json:"fault"`  //传输文件过程中的异常
	// contains filtered or unexported fields
}

拉取文件任务

func (*PullTask) CreatePullTask

func (t *PullTask) CreatePullTask(tag chan *PullTask) error

func (*PullTask) PullTaskIsAutoGet

func (t *PullTask) PullTaskIsAutoGet() (bool, error)

func (*PullTask) PullTaskRecordList

func (t *PullTask) PullTaskRecordList() (taskList []*PullTask, err error)

func (*PullTask) Task

func (t *PullTask) Task()

type PushTask

type PushTask struct {
	PushTaskID     uint64               `json:"push_task_id"`
	PullTaskID     uint64               `json:"pull_task_id"`
	To             nodeStore.AddressNet `json:"to"` //接收者
	Path           string               `json:"path"`
	Hash           []byte               `json:"hash"`
	ExpirationTime int64                `json:"expiration_time"`
	Size           int64                `json:"size"`
	Index          int64                `json:"index"` //下一次要从哪个偏移量
	Rate           int64                `json:"rate"`
}

func (*PushTask) CreatePushTask

func (t *PushTask) CreatePushTask() (*TransferMsg, error)

创建一个push任务

func (*PushTask) TransferPullAddrWhiteList

func (t *PushTask) TransferPullAddrWhiteList() (whiteList []*nodeStore.AddressNet, err error)

func (*PushTask) TransferPullAddrWhiteListAdd

func (t *PushTask) TransferPullAddrWhiteListAdd(addr nodeStore.AddressNet) error

func (*PushTask) TransferPullAddrWhiteListDel

func (t *PushTask) TransferPullAddrWhiteListDel(addr nodeStore.AddressNet) error

func (*PushTask) TransferPushTaskSharingDirs

func (t *PushTask) TransferPushTaskSharingDirs() (sharingDirs map[string]string, err error)

func (*PushTask) TransferPushTaskSharingDirsAdd

func (t *PushTask) TransferPushTaskSharingDirsAdd(dir string) error

func (*PushTask) TransferPushTaskSharingDirsDel

func (t *PushTask) TransferPushTaskSharingDirsDel(dir string) error

type TransferManger

type TransferManger struct {
	PushTask *PushTask
	PullTask *PullTask

	TaskMap       *sync.Map
	PushTaskIDMax uint64
	PullTaskIDMax uint64
	PullIsAuto    bool //是否自动
	// contains filtered or unexported fields
}
var TransferMangerStatic *TransferManger
var TransferTaskManger *TransferManger

func NewTransferManger

func NewTransferManger(area *libp2parea.Area, transfer_push, transfer_push_recv, transfer_pull, transfer_pull_recv, transfer_new_pull, transfer_new_pull_recv uint64) *TransferManger

func (*TransferManger) FileSlicePush

func (this *TransferManger) FileSlicePush(c engine.Controller, msg engine.Packet, message *message_center.Message)

分片推送

func (*TransferManger) FileSlicePush_recv

func (this *TransferManger) FileSlicePush_recv(c engine.Controller, msg engine.Packet, message *mc.Message)

func (*TransferManger) GetListeningPullFinishSignal

func (this *TransferManger) GetListeningPullFinishSignal() (string, chan *PullTask)

获取文件接收完成信号

func (*TransferManger) GetListeningPushFinishSignal

func (this *TransferManger) GetListeningPushFinishSignal() (string, chan *TransferMsg)

获取文件发送完成信号

func (*TransferManger) GetPullTaskByTaskId

func (this *TransferManger) GetPullTaskByTaskId(taskId uint64) (*PullTask, error)

GetPullTaskByTaskId @Description: 根据拉取任务id获取拉取任务 @receiver this @param taskId 拉取任务 @return *PullTask @return error

func (*TransferManger) GetPushTaskByTaskId

func (this *TransferManger) GetPushTaskByTaskId(taskId uint64) (*PushTask, error)

GetPushTaskByTaskId @Description: 根据推送任务id获取推送任务 @receiver this @param taskId 推送任务id @return *PushTask @return error

func (*TransferManger) Load

func (this *TransferManger) Load()

加载任务列表

func (*TransferManger) NewPullTask

func (this *TransferManger) NewPullTask(source, path string, from nodeStore.AddressNet) error

NewPullTask @Description: 发起一个拉取文件任务 @receiver this @param source 资源相对路径如:files/text.txt @param path 相对路径如:files/text.txt @param from 文件来源节点地址 @return error

func (*TransferManger) NewPushTask

func (this *TransferManger) NewPushTask(path string, to nodeStore.AddressNet) (*PushTask, error)

NewPushTask @Description: 传输文件申请(发起一个推送任务) @receiver this @param path @param to @return error

func (*TransferManger) PullTaskDel

func (this *TransferManger) PullTaskDel(taskId uint64) error

PullTaskDel @Description: 拉取任务删除 @receiver this @param taskId 拉取任务id @return ok @return err

func (*TransferManger) PullTaskIsAutoGet

func (this *TransferManger) PullTaskIsAutoGet() (bool, error)

PullTaskIsAutoGet @Description: 获取是否自动拉取状态 @receiver this @return bool ture开启自动拉取 @return error

func (*TransferManger) PullTaskIsAutoSet

func (this *TransferManger) PullTaskIsAutoSet(auto bool) error

PullTaskIsAutoSet @Description: 设置是否自动拉取 @receiver this @param auto ture开启自动拉取 @return error

func (*TransferManger) PullTaskList

func (this *TransferManger) PullTaskList() []*PullTask

PullTaskList @Description: 拉取任务列表 @receiver this @return []*PullTask

func (*TransferManger) PullTaskStart

func (this *TransferManger) PullTaskStart(taskId uint64, path string) error

PullTaskStart @Description: 拉取任务开始 @receiver this @param taskId 拉取任务id @return ok @return err

func (*TransferManger) PullTaskStop

func (this *TransferManger) PullTaskStop(taskId uint64) error

PullTaskStop @Description: 拉取任务停止 @receiver this @param taskId 拉取任务id @return ok @return err

func (*TransferManger) PushTaskList

func (this *TransferManger) PushTaskList() []*PushTask

PushTaskList @Description: 推送任务列表 @receiver this @return map[uint64]*PushTask

func (*TransferManger) RecvNewPullTask

func (this *TransferManger) RecvNewPullTask(c engine.Controller, msg engine.Packet, message *message_center.Message)

接收一个Pull任务申请,并创建对应的push任务

func (*TransferManger) RecvNewPullTask_recv

func (this *TransferManger) RecvNewPullTask_recv(c engine.Controller, msg engine.Packet, message *mc.Message)

func (*TransferManger) RecvNewPushTask

func (this *TransferManger) RecvNewPushTask(c engine.Controller, msg engine.Packet, message *message_center.Message)

接收传输文件申请并创建pull任务

func (*TransferManger) RecvNewPushTask_recv

func (this *TransferManger) RecvNewPushTask_recv(c engine.Controller, msg engine.Packet, message *mc.Message)

func (*TransferManger) ReturnListeningPullFinishSignal

func (this *TransferManger) ReturnListeningPullFinishSignal(id string)

归还删除接收文件完成信号

func (*TransferManger) ReturnListeningPushFinishSignal

func (this *TransferManger) ReturnListeningPushFinishSignal(id string)

归还删除发送文件完成信号

func (*TransferManger) TransferPullAddrWhiteList

func (this *TransferManger) TransferPullAddrWhiteList() (list []string, err error)

TransferPullAddrWhiteList @Description: 授权白名单地址列表 @receiver this @return whiteList @return err

func (*TransferManger) TransferPullAddrWhiteListAdd

func (this *TransferManger) TransferPullAddrWhiteListAdd(addr nodeStore.AddressNet) error

TransferPullAddrWhiteListAdd @Description: 授权白名单地址添加 @receiver this @param addr @return error

func (*TransferManger) TransferPullAddrWhiteListDel

func (this *TransferManger) TransferPullAddrWhiteListDel(addr nodeStore.AddressNet) error

TransferPullAddrWhiteListDel @Description: 授权白名单地址删除 @receiver this @param addr @return error

func (*TransferManger) TransferPushTaskSharingDirs

func (this *TransferManger) TransferPushTaskSharingDirs() (sharingDirs map[string]string, err error)

TransferPushTaskSharingDirs @Description: 共享目录列表 @receiver this @return sharingDirs @return err

func (*TransferManger) TransferPushTaskSharingDirsAdd

func (this *TransferManger) TransferPushTaskSharingDirsAdd(dir string) error

TransferPushTaskSharingDirsAdd @Description: 共享目录添加 @receiver this @param dir 目录绝对路径 @return error

func (*TransferManger) TransferPushTaskSharingDirsDel

func (this *TransferManger) TransferPushTaskSharingDirsDel(dir string) error

TransferPushTaskSharingDirsDel @Description: 共享目录删除 @receiver this @param dir 目录绝对路径 @return error

type TransferMsg

type TransferMsg struct {
	PushTaskID uint64    `json:"push_task_id"`
	PullTaskID uint64    `json:"pull_task_id"`
	Lenth      int64     `json:"lenth"`
	FileInfo   *FileInfo `json:"file_info"`
}

func ParseMsg

func ParseMsg(d []byte) (*TransferMsg, error)

解析消息

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL