Changeset - b55ba07e93d3
[Not reviewed]
backends/libpurple/main.cpp
Show inline comments
 
@@ -1344,11 +1344,17 @@ static void XferDestroyed(PurpleXfer *xfer) {
 
}
 

	
 
static void xferCanceled(PurpleXfer *xfer) {
 
// 	FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
 
// 	if (!repeater)
 
// 		return;
 
// 	GlooxMessageHandler::instance()->ftManager->removeSID(repeater->getSID());
 
// 	repeater->handleXferCanceled();
 
	PurpleAccount *account = purple_xfer_get_account(xfer);
 
	std::string filename(xfer ? purple_xfer_get_filename(xfer) : "");
 
	purple_xfer_ref(xfer);
 
	std::string w = xfer->who;
 
	size_t pos = w.find("/");
 
	if (pos != std::string::npos)
 
		w.erase((int) pos, w.length() - (int) pos);
 

	
 
	FTData *ftdata = (FTData *) xfer->ui_data;
 

	
 
	np->handleFTFinish(np->m_accounts[account], w, filename, purple_xfer_get_size(xfer), ftdata ? ftdata->id : 0);
 
	purple_xfer_unref(xfer);
 
}
 

	
 
@@ -1369,7 +1375,6 @@ static void fileRecvStart(PurpleXfer *xfer) {
 
}
 

	
 
