MCPcopy Create free account
hub / github.com/CCob/BOF.NET / DownloadFile

Method DownloadFile

managed/BOFNET/BeaconObject.cs:71–99  ·  view source on GitHub ↗
(string fileName, Stream fileData)

Source from the content-addressed store, hash-verified

69 }
70
71 protected void DownloadFile(string fileName, Stream fileData) {
72
73 var fileId = new Random().Next(1, int.MaxValue);
74 BinaryWriter fileCallback;
75
76 //Send the start of download callback
77 fileCallback = new BinaryWriter(new MemoryStream());
78 fileCallback.Write(fileId);
79 fileCallback.Write(IPAddress.HostToNetworkOrder((int)fileData.Length));
80 fileCallback.Write(Encoding.UTF8.GetBytes(fileName));
81 BeaconCallbackWriter(OutputTypes.CALLBACK_FILE, ((MemoryStream)fileCallback.BaseStream).ToArray(), (int)fileCallback.BaseStream.Length);
82
83 //Send callbacks in chunks of 900K, since a single CS
84 //transfer is limited to around 1MB
85 byte[] fileChunk = new byte[1024 * 900];
86 int readSize;
87
88 while( (readSize = fileData.Read(fileChunk, 0, fileChunk.Length)) > 0){
89 fileCallback = new BinaryWriter(new MemoryStream());
90 fileCallback.Write(fileId);
91 fileCallback.Write(fileChunk,0,readSize);
92 BeaconCallbackWriter(OutputTypes.CALLBACK_FILE_WRITE, ((MemoryStream)fileCallback.BaseStream).ToArray(), (int)fileCallback.BaseStream.Length);
93 }
94
95 //Send a close file callback to complete the transfer
96 fileCallback = new BinaryWriter(new MemoryStream());
97 fileCallback.Write(fileId);
98 BeaconCallbackWriter(OutputTypes.CALLBACK_FILE_CLOSE, ((MemoryStream)fileCallback.BaseStream).ToArray(), (int)fileCallback.BaseStream.Length);
99 }
100
101 protected void SendHashes(UserHash[] userHashes) {
102

Callers

nothing calls this directly

Calls 1

WriteMethod · 0.80

Tested by

no test coverage detected