我正在使用libtorrent-go在 Golang 中开发个人项目
当我收到 type 的警报时"save_resume_data_alert"
,我将其拾取并必须按照libtorrent 文档中的说明进行 CAST
...
save_resume_data_alert const* rd = alert_cast<save_resume_data_alert>(a);
...
但我真的不知道如何在 golang 中投射它!当前代码:
package main
import (
lt "github.com/steeve/libtorrent-go"
"log"
"time"
)
func main() {
randomTorrent := lt.NewAdd_torrent_params()
randomTorrent.SetUrl("PUT A MAGNET LINK HERE")
randomTorrent.SetSave_path(".")
ec := lt.NewError_code()
torrentSession := lt.NewSession()
torrentSession.Set_alert_mask(status_notification + storage_notification)
torrentSession.Listen_on(lt.NewStd_pair_int_int(6900, 6999), ec)
if ec.Value() != 0 {
log.Println(ec.Message())
}
torrentHandle := torrentSession.Add_torrent(randomTorrent, ec)
if ec.Value() != 0 {
log.Println(ec.Message())
}
go func() {
for {
if torrentSession.Wait_for_alert(lt.Seconds(10)).Swigcptr() == 0 {
log.Println("Alert timeout occurred!")
}
alert := torrentSession.Pop_alert()
switch alert.What() {
default:
log.Printf("Alert: %#v", alert.What())
case "metadata_received_alert":
log.Println("Received Metadata!! finally!")
torrentHandle.Save_resume_data()
case "save_resume_data_alert":
log.Println("Wrote Metadata!")
// need to actually write the resume_data :( can't find how
case "save_resume_data_failed_alert":
log.Println("Failed Metadata!")
}
}
}()
select {}
}