documented file_rename_failed_alert and file_renamed_alert. they were previously not documented. Fixed bug where the storage would be left in an error state (and eventually pause the torrent) when a rename_file() failed. The error is now only reported back through the alert
This commit is contained in:
parent
bc20af9375
commit
838df44184
|
@ -42,6 +42,8 @@ release 0.14.4
|
||||||
* fixed magnet link parser to accept hex-encoded info-hashes
|
* fixed magnet link parser to accept hex-encoded info-hashes
|
||||||
* fixed inverted logic when picking which peers to connect to
|
* fixed inverted logic when picking which peers to connect to
|
||||||
(should mean a slight performance improvement)
|
(should mean a slight performance improvement)
|
||||||
|
* fixed a bug where a failed rename_file() would leave the storage
|
||||||
|
in an error state which would pause the torrent
|
||||||
|
|
||||||
release 0.14.3
|
release 0.14.3
|
||||||
|
|
||||||
|
|
|
@ -4587,6 +4587,42 @@ generated and the torrent is paused.
|
||||||
std::string msg;
|
std::string msg;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
file_renamed_alert
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
This is posted as a response to a ``torrent_handle::rename_file`` call, if the rename
|
||||||
|
operation succeeds.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
struct file_renamed_alert: torrent_alert
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
std::string name;
|
||||||
|
int index;
|
||||||
|
};
|
||||||
|
|
||||||
|
The ``index`` member refers to the index of the file that was renamed,
|
||||||
|
``name`` is the new name of the file.
|
||||||
|
|
||||||
|
|
||||||
|
file_rename_failed_alert
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
This is posted as a response to a ``torrent_handle::rename_file`` call, if the rename
|
||||||
|
operation failed.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
struct file_rename_failed_alert: torrent_alert
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
int index;
|
||||||
|
error_code error;
|
||||||
|
};
|
||||||
|
|
||||||
|
The ``index`` member refers to the index of the file that was supposed to be renamed,
|
||||||
|
``error`` is the error code returned from the filesystem.
|
||||||
|
|
||||||
tracker_announce_alert
|
tracker_announce_alert
|
||||||
----------------------
|
----------------------
|
||||||
|
|
|
@ -155,11 +155,11 @@ namespace libtorrent
|
||||||
struct TORRENT_EXPORT file_rename_failed_alert: torrent_alert
|
struct TORRENT_EXPORT file_rename_failed_alert: torrent_alert
|
||||||
{
|
{
|
||||||
file_rename_failed_alert(torrent_handle const& h
|
file_rename_failed_alert(torrent_handle const& h
|
||||||
, std::string const& msg_
|
, int index_
|
||||||
, int index_)
|
, error_code ec_)
|
||||||
: torrent_alert(h)
|
: torrent_alert(h)
|
||||||
, msg(msg_)
|
|
||||||
, index(index_)
|
, index(index_)
|
||||||
|
, error(ec_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
virtual std::auto_ptr<alert> clone() const
|
virtual std::auto_ptr<alert> clone() const
|
||||||
|
@ -169,16 +169,16 @@ namespace libtorrent
|
||||||
virtual std::string message() const
|
virtual std::string message() const
|
||||||
{
|
{
|
||||||
char ret[200 + NAME_MAX];
|
char ret[200 + NAME_MAX];
|
||||||
snprintf(ret, sizeof(msg), "%s: failed to rename file %d: %s"
|
snprintf(ret, sizeof(ret), "%s: failed to rename file %d: %s"
|
||||||
, torrent_alert::message().c_str(), index, msg.c_str());
|
, torrent_alert::message().c_str(), index, error.message().c_str());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
const static int static_category = alert::storage_notification;
|
const static int static_category = alert::storage_notification;
|
||||||
virtual int category() const { return static_category; }
|
virtual int category() const { return static_category; }
|
||||||
|
|
||||||
std::string msg;
|
|
||||||
int index;
|
int index;
|
||||||
|
error_code error;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TORRENT_EXPORT performance_alert: torrent_alert
|
struct TORRENT_EXPORT performance_alert: torrent_alert
|
||||||
|
|
|
@ -1524,6 +1524,11 @@ namespace libtorrent
|
||||||
m_log << log_time() << " rename_file" << std::endl;
|
m_log << log_time() << " rename_file" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
ret = j.storage->rename_file_impl(j.piece, j.str);
|
ret = j.storage->rename_file_impl(j.piece, j.str);
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
test_error(j);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
|
|
|
@ -2068,7 +2068,8 @@ namespace libtorrent
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (alerts().should_post<file_rename_failed_alert>())
|
if (alerts().should_post<file_rename_failed_alert>())
|
||||||
alerts().post_alert(file_rename_failed_alert(get_handle(), j.str, j.piece));
|
alerts().post_alert(file_rename_failed_alert(get_handle()
|
||||||
|
, j.piece, j.error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue