Xunlei Cloud Accelerated オープン プラットフォーム インターフェイスのドキュメント
- グローバルインターフェース
- タスクインターフェース
- インターフェースの詳細
- インターフェースロジックの説明
- 他の
グローバルインターフェース
インターフェース名 | 機能の説明 |
---|---|
XL_Init | SDK を初期化し、後続の操作を処理できるようにします。 |
XL_Uninit | SDK の初期化を解除し、モジュールの実行中に要求されたリソースを解放します。 |
XL_DelTempFile | 一時ファイルを削除する |
XL_SetSpeedLimit | 最大ダウンロード速度を設定する |
XL_SetProxy | グローバルプロキシを設定する |
XL_SetUserAgent | HTTPリクエスト設定時のクライアント情報 |
XL_ParseThunderPrivateUrl | Xunlei プライベート リンクを実際の URL に変換する |
XL_SetUploadSpeedLimit | アップロード速度を制限する |
XL_CreateTaskByURL | XL_CreateTask インターフェースを単純にカプセル化します。 |
XL_CreateTaskByThunder | Thunder 7 を起動してダウンロード タスクを作成します |
XL_ForceStopTask | タスクを強制的に一時停止する |
タスクインターフェース
インターフェース名 | 機能の説明 |
---|---|
XL_CreateTask | タスクを作成する |
XL_タスクの削除 | タスクを破棄する |
XL_開始タスク | タスクを開始する |
XL_タスクの停止 | タスクを停止する |
XL_QueryTaskInfoEx | タスク情報のクエリ |
インターフェースの詳細
XL_Init
BOOLXL_Init(無効)
ダウンロード エンジンを初期化し、後続の操作を処理できるように準備します。
戻り値: TRUE は成功を意味し、FALSE は失敗を意味します。バイナリ ファイルが見つからないなど、一部の特殊なケースでは初期化が失敗することがあります。
注: このインターフェイスは、XL_Unint(void) とペアで指定する必要があります。このインターフェイスを呼び出すと、xldl.dll は MiniThunderPlatform.exe サブプロセスをプルアップします。
XL_Uninit
BOOL XL_Uninit(void)
ダウンロード エンジンの初期化を解除し、モジュールの操作中に要求されたリソースを解放します。
返回值
: TRUE は成功を意味し、FALSE は失敗を意味します。
说明
: このインターフェイスを呼び出した後、MiniThunderPlatform.exe 子プロセスは終了するように通知されます。
XL_CreateTask
HANDLE XL_CreateTask(DownTaskParam &stParam)
タスクを作成します。新しいタスクを作成することも、タスクを再開することもできます。パラメーターの IsResume は、タスクが再開タスクであるかどうかを示すために使用されます。その他の情報については、DownTaskParam の定義を参照してください。
参数
: [in] stParam、タスクの作成に必要なパラメータ。
DownTaskParam リファレンス:
struct DownTaskParam {
int nReserved1;
TCHAR szTaskUrl[2084]; // 任务URL,支持http,https,ftp,ftps格式
TCHAR szRefUrl[2084]; // 可空,HTTP下载所在的网页URL
TCHAR szCookies[4096]; // 可空,浏览器cookie
TCHAR szFilename[MAX_PATH]; // 下载保存文件名.
TCHAR szReserved[MAX_PATH];
TCHAR szSavePath[MAX_PATH]; // 文件保存目录
HWND hReserved;
BOOL bReserved1;
TCHAR szReserved1[64];
TCHAR szReserved2[64];
BOOL IsOnlyOriginal; //是否只从原始地址下载
UINT nReserved2;
BOOL bReserved2;
BOOL IsResume; // 是否用续传
DWORD reserved[2048];
}
返回值
: タスクのハンドルを返します。
说明
: タスクの作成後、すぐにはダウンロードされないため、XL_StartTask を呼び出す必要があります。非同期で実行されます。
XL_タスクの削除
BOOL XL_DeleteTask(HANDLE hTask)
タスクを破棄し、実行中にタスクによって要求されたリソースを解放します。
パラメータ: [in]hTask、タスクハンドル
戻り値: TRUE は成功を意味し、FALSE は失敗を意味します。タスクが存在しない場合、呼び出しは失敗します。
注: リソースができるだけ早く解放されるように、タスクが一時停止、成功、または削除されたときに、このインターフェイスを呼び出す必要があります。非同期実行では、タスクが保留状態にある場合、このインターフェイスを呼び出すことはできません。
XL_開始タスク
BOOL XL_StartTask(HANDLE hTask);
ダウンロード開始。タスクが正常に作成されても、ダウンロードはすぐには開始されないため、ダウンロードを開始するにはこのインターフェイスを呼び出す必要があります。
パラメータ: [in]hTask、タスクハンドル
戻り値: TRUE は成功を意味し、FALSE は失敗を意味します。タスクが存在しない場合、呼び出しは失敗します。
説明: 非同期実行。タスクが保留状態の場合、このインターフェイスを呼び出すことはできません。
XL_タスクの停止
BOOL XL_StopTask(HANDLE hTask)
ダウンロードの停止
パラメータ: [in]hTask、タスク ハンドル
戻り値: TRUE は成功を意味し、FALSE は失敗を意味します。タスクが存在しない場合、呼び出しは失敗します。
注: ポーリング方式はタスク情報の取得に使用されます。タスクがダウンロードを停止した後、タスクによってダウンロードされたデータ量の最終的なクエリは正確になります。タスクは呼び出し直後には停止せず、タスクのステータスが PAUSE になるまでポーリングした後でのみ取得できます。
XL_QueryTaskInfoEx
BOOL XL_QueryTaskInfoEx(HANDLE hTask, DownTaskInfo & stTaskInfo);
タスクの現在の情報を照会します。
パラメータ: [in]hTask、タスクハンドル [out]stTaskInfo、タスク情報。
DownTaskInfo 参照:
struct DownTaskInfo {
DOWN_TASK_STATUS stat; //任务状态
TASK_ERROR_TYPE fail_code; //错误码
TCHAR szFilename[MAX_PATH]; //文件名
TCHAR szReserved[MAX_PATH];
__int64 nTotalSize; // 该任务总大小(字节)
__int64 nTotalDownload; // 下载有效字节数(可能存在回退的情况)
float fPercent; // 下载进度
int nTotalTime; // 不提供该值
int nSrcTotal; // 总资源数
int nSrcUsing; // 可用资源数
int nReserved1;
int nReserved2;
int nReserved3;
int nReserved;
__int64 nTotalUpload; // 现不提供该值
__int64 nDonationP2P; // p2p资源贡献的数据长度
__int64 nReserved4;
__int64 nDonationOrgin; // 原始资源贡献的数据长度
__int64 nDonationP2S; // 镜像资源贡献的数据长度
__int64 nReserved5;
__int64 nReserved6;
int nSpeed; // 速度(字节/秒)
int nSpeedP2S; // 加速服务器资源的下载速度
int nSpeedP2P; // peer下载速度
bool IsOriginUsable; // 原始资源是否可用
float fReserved;
int bReserved;
DWORD reserved[64];
};
enum DOWN_TASK_STATUS {
NOITEM = 0, TSC_ERROR, TSC_PAUSE, TSC_DOWNLOAD, TSC_COMPLETE, TSC_STARTPENDING, TSC_STOPPENDING
};
enum TASK_ERROR_TYPE {
TASK_ERROR_UNKNOWN = 0x00, // 未知错误
TASK_ERROR_DISK_CREATE = 0x01, // 创建文件失败
TASK_ERROR_DISK_WRITE = 0x02, // 写文件失败
TASK_ERROR_DISK_READ = 0x03, // 读文件失败
TASK_ERROR_DISK_RENAME = 0x04, // 重命名失败
TASK_ERROR_DISK_PIECEHASH = 0x05, // 文件片校验失败
TASK_ERROR_DISK_FILEHASH = 0x06, // 文件全文校验失败
TASK_ERROR_DISK_DELETE = 0x07, // 删除文件失败失败
TASK_ERROR_DOWN_INVALID = 0x10, // 无效的DOWN地址
TASK_ERROR_PROXY_AUTH_TYPE_UNKOWN = 0x20, // 代理类型未知
TASK_ERROR_PROXY_AUTH_TYPE_FAILED = 0x21, // 代理认证失败
TASK_ERROR_HTTPMGR_NOT_IP = 0x30, // http下载中无ip可用
TASK_ERROR_TIMEOUT = 0x40, // 任务超时
TASK_ERROR_CANCEL = 0x41, // 任务取消
TASK_ERROR_TP_CRASHED= 0x42, // MINITP崩溃
TASK_ERROR_ID_INVALID = 0x43, // TaskId 非法
};
返回值
:TRUE
は成功を示し、FALSE
は失敗を示します。
说明
: IsOriginUsable
、元のリソースが利用可能かどうかはブール値パラメータですが、元のリソースへの元の接続は時間のかかる操作です。つまり、元のリソースが途中の一定期間有効かどうかは不明です。このパラメータの初期状態は false であるため、元のリソースは有効であるにもかかわらず、タスクの開始時にこのパラメータが false になるという問題があります。上位層がこの値を使用する場合は、ビジネスロジックに従って処理する必要があります。
XL_DelTempFile
BOOL XL_DelTempFile(DownTaskParam &stParam)
タスクの一時ファイルを削除します。ダウンロード エンジンは、ダウンロードされたデータを保存するために、.td および .td.cfg のサフィックスが付いたファイルを作成します。
パラメータ: [in]stParam、タスクパラメータ。タスク作成時のパラメータを参照します。ただし、ここではファイルが保存されているディレクトリとファイル名のみが必要です。
戻り値: TRUE は成功を意味し、FALSE は失敗を意味します。
注: ファイル名は、一時ファイルの接尾辞を除いた、実際にディスクに保存された最後のファイル名です。最終的に保存されるファイル名は作成されたタスクとは異なるため、ファイル名はタスク情報のクエリによって返されたファイル名に基づく必要があります。保存パスに同じファイル名のファイルがすでに存在する場合、最終的に保存されるファイル名は、ファイル名.zip → ファイル名(1).zip と自動的に変更されます。非同期で実行されます。
XL_SetSpeedLimit
void XL_SetSpeedLimit(INT32 nKBps)
最大ダウンロード速度を設定します。
パラメータ: [in]nKBps、速度上限
値 説明: 非同期実行
XL_SetProxy
BOOL XL_SetProxy(DOWN_PROXY_INFO &stProxyInfo)
ダウンロードエージェント、グローバルタスクエージェント情報を設定します。
パラメータ: [in] stProxyIfno プロキシ情報
DOWN_PROXY_INFO 参照:
enum DOWN_PROXY_TYPE {
PROXY_TYPE_IE = 0,
PROXY_TYPE_HTTP = 1,
PROXY_TYPE_RESERVED= 2, //不支持该代理
PROXY_TYPE_SOCK5 = 3,
PROXY_TYPE_UNKOWN = 255,
};
enum DOWN_PROXY_AUTH_TYPE {
PROXY_AUTH_NONE =0, PROXY_AUTH_AUTO, PROXY_AUTH_BASE64, PROXY_AUTH_NTLM, PROXY_AUTH_DEGEST, PROXY_AUTH_UNKOWN, }; struct DOWN_PROXY_INFO {
BOOL bIEProxy; BOOL bProxy; DOWN_PROXY_TYPE stPType; DOWN_PROXY_AUTH_TYPE stResverd; TCHAR szHost[2048]; INT32 nPort; TCHAR szUser[50]; TCHAR szPwd[50]; TCHAR szDomain[2048]; };
戻り値: TRUE は成功を意味し、FALSE は失敗を意味します。無効なパラメータは FALSE を返します
XL_SetUserAgent
void XL_SetUserAgent(const TCHAR *pszUserAgent)
HttpタスクリクエストのUserAgentを元のリソースに設定します。
パラメータ: [in] pszUserAgent、クライアント UserAgent string
説明: このメソッドの呼び出し後に作成されたタスクは、新しい UserAgent を使用します。
XL_ParseThunderPrivateUrl
BOOL XL_ParseThunderPrivateUrl(const wchar_t *pszThunderUrl, wchar_t *normalUrlBuffer, INT32bufferLen)
Xunlei の特別リンクは、通常の URL から一定のロジックに従って変換されます。
パラメータ: [in] pszThunderUrl、Xunlei 特殊チェーン URL [out]normalUrlBuffer、変換された通常の URL を格納するバッファ [out]bufferLen、normalUrlBuffer のバッファ サイズ、単位文字数 戻り値: TRUE は成功、FALSE は失敗を意味します 説明 :
この
関数独立しており、他の関数との依存関係がなく、いつでも単独で使用できます。
XL_SetUploadSpeedLimit
void XL_SetUploadSpeedLimit(INT32 nTcpKBps、INT32 nOtherKBps)
外部ネットワークと内部ネットワークのアップロード速度は、実際の状況に応じて設定できます。
パラメータ: [in] nTcpKBps、内部ネットワークのアップロード速度、単位は KB/s [in] nOtherKBps、外部ネットワークのアップロード速度、単位は KB/s 戻り値:
なし
XL_CreateTaskByURL
HANDLE XL_CreateTaskByURL(const wchar_t *url, const wchar_t *path, const wchar_t *fileName, BOOL IsResume)
タスクの URL、パス、ファイル名を使用してタスクを作成します。
パラメータ: [in] url、タスク URL、空文字を含む空にすることはできません、文字長は 2084 [in] を超えることはできません [in] path、タスク パス、空文字を含む空にすることはできません、文字長は 260 [in] fileName を超えることはできません、タスク ファイル名、空文字を含む空にすることはできません。文字長は 260 [in] を超えることはできません。 IsResume、再開タスクかどうか。戻り値: タスクのハンドルを返します
。
XL_CreateTaskByThunder
LONG XL_CreateTaskByThunder(wchar_t *pszUrl, wchar_t *pszFileName, wchar_t *pszReferUrl, wchar_t *pszCharSet, wchar_t *pszCookie)
Thunder 7 の新しいパネルを開き、URL やファイル名などの情報を渡してダウンロード タスクを作成します。
パラメータ: [in] pszUrl、タスク URL [in] pszFileName、ダウンロードして保存するファイル名 [in] pszReferUrl、参照ページ URL [in] pszCharSet、現在の Web ページの文字セット [in] pszCookie、データのダウンロードに必要な
Cookie の戻り値: 成功の場合は 0、失敗の場合はその他
XL_ForceStopTask
BOOL XL_ForceStopTask(HANDLE hTask)
タスクの強制中断
パラメータ: [in] hTask、タスクハンドル
戻り値: TRUE は成功、FALSE は失敗を意味します。タスクが存在しない場合、呼び出しは失敗します。
注: UAC が大きいファイルのダウンロードを有効にしている場合、XL_StopTask の呼び出しに時間がかかることがあります。この場合、タスクをすぐに一時停止する必要がある場合は、XL_ForceStopTask を呼び出すことができますが、ディスクに書き込まれていないダウンロード データが失われる可能性があります。
予防
1. グローバル インターフェイスはスレッド セーフではないため、関数が正常に戻った後で XL_Init 以外の他のインターフェイスを呼び出す必要があります; 2. タスクが
TSC_STARTPENDING または TSC_STOPPENDING にある場合、タスクに対する操作はタスクを問い合わせるためのインターフェイスのみを呼び出すことができます。情報。
インターフェースロジックの説明
タスクの非同期操作
タスクの操作は非同期で実行されます。呼び出しインターフェイスには 2 つの操作があります。 1. 上位層 xldl.dll で仮想タスクを操作します。 2. 関連する操作コマンドをコマンド キューにプッシュします。
インターフェース層で操作できるタスクはすべて仮想タスクであり、実タスクはMiniThunderPlatfomプロセス内で作成されます。タスク作成のプロセス: 1.Xldl は仮想タスクを作成します; 2. 操作とパラメータをコマンド キューにプッシュします; 3. コマンド処理スレッドはキュー内のコマンドを実行し、MiniThunderPlatfom と同期的に通信します; 4. その後タスクは MiniThunderPlatfom によって正常に作成され、仮想タスクは実際のタスクとマッピングできます。その後、仮想タスク上のすべての操作が実際のタスクにマッピングされ、実際の操作は MiniTP 上で実行されます。タスク情報のクエリとタスク情報の更新は呼び出し元によって駆動される必要があり、呼び出し元はこのインターフェイスを 1 秒ごとに呼び出す必要があります。タスク情報のクエリと更新のプロセス: 1. 情報をクエリするインターフェイスを呼び出すとき、まず仮想タスクからタスク情報をクエリします。初めて呼び出すときは情報が存在してはいけません。2. クエリ操作とパラメータをプッシュします。コマンドキュー; 3. コマンド処理スレッド キュー内のコマンドの実行と MiniThunderPlatfom との同期通信を担当します; 4. 実際のタスク情報をクエリした後、その情報を仮想タスクに保存します; 5. 2 番目のクエリはタスクを直接クエリできます情報、これは最後のクエリです。ここでは、最初のクエリ操作でタスク情報を取得できない、つまりタスクが一時停止/開始保留状態にある状況が考えられます。より極端なケースでは、タスクのダウンロードが完了する前にクエリが呼び出されず、タスクの完了後にインターフェイスが呼び出された場合、タスクの進行状況は 0 であることがわかります。
子プロセスが異常終了しました
この状況は歓迎されませんが、避けられません。MiniThunderPlatfom によって作成されたタスクは、子プロセスが異常終了すると破棄されます。このように、仮想タスクは実際には実タスクとのマッピング関係以外には意味を持たない。このとき、タスク情報を問い合わせるとタスクエラーが返され、エラーコードは TASK_ERROR_ID_INVALID (タスク ID が無効です) となります。このとき、再開タスクを再作成する必要があり、インターフェイスは XL_CreateTask で、構造体の他のパラメータは通常のタスクを作成する場合と同じで、パラメータ IsResume は TRUE に設定されます。
他の
SDKファイルの説明
SDK には合計 10 個のバイナリがあります。バイナリ間の依存関係を次の図に示します。
各ファイルの機能紹介:
ファイル名 | 関数 |
---|---|
xldl.dll | MiniTP インターフェイスのエクスポート |
MiniThunderPlatform.exe | 独立したプロセス |
ダウンロードエンジン.dll | MiniTP コア ライブラリ |
zlib1.dll | 通信データを圧縮する |
dl_peer_id.dll | ThunderクライアントIDを取得する |
XLBugReport.exe | キャプチャされたクラッシュの報告を担当します |
XLBugHandler.dll | XLBugReport.exe のプルアップを担当します。 |
minizip.dll、mini_unzip.dll | 圧縮ファイルのクラッシュ スタック |
atl71.dll | Microsoftが提供するライブラリ |