さて、最初に、すでにアップロードされたものを「ロールバック」する処理は手動で行う必要があるとしましょう。そのため、それらのチャンクを保存している場所はどこでも、キャンセル時に手動でクリーンアップする必要があります。
FlowChartさて、ワークフロー自体についてですが、私の意見では、次のように設定できます。



では、このワークフローを分解してみましょう。サービス全体を何らかのクライアント キーに関連付ける必要があります。これによりStart、クライアントごとに 1 回でサービスを開始して、起動コストを抑えることができます。
次に、クライアントが転送を開始したい場合はBeginTransfer、転送ループに移動する呼び出しを行います。転送ループは、必要に応じて を呼び出してチャンク間でキャンセルできるように設定されていますCancelTransfer。
このモデルでは、同じブランチが転送を終了するためにも使用されます。これは、ループから抜け出すためです。転送が完了したら、チャンクを呼び出すだけCancelTransferです (それが気に入らない場合は、まったく同じように見える別のブランチをセットアップするだけです)。 )。
最後に、プロセス ループにいるときはSoftExit、ワークフロー全体をシャットダウンして、メンテナンスが必要な場合や、クライアントが接続を終了して破棄する必要がある場合に、そっと強制終了できるようにすることができますSoftExit。