MCPcopy
hub / github.com/ph4ntonn/Stowaway / SendFileStat

Method SendFileStat

share/file.go:48–113  ·  view source on GitHub ↗
(route string, targetUUID string, identity int)

Source from the content-addressed store, hash-verified

46}
47
48func (file *MyFile) SendFileStat(route string, targetUUID string, identity int) error {
49 var err error
50 var sMessage protocol.Message
51 if identity == ADMIN {
52 sMessage = protocol.PrepareAndDecideWhichSProtoToLower(global.G_Component.Conn, global.G_Component.Secret, global.G_Component.UUID)
53 } else {
54 sMessage = protocol.PrepareAndDecideWhichSProtoToUpper(global.G_Component.Conn, global.G_Component.Secret, global.G_Component.UUID)
55 }
56
57 statHeader := &protocol.Header{
58 Sender: global.G_Component.UUID,
59 Accepter: targetUUID,
60 MessageType: protocol.FILESTATREQ,
61 RouteLen: uint32(len([]byte(route))),
62 Route: route,
63 }
64
65 downHeader := &protocol.Header{
66 Sender: global.G_Component.UUID,
67 Accepter: targetUUID,
68 MessageType: protocol.FILEDOWNRES,
69 RouteLen: uint32(len([]byte(route))),
70 Route: route,
71 }
72
73 defer func() {
74 if err != nil && identity == AGENT {
75 fileDownResMess := &protocol.FileDownRes{
76 OK: 0,
77 }
78 protocol.ConstructMessage(sMessage, downHeader, fileDownResMess, false)
79 sMessage.SendMessage()
80 }
81 }()
82
83 fileHandler, err := os.Open(file.FilePath)
84 if err != nil {
85 return err
86 }
87 file.Handler = fileHandler
88
89 fileInfo, err := fileHandler.Stat()
90 if err != nil {
91 fileHandler.Close()
92 return err
93 }
94
95 file.FileSize = fileInfo.Size()
96 fileSliceNum := file.FileSize / file.SliceSize
97 remain := file.FileSize % file.SliceSize
98 if remain != 0 {
99 fileSliceNum++
100 }
101
102 fileStatReqMess := &protocol.FileStatReq{
103 FilenameLen: uint32(len([]byte(file.FileName))),
104 Filename: file.FileName,
105 FileSize: uint64(file.FileSize),

Callers 3

DispatchFileMessFunction · 0.80

Calls 4

SendMessageMethod · 0.95
ConstructMessageFunction · 0.92

Tested by

no test coverage detected