* Copyright 2017, Adrien Destugues, pulkomandy@pulkomandy.tk
* Distributed under terms of the MIT license.
*/
#include "FileSender.h"
#include "SerialApp.h"
#include <DataIO.h>
#include <Message.h>
#include <SerialPort.h>
FileSender::~FileSender()
{
}
RawSender::RawSender(BDataIO* source, BSerialPort* sink, BHandler* listener)
{
off_t sourceSize;
off_t position;
BPositionIO* pos = dynamic_cast<BPositionIO*>(source);
if (pos)
pos->GetSize(&sourceSize);
else
sourceSize = 0;
position = 0;
BMessenger messenger(listener);
uint8_t buffer[256];
for (;;) {
ssize_t s = source->Read(&buffer, sizeof(buffer));
if (s <= 0)
return;
sink->Write(buffer, s);
position += s;
BMessage msg(kMsgProgress);
msg.AddInt32("pos", position);
msg.AddInt32("size", sourceSize);
msg.AddString("info", "Sending" B_UTF8_ELLIPSIS);
messenger.SendMessage(&msg);
}
}
RawSender::~RawSender()
{
}
bool
RawSender::BytesReceived(const uint8_t* data, size_t length)
{
return true;
}