static void newXfer(PurpleXfer *xfer) {
 
// 	GlooxMessageHandler::instance()->ftManager->handleXferFileReceiveRequest(xfer);
 
	PurpleAccount *account = purple_xfer_get_account(xfer);
 
	std::string filename(xfer ? purple_xfer_get_filename(xfer) : "");
 
	purple_xfer_ref(xfer);
include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.cpp
Show inline comments
 
@@ -33,6 +33,21 @@ void MyOutgoingSIFileTransfer::start() {
 
void MyOutgoingSIFileTransfer::stop() {
 
}
 

	
 
void MyOutgoingSIFileTransfer::cancel() {
 
	// TODO
 
// 	session->sendTerminate(JinglePayload::Reason::Cancel);
 

	
 
	if (ibbSession) {
 
		ibbSession->stop();
 
	}
 
	SOCKS5BytestreamServerSession *serverSession = registry->getConnectedSession(SOCKS5BytestreamRegistry::getHostname(id, from, to));
 
	if (serverSession) {
 
		serverSession->stop();
 
	}
 

	
 
	onStateChange(FileTransfer::State(FileTransfer::State::Canceled));
 
}
 

	
 
void MyOutgoingSIFileTransfer::handleStreamInitiationRequestResponse(StreamInitiation::ref response, ErrorPayload::ref error) {
 
	if (error) {
 
		finish(FileTransferError());
include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.h
Show inline comments
 
@@ -30,7 +30,7 @@ namespace Swift {
 

	
 
			virtual void start();
 
			virtual void stop();
 
			virtual void cancel() {}
 
			virtual void cancel();
 

	
 
			boost::signal<void (const boost::optional<FileTransferError>&)> onFinished;
 

	
include/transport/memoryreadbytestream.h
Show inline comments
 
@@ -28,13 +28,14 @@ namespace Transport {
 

	
 
class MemoryReadBytestream : public Swift::ReadBytestream {
 
	public:
 
		MemoryReadBytestream();
 
		MemoryReadBytestream(unsigned long size);
 
		virtual ~MemoryReadBytestream();
 

	
 
		unsigned long appendData(const std::string &data);
 

	
 
		virtual boost::shared_ptr<std::vector<unsigned char> > read(size_t size);
 

	
 
		void setFinished() { m_finished = true; }
 
		bool isFinished() const;
 

	
 
		boost::signal<void ()> onDataNeeded;
 
@@ -43,6 +44,8 @@ class MemoryReadBytestream : public Swift::ReadBytestream {
 
		bool m_finished;
 
		std::string m_data;
 
		bool neededData;
 
		unsigned long m_sent;
 
		unsigned long m_size;
 
};
 

	
 
}
include/transport/networkplugin.h
Show inline comments
 
@@ -145,6 +145,7 @@ class NetworkPlugin {
 
		void handleAttention(const std::string &user, const std::string &buddyName, const std::string &message);
 

	
 
		void handleFTStart(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size);
 
		void handleFTFinish(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size, unsigned long ftid);
 

	
 
		void handleFTData(unsigned long ftID, const std::string &data);
 

	
include/transport/networkpluginserver.h
Show inline comments
 
@@ -92,6 +92,7 @@ class NetworkPluginServer {
 
		void handleAttentionPayload(const std::string &payload);
 
		void handleStatsPayload(Backend *c, const std::string &payload);
 
		void handleFTStartPayload(const std::string &payload);
 
		void handleFTFinishPayload(const std::string &payload);
 
		void handleFTDataPayload(Backend *b ,const std::string &payload);
 

	
 
		void handleUserCreated(User *user);
src/memoryreadbytestream.cpp
Show inline comments
 
@@ -27,9 +27,11 @@ using namespace log4cxx;
 

	
 
namespace Transport {
 
	
 
MemoryReadBytestream::MemoryReadBytestream() {
 
MemoryReadBytestream::MemoryReadBytestream(unsigned long size) {
 
	neededData = false;
 
	m_finished = false;
 
	m_sent = 0;
 
	m_size = size;
 
}
 

	
 
MemoryReadBytestream::~MemoryReadBytestream() {
 
@@ -51,12 +53,18 @@ boost::shared_ptr<std::vector<unsigned char> > MemoryReadBytestream::read(size_t
 

	
 
	if (m_data.size() < size) {
 
		boost::shared_ptr<std::vector<unsigned char> > ptr(new std::vector<unsigned char>(m_data.begin(), m_data.end()));
 
		m_sent += m_data.size();
 
		m_data.clear();
 
		if (m_sent == m_size)
 
			m_finished = true;
 
		onDataNeeded();
 
		return ptr;
 
	}
 
	boost::shared_ptr<std::vector<unsigned char> > ptr(new std::vector<unsigned char>(m_data.begin(), m_data.begin() + size));
 
	m_data.erase(m_data.begin(), m_data.begin() + size);
 
	m_sent += size;
 
	if (m_sent == m_size)
 
		m_finished = true;
 
	if (m_data.size() < 500000 && !neededData) {
 
		neededData = true;
 
		onDataNeeded();
src/networkplugin.cpp
Show inline comments
 
@@ -279,6 +279,24 @@ void NetworkPlugin::handleFTStart(const std::string &user, const std::string &bu
 
	send(message);
 
}
 

	
 
void NetworkPlugin::handleFTFinish(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size, unsigned long ftid) {
 
	pbnetwork::File room;
 
	room.set_username(user);
 
	room.set_buddyname(buddyName);
 
	room.set_filename(fileName);
 
	room.set_size(size);
 
	if (ftid) {
 
		room.set_ftid(ftid);
 
	}
 

	
 
	std::string message;
 
	room.SerializeToString(&message);
 

	
 
	WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH);
 
 
 
	send(message);
 
}
 

	
 
void NetworkPlugin::handleFTData(unsigned long ftID, const std::string &data) {
 
	pbnetwork::FileTransferData d;
 
	d.set_ftid(ftID);
src/networkpluginserver.cpp
Show inline comments
 
@@ -601,7 +601,7 @@ void NetworkPluginServer::handleFTStartPayload(const std::string &data) {
 
	fileInfo.setName(payload.filename());
 

	
 
	Backend *c = (Backend *) user->getData();
 
	boost::shared_ptr<MemoryReadBytestream> bytestream(new MemoryReadBytestream());
 
	boost::shared_ptr<MemoryReadBytestream> bytestream(new MemoryReadBytestream(payload.size()));
 
	bytestream->onDataNeeded.connect(boost::bind(&NetworkPluginServer::handleFTDataNeeded, this, c, bytestream_id + 1));
 

	
 
	LOG4CXX_INFO(logger, "jid=" << buddy->getJID());
 
@@ -617,6 +617,25 @@ void NetworkPluginServer::handleFTStartPayload(const std::string &data) {
 
	transfer.ft->start();
 
}
 

	
 
void NetworkPluginServer::handleFTFinishPayload(const std::string &data) {
 
	pbnetwork::File payload;
 
	if (payload.ParseFromString(data) == false) {
 
		// TODO: ERROR
 
		return;
 
	}
 

	
 
	if (payload.has_ftid()) {
 
		if (m_filetransfers.find(payload.ftid()) != m_filetransfers.end()) {
 
			FileTransferManager::Transfer &transfer = m_filetransfers[payload.ftid()];
 
			transfer.ft->cancel();
 
		}
 
		else {
 
			LOG4CXX_ERROR(logger, "FTFinishPayload for unknown ftid=" << payload.ftid());
 
		}
 
	}
 

	
 
}
 

	
 
void NetworkPluginServer::handleFTDataPayload(Backend *b, const std::string &data) {
 
	pbnetwork::FileTransferData payload;
 
	if (payload.ParseFromString(data) == false) {
 
@@ -740,6 +759,9 @@ void NetworkPluginServer::handleDataRead(Backend *c, boost::shared_ptr<Swift::Sa
 
			case pbnetwork::WrapperMessage_Type_TYPE_FT_START:
 
				handleFTStartPayload(wrapper.payload());
 
				break;
 
			case pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH:
 
				handleFTFinishPayload(wrapper.payload());
 
				break;
 
			case pbnetwork::WrapperMessage_Type_TYPE_FT_DATA:
 
				handleFTDataPayload(c, wrapper.payload());
 
				break;
0 comments (0 inline, 0 general)