diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 4f54881ee..9162e5c4f 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -4689,10 +4689,10 @@ extern "C" void Java_org_linphone_core_LinphoneChatMessageImpl_setFileTransferFi ReleaseStringUTFChars(env, jpath, path); } -extern "C" jint Java_org_linphone_core_LinphoneChatMessageImpl_downloadFile(JNIEnv* env +extern "C" jboolean Java_org_linphone_core_LinphoneChatMessageImpl_downloadFile(JNIEnv* env ,jobject thiz ,jlong ptr) { - return (jint) linphone_chat_message_download_file((LinphoneChatMessage*)ptr); + return linphone_chat_message_download_file((LinphoneChatMessage*)ptr); } extern "C" jboolean Java_org_linphone_core_LinphoneChatMessageImpl_isSecured(JNIEnv* env diff --git a/include/linphone/api/c-chat-message.h b/include/linphone/api/c-chat-message.h index 715ed8b41..25f202f82 100644 --- a/include/linphone/api/c-chat-message.h +++ b/include/linphone/api/c-chat-message.h @@ -257,7 +257,7 @@ LINPHONE_PUBLIC LINPHONE_DEPRECATED void linphone_chat_message_start_file_downlo * Start the download of the file referenced in a #LinphoneChatMessage from remote server. * @param[in] msg #LinphoneChatMessage object. */ -LINPHONE_PUBLIC LinphoneStatus linphone_chat_message_download_file (LinphoneChatMessage *msg); +LINPHONE_PUBLIC bool_t linphone_chat_message_download_file (LinphoneChatMessage *msg); /** * Cancel an ongoing file transfer attached to this message.(upload or download) diff --git a/java/common/org/linphone/core/LinphoneChatMessage.java b/java/common/org/linphone/core/LinphoneChatMessage.java index aeec09645..0efe5a94d 100644 --- a/java/common/org/linphone/core/LinphoneChatMessage.java +++ b/java/common/org/linphone/core/LinphoneChatMessage.java @@ -225,7 +225,7 @@ public interface LinphoneChatMessage { /** * Start the download of the file referenced in a LinphoneChatMessage from remote server. */ - int downloadFile(); + boolean downloadFile(); /** * Set the callbacks associated with the LinphoneChatMessage. diff --git a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java index 9ca40a269..a7771766f 100644 --- a/java/impl/org/linphone/core/LinphoneChatMessageImpl.java +++ b/java/impl/org/linphone/core/LinphoneChatMessageImpl.java @@ -16,7 +16,7 @@ public class LinphoneChatMessageImpl implements LinphoneChatMessage { private native void store(long ptr); private native int getStorageId(long ptr); private native void setFileTransferFilepath(long ptr, String path); - private native int downloadFile(long ptr); + private native boolean downloadFile(long ptr); private native void setListener(long ptr, LinphoneChatMessageListener listener); private native void unref(long ptr); @@ -146,7 +146,7 @@ public class LinphoneChatMessageImpl implements LinphoneChatMessage { } @Override - public int downloadFile() { + public boolean downloadFile() { return downloadFile(nativePtr); } diff --git a/src/c-wrapper/api/c-chat-message.cpp b/src/c-wrapper/api/c-chat-message.cpp index 743b728cd..c2582bc11 100644 --- a/src/c-wrapper/api/c-chat-message.cpp +++ b/src/c-wrapper/api/c-chat-message.cpp @@ -104,69 +104,69 @@ LinphoneChatMessageCbs *linphone_chat_message_get_callbacks(const LinphoneChatMe // Getter and setters // ============================================================================= -LinphoneChatRoom *linphone_chat_message_get_chat_room(const LinphoneChatMessage *msg) { +LinphoneChatRoom *linphone_chat_message_get_chat_room (const LinphoneChatMessage *msg) { return L_GET_C_BACK_PTR(L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getChatRoom()); } -const char *linphone_chat_message_get_external_body_url(const LinphoneChatMessage *msg) { +const char *linphone_chat_message_get_external_body_url (const LinphoneChatMessage *msg) { return L_STRING_TO_C(L_GET_PRIVATE_FROM_C_OBJECT(msg)->getExternalBodyUrl()); } -void linphone_chat_message_set_external_body_url(LinphoneChatMessage *msg, const char *url) { +void linphone_chat_message_set_external_body_url (LinphoneChatMessage *msg, const char *url) { L_GET_PRIVATE_FROM_C_OBJECT(msg)->setExternalBodyUrl(L_C_TO_STRING(url)); } -time_t linphone_chat_message_get_time(const LinphoneChatMessage *msg) { +time_t linphone_chat_message_get_time (const LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getTime(); } -bool_t linphone_chat_message_is_secured(LinphoneChatMessage *msg) { +bool_t linphone_chat_message_is_secured (LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->isSecured(); } -bool_t linphone_chat_message_is_outgoing(LinphoneChatMessage *msg) { +bool_t linphone_chat_message_is_outgoing (LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getDirection() == LinphonePrivate::ChatMessage::Direction::Outgoing; } -LinphoneChatMessageState linphone_chat_message_get_state(const LinphoneChatMessage *msg) { +LinphoneChatMessageState linphone_chat_message_get_state (const LinphoneChatMessage *msg) { return ((LinphoneChatMessageState)L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getState()); } -const char* linphone_chat_message_get_message_id(const LinphoneChatMessage *msg) { +const char* linphone_chat_message_get_message_id (const LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getImdnMessageId().c_str(); } -bool_t linphone_chat_message_is_read(LinphoneChatMessage *msg) { +bool_t linphone_chat_message_is_read (LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->isRead(); } -const char *linphone_chat_message_get_appdata(const LinphoneChatMessage *msg) { +const char *linphone_chat_message_get_appdata (const LinphoneChatMessage *msg) { return L_STRING_TO_C(L_GET_PRIVATE_FROM_C_OBJECT(msg)->getAppdata()); } -void linphone_chat_message_set_appdata(LinphoneChatMessage *msg, const char *data) { +void linphone_chat_message_set_appdata (LinphoneChatMessage *msg, const char *data) { L_GET_PRIVATE_FROM_C_OBJECT(msg)->setAppdata(L_C_TO_STRING(data)); } -const LinphoneAddress *linphone_chat_message_get_from_address(LinphoneChatMessage *msg) { +const LinphoneAddress *linphone_chat_message_get_from_address (LinphoneChatMessage *msg) { if (msg->from) linphone_address_unref(msg->from); msg->from = linphone_address_new(L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getFromAddress().asString().c_str()); return msg->from; } -const LinphoneAddress *linphone_chat_message_get_to_address(LinphoneChatMessage *msg) { +const LinphoneAddress *linphone_chat_message_get_to_address (LinphoneChatMessage *msg) { if (msg->to) linphone_address_unref(msg->to); msg->to = linphone_address_new(L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getToAddress().asString().c_str()); return msg->to; } -const char *linphone_chat_message_get_file_transfer_filepath(LinphoneChatMessage *msg) { +const char *linphone_chat_message_get_file_transfer_filepath (LinphoneChatMessage *msg) { return L_STRING_TO_C(L_GET_PRIVATE_FROM_C_OBJECT(msg)->getFileTransferFilepath()); } -void linphone_chat_message_set_file_transfer_filepath(LinphoneChatMessage *msg, const char *filepath) { +void linphone_chat_message_set_file_transfer_filepath (LinphoneChatMessage *msg, const char *filepath) { L_GET_PRIVATE_FROM_C_OBJECT(msg)->setFileTransferFilepath(L_C_TO_STRING(filepath)); } @@ -178,24 +178,24 @@ void linphone_chat_message_add_custom_header( L_GET_PRIVATE_FROM_C_OBJECT(msg)->addSalCustomHeader(L_C_TO_STRING(header_name), L_C_TO_STRING(header_value)); } -void linphone_chat_message_remove_custom_header(LinphoneChatMessage *msg, const char *header_name) { +void linphone_chat_message_remove_custom_header (LinphoneChatMessage *msg, const char *header_name) { L_GET_PRIVATE_FROM_C_OBJECT(msg)->removeSalCustomHeader(L_C_TO_STRING(header_name)); } -const char *linphone_chat_message_get_custom_header(LinphoneChatMessage *msg, const char *header_name) { +const char *linphone_chat_message_get_custom_header (LinphoneChatMessage *msg, const char *header_name) { msg->cache.customHeaderValue = L_GET_PRIVATE_FROM_C_OBJECT(msg)->getSalCustomHeaderValue(L_C_TO_STRING(header_name)); return L_STRING_TO_C(msg->cache.customHeaderValue); } -const LinphoneErrorInfo *linphone_chat_message_get_error_info(const LinphoneChatMessage *msg) { +const LinphoneErrorInfo *linphone_chat_message_get_error_info (const LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getErrorInfo(); } -bool_t linphone_chat_message_get_to_be_stored(const LinphoneChatMessage *message) { +bool_t linphone_chat_message_get_to_be_stored (const LinphoneChatMessage *message) { return L_GET_CPP_PTR_FROM_C_OBJECT(message)->getToBeStored(); } -void linphone_chat_message_set_to_be_stored(LinphoneChatMessage *message, bool_t to_be_stored) { +void linphone_chat_message_set_to_be_stored (LinphoneChatMessage *message, bool_t to_be_stored) { L_GET_CPP_PTR_FROM_C_OBJECT(message)->setToBeStored(!!to_be_stored); } @@ -203,11 +203,11 @@ void linphone_chat_message_set_to_be_stored(LinphoneChatMessage *message, bool_t // Methods // ============================================================================= -LinphoneStatus linphone_chat_message_download_file(LinphoneChatMessage *msg) { - return ((LinphoneStatus)L_GET_PRIVATE_FROM_C_OBJECT(msg)->downloadFile()); +bool_t linphone_chat_message_download_file (LinphoneChatMessage *msg) { + return !!L_GET_PRIVATE_FROM_C_OBJECT(msg)->downloadFile(); } -void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage *msg) { +void linphone_chat_message_cancel_file_transfer (LinphoneChatMessage *msg) { L_GET_CPP_PTR_FROM_C_OBJECT(msg)->cancelFileTransfer(); } @@ -215,19 +215,19 @@ void linphone_chat_message_send (LinphoneChatMessage *msg) { L_GET_CPP_PTR_FROM_C_OBJECT(msg)->send(); } -void linphone_chat_message_resend(LinphoneChatMessage *msg) { +void linphone_chat_message_resend (LinphoneChatMessage *msg) { L_GET_CPP_PTR_FROM_C_OBJECT(msg)->send(); } -void linphone_chat_message_resend_2(LinphoneChatMessage *msg) { +void linphone_chat_message_resend_2 (LinphoneChatMessage *msg) { L_GET_CPP_PTR_FROM_C_OBJECT(msg)->send(); } -LinphoneStatus linphone_chat_message_put_char(LinphoneChatMessage *msg, uint32_t character) { +LinphoneStatus linphone_chat_message_put_char (LinphoneChatMessage *msg, uint32_t character) { return ((LinphoneStatus)L_GET_CPP_PTR_FROM_C_OBJECT(msg)->putCharacter(character)); } -void linphone_chat_message_add_text_content(LinphoneChatMessage *msg, const char *c_content) { +void linphone_chat_message_add_text_content (LinphoneChatMessage *msg, const char *c_content) { LinphonePrivate::Content *content = new LinphonePrivate::Content(); LinphonePrivate::ContentType contentType = LinphonePrivate::ContentType::PlainText; content->setContentType(contentType); @@ -235,11 +235,11 @@ void linphone_chat_message_add_text_content(LinphoneChatMessage *msg, const char L_GET_CPP_PTR_FROM_C_OBJECT(msg)->addContent(content); } -bool_t linphone_chat_message_has_text_content(const LinphoneChatMessage *msg) { +bool_t linphone_chat_message_has_text_content (const LinphoneChatMessage *msg) { return L_GET_PRIVATE_FROM_C_OBJECT(msg)->hasTextContent(); } -const char *linphone_chat_message_get_text_content(const LinphoneChatMessage *msg) { +const char *linphone_chat_message_get_text_content (const LinphoneChatMessage *msg) { const LinphonePrivate::Content *content = L_GET_PRIVATE_FROM_C_OBJECT(msg)->getTextContent(); if (content->isEmpty()) return nullptr; @@ -247,7 +247,7 @@ const char *linphone_chat_message_get_text_content(const LinphoneChatMessage *ms return L_STRING_TO_C(msg->cache.textContentBody); } -bool_t linphone_chat_message_is_file_transfer_in_progress(LinphoneChatMessage *msg) { +bool_t linphone_chat_message_is_file_transfer_in_progress (LinphoneChatMessage *msg) { return L_GET_CPP_PTR_FROM_C_OBJECT(msg)->isFileTransferInProgress(); } @@ -264,15 +264,15 @@ LinphoneChatMessageStateChangedCb linphone_chat_message_get_message_state_change return msg->message_state_changed_cb; } -void linphone_chat_message_set_message_state_changed_cb(LinphoneChatMessage* msg, LinphoneChatMessageStateChangedCb cb) { +void linphone_chat_message_set_message_state_changed_cb (LinphoneChatMessage* msg, LinphoneChatMessageStateChangedCb cb) { msg->message_state_changed_cb = cb; } -void linphone_chat_message_set_message_state_changed_cb_user_data(LinphoneChatMessage* msg, void *user_data) { +void linphone_chat_message_set_message_state_changed_cb_user_data (LinphoneChatMessage* msg, void *user_data) { msg->message_state_changed_user_data = user_data; } -void * linphone_chat_message_get_message_state_changed_cb_user_data(LinphoneChatMessage* msg) { +void * linphone_chat_message_get_message_state_changed_cb_user_data (LinphoneChatMessage* msg) { return msg->message_state_changed_user_data; } @@ -280,25 +280,25 @@ void * linphone_chat_message_get_message_state_changed_cb_user_data(LinphoneChat // Structure has changed, hard to keep the behavior // ============================================================================= -const char *linphone_chat_message_get_content_type(LinphoneChatMessage *msg) { +const char *linphone_chat_message_get_content_type (LinphoneChatMessage *msg) { msg->cache.contentType = L_GET_PRIVATE_FROM_C_OBJECT(msg)->getContentType().asString(); return L_STRING_TO_C(msg->cache.contentType); } -void linphone_chat_message_set_content_type(LinphoneChatMessage *msg, const char *content_type) { +void linphone_chat_message_set_content_type (LinphoneChatMessage *msg, const char *content_type) { L_GET_PRIVATE_FROM_C_OBJECT(msg)->setContentType(LinphonePrivate::ContentType(L_C_TO_STRING(content_type))); } -const char *linphone_chat_message_get_text(LinphoneChatMessage *msg) { +const char *linphone_chat_message_get_text (LinphoneChatMessage *msg) { return L_STRING_TO_C(L_GET_PRIVATE_FROM_C_OBJECT(msg)->getText()); } -int linphone_chat_message_set_text(LinphoneChatMessage *msg, const char* text) { +int linphone_chat_message_set_text (LinphoneChatMessage *msg, const char* text) { L_GET_PRIVATE_FROM_C_OBJECT(msg)->setText(L_C_TO_STRING(text)); return 0; } -LinphoneContent *linphone_chat_message_get_file_transfer_information(LinphoneChatMessage *msg) { +LinphoneContent *linphone_chat_message_get_file_transfer_information (LinphoneChatMessage *msg) { const LinphonePrivate::Content *content = L_GET_PRIVATE_FROM_C_OBJECT(msg)->getFileTransferInformation(); if (content) return L_GET_C_BACK_PTR(content); return NULL; @@ -308,29 +308,29 @@ LinphoneContent *linphone_chat_message_get_file_transfer_information(LinphoneCha // Nothing to do, they call other C API methods // ============================================================================= -const LinphoneAddress *linphone_chat_message_get_peer_address(LinphoneChatMessage *msg) { +const LinphoneAddress *linphone_chat_message_get_peer_address (LinphoneChatMessage *msg) { return linphone_chat_room_get_peer_address(linphone_chat_message_get_chat_room(msg)); } -const LinphoneAddress *linphone_chat_message_get_local_address(LinphoneChatMessage *msg) { +const LinphoneAddress *linphone_chat_message_get_local_address (LinphoneChatMessage *msg) { if (L_GET_CPP_PTR_FROM_C_OBJECT(msg)->getDirection() == LinphonePrivate::ChatMessage::Direction::Outgoing) return linphone_chat_message_get_from_address(msg); return linphone_chat_message_get_to_address(msg); } -LinphoneReason linphone_chat_message_get_reason(LinphoneChatMessage *msg) { +LinphoneReason linphone_chat_message_get_reason (LinphoneChatMessage *msg) { return linphone_error_info_get_reason(linphone_chat_message_get_error_info(msg)); } -bool_t linphone_chat_message_is_file_transfer(LinphoneChatMessage *msg) { +bool_t linphone_chat_message_is_file_transfer (LinphoneChatMessage *msg) { return L_GET_PRIVATE_FROM_C_OBJECT(msg)->hasFileTransferContent(); } -bool_t linphone_chat_message_is_text(LinphoneChatMessage *msg) { +bool_t linphone_chat_message_is_text (LinphoneChatMessage *msg) { return L_GET_PRIVATE_FROM_C_OBJECT(msg)->hasTextContent(); } -const char *linphone_chat_message_state_to_string(const LinphoneChatMessageState state) { +const char *linphone_chat_message_state_to_string (const LinphoneChatMessageState state) { switch (state) { case LinphoneChatMessageStateIdle: return "LinphoneChatMessageStateIdle"; @@ -352,8 +352,11 @@ const char *linphone_chat_message_state_to_string(const LinphoneChatMessageState return NULL; } -void linphone_chat_message_start_file_download(LinphoneChatMessage *msg, - LinphoneChatMessageStateChangedCb status_cb, void *ud) { +void linphone_chat_message_start_file_download ( + LinphoneChatMessage *msg, + LinphoneChatMessageStateChangedCb status_cb, + void *ud +) { msg->message_state_changed_cb = status_cb; msg->message_state_changed_user_data = ud; linphone_chat_message_download_file(msg); diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.cpp b/src/chat/modifier/file-transfer-chat-message-modifier.cpp index 0ac7235de..61d860814 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.cpp +++ b/src/chat/modifier/file-transfer-chat-message-modifier.cpp @@ -312,7 +312,7 @@ void FileTransferChatMessageModifier::processResponseFromPostFile (const belle_h if (c->isFileTransfer()) { FileTransferContent *tmpContent = static_cast(c); if (!tmpContent->getFileContent() && tmpContent->getSize() == 0) { - // If FileTransferContent doesn't have a FileContent yet and is empty + // If FileTransferContent doesn't have a FileContent yet and is empty // It's the one we seek, otherwise it may be a previous uploaded FileTransferContent fileTransferContent = tmpContent; break; @@ -546,7 +546,7 @@ void FileTransferChatMessageModifier::fileUploadEndBackgroundTask () { // ---------------------------------------------------------- -static void fillFileTransferContentInformationsFromVndGsmaRcsFtHttpXml(FileTransferContent *fileTransferContent) { +static void fillFileTransferContentInformationsFromVndGsmaRcsFtHttpXml (FileTransferContent *fileTransferContent) { xmlChar *fileUrl = nullptr; xmlDocPtr xmlMessageBody; xmlNodePtr cur; @@ -947,24 +947,27 @@ void FileTransferChatMessageModifier::processResponseFromGetFile (const belle_ht } } -int FileTransferChatMessageModifier::downloadFile(const shared_ptr &message, FileTransferContent *fileTransferContent) { +bool FileTransferChatMessageModifier::downloadFile ( + const shared_ptr &message, + FileTransferContent *fileTransferContent +) { chatMessage = message; if (httpRequest) { - lError() << "linphone_chat_message_download_file(): there is already a download in progress"; - return -1; + lError() << "There is already a download in progress."; + return false; } if (fileTransferContent->getContentType() != ContentType::FileTransfer) { - lError() << "linphone_chat_message_download_file(): content type is not FileTransfer"; - return -1; + lError() << "Content type is not a FileTransfer."; + return false; } createFileTransferInformationsFromVndGsmaRcsFtHttpXml(fileTransferContent); FileContent *fileContent = fileTransferContent->getFileContent(); currentFileContentToTransfer = fileContent; if (!currentFileContentToTransfer) - return -1; + return false; // THIS IS ONLY FOR BACKWARD C API COMPAT if (currentFileContentToTransfer->getFilePath().empty() && !message->getPrivate()->getFileTransferFilepath().empty()) { @@ -978,10 +981,10 @@ int FileTransferChatMessageModifier::downloadFile(const shared_ptr cbs.process_auth_requested = _chat_message_process_auth_requested_download; int err = startHttpTransfer(fileTransferContent->getFileUrl(), "GET", &cbs); // File URL has been set by createFileTransferInformationsFromVndGsmaRcsFtHttpXml if (err == -1) - return -1; + return false; // start the download, status is In Progress message->getPrivate()->setState(ChatMessage::State::InProgress); - return 0; + return true; } // ---------------------------------------------------------- @@ -1024,7 +1027,7 @@ void FileTransferChatMessageModifier::releaseHttpRequest () { } } -string FileTransferChatMessageModifier::createFakeFileTransferFromUrl(const string &url) { +string FileTransferChatMessageModifier::createFakeFileTransferFromUrl (const string &url) { string fileName = url.substr(url.find_last_of("/") + 1); stringstream fakeXml; fakeXml << "\r\n"; diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.h b/src/chat/modifier/file-transfer-chat-message-modifier.h index 4c3647cde..d2dde9b7d 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.h +++ b/src/chat/modifier/file-transfer-chat-message-modifier.h @@ -53,25 +53,25 @@ public: void processIoErrorUpload (const belle_sip_io_error_event_t *event); void processAuthRequestedUpload (const belle_sip_auth_event *event); - void onRecvBody(belle_sip_user_body_handler_t *bh, belle_sip_message_t *m, size_t offset, uint8_t *buffer, size_t size); - void onRecvEnd(belle_sip_user_body_handler_t *bh); - void processResponseHeadersFromGetFile(const belle_http_response_event_t *event); - void processAuthRequestedDownload(const belle_sip_auth_event *event); - void processIoErrorDownload(const belle_sip_io_error_event_t *event); - void processResponseFromGetFile(const belle_http_response_event_t *event); + void onRecvBody (belle_sip_user_body_handler_t *bh, belle_sip_message_t *m, size_t offset, uint8_t *buffer, size_t size); + void onRecvEnd (belle_sip_user_body_handler_t *bh); + void processResponseHeadersFromGetFile (const belle_http_response_event_t *event); + void processAuthRequestedDownload (const belle_sip_auth_event *event); + void processIoErrorDownload (const belle_sip_io_error_event_t *event); + void processResponseFromGetFile (const belle_http_response_event_t *event); - int downloadFile(const std::shared_ptr &message, FileTransferContent *fileTransferContent); - void cancelFileTransfer(); - bool isFileTransferInProgressAndValid(); - std::string createFakeFileTransferFromUrl(const std::string &url); + bool downloadFile (const std::shared_ptr &message, FileTransferContent *fileTransferContent); + void cancelFileTransfer (); + bool isFileTransferInProgressAndValid (); + std::string createFakeFileTransferFromUrl (const std::string &url); private: - int uploadFile(); - int startHttpTransfer(const std::string &url, const std::string &action, belle_http_request_listener_callbacks_t *cbs); - void fileUploadBeginBackgroundTask(); - void fileUploadEndBackgroundTask(); + int uploadFile (); + int startHttpTransfer (const std::string &url, const std::string &action, belle_http_request_listener_callbacks_t *cbs); + void fileUploadBeginBackgroundTask (); + void fileUploadEndBackgroundTask (); - void releaseHttpRequest(); + void releaseHttpRequest (); std::weak_ptr chatMessage; FileContent* currentFileContentToTransfer = nullptr;