//OperationCallbackData
//----------------------------------------------------------------------------------------
-OperationCallbackData::OperationCallbackData(ArchiveCallbackType callback_type) :
+OperationCallbackData::OperationCallbackData(ArchiveCallbackType callback_type, ArchiveInstance& instance) :
m_callback_type(callback_type),
m_op_id(-1),
m_cid(-1),
m_handle(-1),
m_is_error(false),
- m_is_canceled(false)
+ m_is_canceled(false),
+ instance_(instance)
{
LoggerD("Entered");
}
m_is_canceled = canceled;
}
+void OperationCallbackData::PostMessage(const char* msg) {
+ instance_.PostMessage(msg);
+}
+
const ErrorCode& OperationCallbackData::getErrorCode() const
{
LoggerD("Entered");
//OpenCallbackData
//----------------------------------------------------------------------------------------
-OpenCallbackData::OpenCallbackData(ArchiveCallbackType callback_type):
- OperationCallbackData(callback_type)
+OpenCallbackData::OpenCallbackData(ArchiveInstance& instance):
+ OperationCallbackData(OPEN_CALLBACK_DATA, instance)
{
LoggerD("Entered");
}
//GetEntriesCallbackData
//----------------------------------------------------------------------------------------
-GetEntriesCallbackData::GetEntriesCallbackData(ArchiveCallbackType callback_type):
- OperationCallbackData(callback_type)
+GetEntriesCallbackData::GetEntriesCallbackData(ArchiveInstance& instance):
+ OperationCallbackData(GET_ENTRIES_CALLBACK_DATA, instance)
{
LoggerD("Entered");
}
//GetEntryByNameCallbackData
//----------------------------------------------------------------------------------------
-GetEntryByNameCallbackData::GetEntryByNameCallbackData(ArchiveCallbackType callback_type):
- OperationCallbackData(callback_type)
+GetEntryByNameCallbackData::GetEntryByNameCallbackData(ArchiveInstance& instance):
+ OperationCallbackData(GET_ENTRY_BY_NAME_CALLBACK_DATA, instance)
{
LoggerD("Entered");
}
//BaseProgressCallback
//----------------------------------------------------------------------------------------
-BaseProgressCallback::BaseProgressCallback(ArchiveCallbackType callback_type):
- OperationCallbackData(callback_type),
+BaseProgressCallback::BaseProgressCallback(ArchiveCallbackType callback_type, ArchiveInstance& instance):
+ OperationCallbackData(callback_type, instance),
m_overwrite(false)
{
LoggerD("Entered");
LoggerD("%s", val.serialize().c_str());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ callback->instance_.PostMessage(val.serialize().c_str());
} else {
LoggerW("Not calling error callback in such case");
}
LoggerD("%s", val.serialize().c_str());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ instance_.PostMessage(val.serialize().c_str());
}
void BaseProgressCallback::callProgressCallbackOnMainThread(const double progress,
//AddProgressCallback
//----------------------------------------------------------------------------------------
-AddProgressCallback::AddProgressCallback(ArchiveCallbackType callback_type):
- BaseProgressCallback(callback_type)
+AddProgressCallback::AddProgressCallback(ArchiveInstance& instance):
+ BaseProgressCallback(ADD_PROGRESS_CALLBACK, instance)
{
LoggerD("Entered");
}
//ExtractAllProgressCallback
//----------------------------------------------------------------------------------------
-ExtractAllProgressCallback::ExtractAllProgressCallback(ArchiveCallbackType callback_type):
- BaseProgressCallback(callback_type),
+ExtractAllProgressCallback::ExtractAllProgressCallback(ArchiveInstance& instance):
+ BaseProgressCallback(EXTRACT_ALL_PROGRESS_CALLBACK, instance),
m_files_to_extract(0),
m_expected_decompressed_size(0),
m_files_extracted(0),
//ExtractEntryProgressCallback
//----------------------------------------------------------------------------------------
-ExtractEntryProgressCallback::ExtractEntryProgressCallback():
- ExtractAllProgressCallback(),
+ExtractEntryProgressCallback::ExtractEntryProgressCallback(ArchiveInstance& instance):
+ ExtractAllProgressCallback(instance),
m_strip_name(false)
{
LoggerD("Entered");
class ArchiveFile;
typedef std::shared_ptr<ArchiveFile> ArchiveFilePtr;
+class ArchiveInstance;
+
class OperationCallbackData
{
public:
- OperationCallbackData(ArchiveCallbackType callback_type);
+ OperationCallbackData(ArchiveCallbackType callback_type, ArchiveInstance& instance);
virtual ~OperationCallbackData();
void setError(const ErrorCode &err_code,
bool isCanceled() const;
void setIsCanceled(bool canceled);
+ void PostMessage(const char* msg);
+
protected:
ArchiveCallbackType m_callback_type;
long m_op_id;
double m_cid;
long m_handle;
+ ArchiveInstance& instance_;
private:
bool m_is_error;
class OpenCallbackData : public OperationCallbackData
{
public:
- OpenCallbackData(ArchiveCallbackType callback_type = OPEN_CALLBACK_DATA);
+ explicit OpenCallbackData(ArchiveInstance& instance);
virtual ~OpenCallbackData();
virtual PlatformResult executeOperation(ArchiveFilePtr archive_file_ptr);
class GetEntriesCallbackData : public OperationCallbackData
{
public:
- GetEntriesCallbackData(ArchiveCallbackType callback_type = GET_ENTRIES_CALLBACK_DATA);
+ explicit GetEntriesCallbackData(ArchiveInstance& instance);
virtual ~GetEntriesCallbackData();
ArchiveFileEntryPtrMapPtr getEntries() const;
class GetEntryByNameCallbackData : public OperationCallbackData
{
public:
- GetEntryByNameCallbackData(ArchiveCallbackType callback_type = GET_ENTRY_BY_NAME_CALLBACK_DATA);
+ explicit GetEntryByNameCallbackData(ArchiveInstance& instance);
virtual ~GetEntryByNameCallbackData();
const std::string& getName() const;
class BaseProgressCallback : public OperationCallbackData
{
public:
- BaseProgressCallback(ArchiveCallbackType callback_type = BASE_PROGRESS_CALLBACK);
+ BaseProgressCallback(ArchiveCallbackType callback_type, ArchiveInstance& instance);
virtual ~BaseProgressCallback();
bool getOverwrite() const;
class AddProgressCallback : public BaseProgressCallback
{
public:
- AddProgressCallback(ArchiveCallbackType callback_type = ADD_PROGRESS_CALLBACK);
+ explicit AddProgressCallback(ArchiveInstance& instance);
virtual ~AddProgressCallback();
virtual PlatformResult executeOperation(ArchiveFilePtr archive_file_ptr);
class ExtractAllProgressCallback : public BaseProgressCallback
{
public:
- ExtractAllProgressCallback(ArchiveCallbackType callback_type = EXTRACT_ALL_PROGRESS_CALLBACK);
+ explicit ExtractAllProgressCallback(ArchiveInstance& instance);
virtual ~ExtractAllProgressCallback();
filesystem::FilePtr getDirectory() const;
class ExtractEntryProgressCallback : public ExtractAllProgressCallback
{
public:
- ExtractEntryProgressCallback();
+ explicit ExtractEntryProgressCallback(ArchiveInstance& instance);
virtual ~ExtractEntryProgressCallback();
ArchiveFileEntryPtr getArchiveFileEntry();
common::Instance* ArchiveExtension::CreateInstance()
{
- return &extension::archive::ArchiveInstance::getInstance();
+ return new extension::archive::ArchiveInstance();
}
LoggerD("%s", val.serialize().c_str());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ callback->PostMessage(val.serialize().c_str());
delete callback;
callback = NULL;
LoggerD("%s", val.serialize().c_str());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ callback->PostMessage(val.serialize().c_str());
delete callback;
callback = NULL;
LoggerD("%s", val.serialize().c_str());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ callback->PostMessage(val.serialize().c_str());
delete callback;
callback = NULL;
LoggerD("%s", val.serialize().c_str());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ callback->PostMessage(val.serialize().c_str());
delete callback;
callback = NULL;
const std::string kPrivilegeFilesystemWrite = "http://tizen.org/privilege/filesystem.write";
} // namespace
-ArchiveInstance& ArchiveInstance::getInstance()
-{
- static ArchiveInstance instance;
- return instance;
-}
-
ArchiveInstance::ArchiveInstance() {
LoggerD("Entered");
args[ERROR_CALLBACK_CODE] = picojson::value(static_cast<double>(e.error_code()));
args[ERROR_CALLBACK_MESSAGE] = picojson::value(e.message());
- ArchiveInstance::getInstance().PostMessage(val.serialize().c_str());
+ PostMessage(val.serialize().c_str());
}
void ArchiveInstance::Open(const picojson::value& args, picojson::object& out) {
return;
}
- OpenCallbackData *callback = new OpenCallbackData();
+ OpenCallbackData *callback = new OpenCallbackData(*this);
FilePtr file_ptr;
const long operationId = static_cast<long>(v_op_id.get<double>());
const long handle = static_cast<long>(v_handle.get<double>());
- AddProgressCallback *callback = new AddProgressCallback();
+ AddProgressCallback *callback = new AddProgressCallback(*this);
NodePtr node;
PlatformResult result = Node::resolve(Path::create(v_source.get<std::string>()), &node);
const long operationId = static_cast<long>(v_op_id.get<double>());
const long handle = static_cast<long>(v_handle.get<double>());
- ExtractAllProgressCallback *callback = new ExtractAllProgressCallback();
+ ExtractAllProgressCallback *callback = new ExtractAllProgressCallback(*this);
NodePtr node;
PlatformResult result = Node::resolve(Path::create(v_dest_dir.get<std::string>()), &node);
const long operationId = static_cast<long>(v_op_id.get<double>());
const long handle = static_cast<long>(v_handle.get<double>());
- GetEntriesCallbackData *callback = new GetEntriesCallbackData();
+ GetEntriesCallbackData *callback = new GetEntriesCallbackData(*this);
callback->setOperationId(operationId);
callback->setCallbackId(callbackId);
const long operationId = static_cast<long>(v_op_id.get<double>());
const long handle = static_cast<long>(v_handle.get<double>());
- GetEntryByNameCallbackData *callback = new GetEntryByNameCallbackData();
+ GetEntryByNameCallbackData *callback = new GetEntryByNameCallbackData(*this);
callback->setOperationId(operationId);
callback->setCallbackId(callbackId);
const long operationId = static_cast<long>(v_op_id.get<double>());
const long handle = static_cast<long>(v_handle.get<double>());
- ExtractEntryProgressCallback *callback = new ExtractEntryProgressCallback();
+ ExtractEntryProgressCallback *callback = new ExtractEntryProgressCallback(*this);
NodePtr node;
PlatformResult result = Node::resolve(Path::create(v_dest_dir.get<std::string>()), &node);
class ArchiveInstance: public common::ParsedInstance {
public:
- static ArchiveInstance& getInstance();
+ ArchiveInstance();
+ virtual ~ArchiveInstance();
private:
- ArchiveInstance();
ArchiveInstance(ArchiveInstance const&);
void operator=(ArchiveInstance const&);
- virtual ~ArchiveInstance();
/* ArchiveManager methods */
void Open(const picojson::value& args, picojson::object& out);