From 6a2799f5f67c5a399aea2426797482077ef3cf52 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期五, 07 九月 2018 14:02:02 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/AssetVersion/RemoteFile.cs | 1001 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 507 insertions(+), 494 deletions(-)
diff --git a/System/AssetVersion/RemoteFile.cs b/System/AssetVersion/RemoteFile.cs
index ecabda0..5c3638a 100644
--- a/System/AssetVersion/RemoteFile.cs
+++ b/System/AssetVersion/RemoteFile.cs
@@ -1,60 +1,67 @@
-锘�//#define UseWebClient
-
-using UnityEngine;
-using System.Collections;
-using System.Net;
-using System.IO;
-using System.ComponentModel;
-using System;
-using System.Threading;
-
+锘�//#define UseWebClient
+
+using UnityEngine;
+using System.Collections;
+using System.Net;
+using System.IO;
+using System.ComponentModel;
+using System;
+using System.Threading;
+
public class RemoteFile
{
- static bool m_ProcessErroring = false;
- public static bool processErroring {
+ static bool m_ProcessErroring = false;
+ public static bool processErroring
+ {
get { return m_ProcessErroring; }
- }
-
- public static int maxDownLoadTask = 48;
- public static int MaxConnectLimit = 48;
- static int gDownloadIsRunningCount;
- public static int DownloadIsRunningCount {
- get { return gDownloadIsRunningCount; }
- }
-
- public static int gStartTickcount = 0;
- static long gTotalDownloadSize = 0L; //宸蹭笅杞界殑瀛楄妭鏁�
- static object lockObj = new object();
- public static long TotalDownloadedSize {
- get {
- return System.Threading.Interlocked.Read(ref gTotalDownloadSize);
- }
- set {
+ }
+
+ public static int maxDownLoadTask = 48;
+ public static int MaxConnectLimit = 48;
+ static int gDownloadIsRunningCount;
+ public static int DownloadIsRunningCount
+ {
+ get { return gDownloadIsRunningCount; }
+ }
+
+ public static int gStartTickcount = 0;
+ static long gTotalDownloadSize = 0L; //宸蹭笅杞界殑瀛楄妭鏁�
+ static object lockObj = new object();
+ public static long TotalDownloadedSize
+ {
+ get
+ {
+ return System.Threading.Interlocked.Read(ref gTotalDownloadSize);
+ }
+ set
+ {
gTotalDownloadSize = value;
- }
- }
-
- static float downloadSpeedRef = 0f; //瀛楄妭/绉�
- static long downloadSizeRef = 0L;
-
- public static string DownloadSpeed {
- get {
- float speed = downloadSpeedRef;
+ }
+ }
+
+ static float downloadSpeedRef = 0f; //瀛楄妭/绉�
+ static long downloadSizeRef = 0L;
+
+ public static string DownloadSpeed
+ {
+ get
+ {
+ float speed = downloadSpeedRef;
if (RemoteFile.gStartTickcount != 0)
- {
- float second = Mathf.Abs(System.Environment.TickCount - RemoteFile.gStartTickcount) / 1000f;
+ {
+ float second = Mathf.Abs(System.Environment.TickCount - RemoteFile.gStartTickcount) / 1000f;
if (second > 1f || (downloadSpeedRef <= 0.1f && TotalDownloadedSize > 0))
- {
+ {
if (second > 0f)
- {
- var delta = TotalDownloadedSize - downloadSizeRef;
+ {
+ var delta = TotalDownloadedSize - downloadSizeRef;
downloadSizeRef = TotalDownloadedSize;
speed = (delta / second + downloadSpeedRef) * 0.5f;
downloadSpeedRef = speed;
RemoteFile.gStartTickcount = System.Environment.TickCount;
- }
- }
+ }
+ }
}
if (speed > 1048576f)
@@ -68,23 +75,23 @@
else
{
return StringUtility.Contact(speed.ToString("f1"), " B/S");
- }
- }
- }
-
- public AssetVersion assetVersion { get; private set; }
- protected string mRemoteFile;
- protected string localFile;
- bool speedLimit = false;
-
- protected string mLocalFileTemp; //涓存椂鏂囦欢
-
- protected System.DateTime mRemoteLastModified;
- protected System.DateTime mLocalLastModified;
- protected long mRemoteFileSize = 0;
- public static long TotalRemoteFileSize = 0L;
-
- const int bufferSize = 8192;
+ }
+ }
+ }
+
+ public AssetVersion assetVersion { get; private set; }
+ protected string mRemoteFile;
+ protected string localFile;
+ bool speedLimit = false;
+
+ protected string mLocalFileTemp; //涓存椂鏂囦欢
+
+ protected System.DateTime mRemoteLastModified;
+ protected System.DateTime mLocalLastModified;
+ protected long mRemoteFileSize = 0;
+ public static long TotalRemoteFileSize = 0L;
+
+ const int bufferSize = 8192;
byte[] buff;
HttpWebRequest headRequest;
@@ -94,15 +101,18 @@
Action<bool, AssetVersion> onCompleted;
- protected bool mHadError = false;
- public bool HaveError {
- get { return mHadError; }
- }
-
- bool m_Done = false;
- public bool done {
- get { return m_Done; }
- private set {
+ protected bool mHadError = false;
+ public bool HaveError
+ {
+ get { return mHadError; }
+ }
+
+ bool m_Done = false;
+ public bool done
+ {
+ get { return m_Done; }
+ private set
+ {
m_Done = value;
if (value)
{
@@ -113,14 +123,14 @@
onCompleted = null;
}
}
- }
- }
-
- State state = State.Wait;
-
- int read_Stream_startTickcount = 0; //璇锋眰鎿嶄綔寮�濮�,鐢ㄤ簬瓒呮椂鍒ゆ柇
- int timeOut = 5000; //瓒呮椂鏃堕棿
-
+ }
+ }
+
+ State state = State.Wait;
+
+ int read_Stream_startTickcount = 0; //璇锋眰鎿嶄綔寮�濮�,鐢ㄤ簬瓒呮椂鍒ゆ柇
+ int timeOut = 5000; //瓒呮椂鏃堕棿
+
public static void Prepare()
{
gDownloadIsRunningCount = 0;
@@ -128,16 +138,16 @@
TotalDownloadedSize = 0L;
downloadSpeedRef = 0f;
downloadSizeRef = 0L;
- }
-
+ }
+
public void Init(string remoteFile, string _localFile, AssetVersion _assetVersion, bool _speedLimit = false)
{
- mRemoteFile = remoteFile;
- localFile = _localFile;
- assetVersion = _assetVersion;
- this.speedLimit = _speedLimit;
- }
-
+ mRemoteFile = remoteFile;
+ localFile = _localFile;
+ assetVersion = _assetVersion;
+ this.speedLimit = _speedLimit;
+ }
+
public void Begin(Action<bool, AssetVersion> _onCompleted)
{
onCompleted = _onCompleted;
@@ -206,7 +216,7 @@
gDownloadIsRunningCount--;
}
}
- }
+ }
private void OnDispose()
{
@@ -214,18 +224,18 @@
}
void MakeSureDirectory(string filePath)
- {
- string dir = Path.GetDirectoryName(filePath);
+ {
+ string dir = Path.GetDirectoryName(filePath);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
- }
- }
-
+ }
+ }
+
bool Move(string sourceFile, string destFile)
- {
- bool ret = true;
-#if !UNITY_WEBPLAYER
+ {
+ bool ret = true;
+#if !UNITY_WEBPLAYER
try
{
if (speedLimit)
@@ -239,20 +249,20 @@
{
File.Move(sourceFile, destFile);
}
- }
+ }
catch (Exception ex)
{
- DebugEx.LogError(ex.Message);
- ret = false;
- }
-#endif
- return ret;
+ DebugEx.LogError(ex.Message);
+ ret = false;
+ }
+#endif
+ return ret;
}
IEnumerator Co_DownloadRemoteFile()
{
done = false;
-
+
while (gDownloadIsRunningCount >= maxDownLoadTask)
{
if (stop)
@@ -261,8 +271,8 @@
}
//瓒呰繃鏈�澶т换鍔℃暟鏃�,鍏堢瓑寰�
yield return null;
- }
-
+ }
+
while (assetVersion != null && assetVersion.extersion == ".manifest" && !AssetVersionUtility.GetAssetVersion(assetVersion.relativePath.Replace(".manifest", "")).localValid)
{
if (stop)
@@ -270,165 +280,165 @@
yield break;
}
yield return null;
- }
-
- state = State.Working;
-
- gDownloadIsRunningCount++;
- mHadError = false;
- fileWriteState = FileWriteState.None;
- mLocalFileTemp = localFile + ".tmp"; //鍏堜笅杞戒负涓存椂鏂囦欢
-
- MakeSureDirectory(mLocalFileTemp); //纭繚鏂囦欢鍐欏叆鐩綍瀛樺湪
- mLocalLastModified = DateTime.MinValue;
- long localFileSize = 0L;
-#if !UNITY_WEBPLAYER
+ }
+
+ state = State.Working;
+
+ gDownloadIsRunningCount++;
+ mHadError = false;
+ fileWriteState = FileWriteState.None;
+ mLocalFileTemp = localFile + ".tmp"; //鍏堜笅杞戒负涓存椂鏂囦欢
+
+ MakeSureDirectory(mLocalFileTemp); //纭繚鏂囦欢鍐欏叆鐩綍瀛樺湪
+ mLocalLastModified = DateTime.MinValue;
+ long localFileSize = 0L;
+#if !UNITY_WEBPLAYER
mLocalLastModified = File.GetLastWriteTime(mLocalFileTemp);
-#endif
- headRequest = (HttpWebRequest)System.Net.WebRequest.Create(mRemoteFile);
+#endif
+ headRequest = (HttpWebRequest)System.Net.WebRequest.Create(mRemoteFile);
if (headRequest.ServicePoint.ConnectionLimit < RemoteFile.MaxConnectLimit)
- {
- headRequest.ServicePoint.ConnectionLimit = RemoteFile.MaxConnectLimit;
- }
- headRequest.Method = "HEAD"; // Only the header info, not full file!
- headRequest.ServicePoint.Expect100Continue = false;
- headRequest.Timeout = 3000;
- headRequest.Proxy = null;
- headRequest.KeepAlive = false;
- bool isAcceptRange = true;
- bool headRequestOk = false; //鏄惁鏀寔鏂偣缁紶
-
- int tick1 = 0;
+ {
+ headRequest.ServicePoint.ConnectionLimit = RemoteFile.MaxConnectLimit;
+ }
+ headRequest.Method = "HEAD"; // Only the header info, not full file!
+ headRequest.ServicePoint.Expect100Continue = false;
+ headRequest.Timeout = 3000;
+ headRequest.Proxy = null;
+ headRequest.KeepAlive = false;
+ bool isAcceptRange = true;
+ bool headRequestOk = false; //鏄惁鏀寔鏂偣缁紶
+
+ int tick1 = 0;
try
- {
- headRequest.BeginGetResponse( //鏀逛负寮傛鐨勬柟娉�
+ {
+ headRequest.BeginGetResponse( //鏀逛负寮傛鐨勬柟娉�
(x) =>
- {
+ {
try
- {
- headResponse = (x.AsyncState as HttpWebRequest).EndGetResponse(x) as HttpWebResponse;
- mRemoteLastModified = headResponse.LastModified;
- mRemoteFileSize = headResponse.ContentLength;
+ {
+ headResponse = (x.AsyncState as HttpWebRequest).EndGetResponse(x) as HttpWebResponse;
+ mRemoteLastModified = headResponse.LastModified;
+ mRemoteFileSize = headResponse.ContentLength;
if (headResponse.Headers["Accept-Ranges"] != null)
- {
- string s = headResponse.Headers["Accept-Ranges"];
+ {
+ string s = headResponse.Headers["Accept-Ranges"];
if (s == "none")
- {
- isAcceptRange = false;
- }
- }
- System.Threading.Interlocked.Add(ref RemoteFile.TotalRemoteFileSize, mRemoteFileSize);
- headRequestOk = true;
- }
+ {
+ isAcceptRange = false;
+ }
+ }
+ System.Threading.Interlocked.Add(ref RemoteFile.TotalRemoteFileSize, mRemoteFileSize);
+ headRequestOk = true;
+ }
catch (Exception ex)
- {
- DebugEx.LogWarning("ERROR: " + ex);
- mHadError = true;
- }
+ {
+ DebugEx.LogWarning("ERROR: " + ex);
+ mHadError = true;
+ }
finally
- {
+ {
if (headResponse != null)
- {
- headResponse.Close();
- headResponse = null;
- }
+ {
+ headResponse.Close();
+ headResponse = null;
+ }
if (headRequest != null)
{
headRequest.Abort();
headRequest = null;
- }
- }
-
- }, headRequest);
- tick1 = System.Environment.TickCount;
- }
+ }
+ }
+
+ }, headRequest);
+ tick1 = System.Environment.TickCount;
+ }
catch (WebException webEx)
- {
- DebugEx.LogWarning("<color=red>Request File Head ERROR: " + mRemoteFile + "</color>");
- DebugEx.LogWarning("ERROR: " + webEx);
- mHadError = true;
- gDownloadIsRunningCount--;
- done = true;
- yield break;
- }
+ {
+ DebugEx.LogWarning("<color=red>Request File Head ERROR: " + mRemoteFile + "</color>");
+ DebugEx.LogWarning("ERROR: " + webEx);
+ mHadError = true;
+ gDownloadIsRunningCount--;
+ done = true;
+ yield break;
+ }
catch (System.Exception e)
- {
- DebugEx.LogWarning("<color=red>Request File Head ERROR: " + mRemoteFile + "</color>");
- DebugEx.LogWarning("ERROR: " + e);
- mHadError = true;
- gDownloadIsRunningCount--;
- done = true;
- yield break;
- }
-
+ {
+ DebugEx.LogWarning("<color=red>Request File Head ERROR: " + mRemoteFile + "</color>");
+ DebugEx.LogWarning("ERROR: " + e);
+ mHadError = true;
+ gDownloadIsRunningCount--;
+ done = true;
+ yield break;
+ }
+
while (!headRequestOk && !mHadError)
{
if (stop)
{
yield break;
- }
-
+ }
+
if (processErroring)
- {
- mHadError = true;
- break;
- }
- float dur = System.Environment.TickCount - tick1;
+ {
+ mHadError = true;
+ break;
+ }
+ float dur = System.Environment.TickCount - tick1;
if (dur > timeOut)
- {
- DebugEx.LogWarningFormat("鑾峰彇杩滅▼鏂囦欢{0} 淇℃伅瓒呮椂!", mRemoteFile);
- mHadError = true;
- break;
- }
- yield return null;
- }
+ {
+ DebugEx.LogWarningFormat("鑾峰彇杩滅▼鏂囦欢{0} 淇℃伅瓒呮椂!", mRemoteFile);
+ mHadError = true;
+ break;
+ }
+ yield return null;
+ }
if (mHadError)
- {
- DebugEx.LogWarningFormat("鑾峰彇杩滅▼鏂囦欢{0} 淇℃伅澶辫触!", mRemoteFile);
+ {
+ DebugEx.LogWarningFormat("鑾峰彇杩滅▼鏂囦欢{0} 淇℃伅澶辫触!", mRemoteFile);
if (headRequest != null)
{
headRequest.Abort();
headRequest = null;
- }
-
- done = true;
- gDownloadIsRunningCount--;
- yield break;
- }
-
- //鍒ゆ柇鏄惁鏈夊凡缁忎笅杞介儴鍒嗙殑涓存椂鏂囦欢
+ }
+
+ done = true;
+ gDownloadIsRunningCount--;
+ yield break;
+ }
+
+ //鍒ゆ柇鏄惁鏈夊凡缁忎笅杞介儴鍒嗙殑涓存椂鏂囦欢
if (File.Exists(mLocalFileTemp))
- { // This will not work in web player!
- //鍒ゆ柇鏄惁鏂偣缁紶, 渚濇嵁涓存椂鏂囦欢鏄惁瀛樺湪,浠ュ強淇敼鏃堕棿鏄惁灏忎簬鏈嶅姟鍣ㄦ枃浠舵椂闂�
-#if !UNITY_WEBPLAYER
- localFileSize = (File.Exists(mLocalFileTemp)) ? (new FileInfo(mLocalFileTemp)).Length : 0L;
-#endif
- bool outDated = IsOutdated;
+ { // This will not work in web player!
+ //鍒ゆ柇鏄惁鏂偣缁紶, 渚濇嵁涓存椂鏂囦欢鏄惁瀛樺湪,浠ュ強淇敼鏃堕棿鏄惁灏忎簬鏈嶅姟鍣ㄦ枃浠舵椂闂�
+#if !UNITY_WEBPLAYER
+ localFileSize = (File.Exists(mLocalFileTemp)) ? (new FileInfo(mLocalFileTemp)).Length : 0L;
+#endif
+ bool outDated = IsOutdated;
if (localFileSize == mRemoteFileSize && !outDated)
- {
- gDownloadIsRunningCount--;
- done = true;
- mHadError = !Move(mLocalFileTemp, localFile);//鎶婁复鏃舵枃浠舵敼鍚嶄负姝e紡鏂囦欢
- yield break; // We already have the file, early out
- }
+ {
+ gDownloadIsRunningCount--;
+ mHadError = !Move(mLocalFileTemp, localFile);//鎶婁复鏃舵枃浠舵敼鍚嶄负姝e紡鏂囦欢
+ done = true;
+ yield break; // We already have the file, early out
+ }
else if (localFileSize > mRemoteFileSize || outDated)
- {
- if (!outDated) DebugEx.LogWarning("Local file is larger than remote file, but not outdated. PANIC!");
+ {
+ if (!outDated) DebugEx.LogWarning("Local file is larger than remote file, but not outdated. PANIC!");
if (outDated)
- {
- DebugEx.LogWarning(mLocalFileTemp + " Local file is outdated, deleting");
- }
+ {
+ DebugEx.LogWarning(mLocalFileTemp + " Local file is outdated, deleting");
+ }
try
- {
- if (File.Exists(mLocalFileTemp))
- File.Delete(mLocalFileTemp);
- }
+ {
+ if (File.Exists(mLocalFileTemp))
+ File.Delete(mLocalFileTemp);
+ }
catch (System.Exception e)
- {
- DebugEx.LogWarning("<color=red>Could not delete local file</color>");
- DebugEx.LogError(e);
- }
-
+ {
+ DebugEx.LogWarning("<color=red>Could not delete local file</color>");
+ DebugEx.LogError(e);
+ }
+
while (File.Exists(mLocalFileTemp))
{
if (stop)
@@ -436,31 +446,31 @@
yield break;
}
yield return null;
- }
-
- localFileSize = 0;
- }
- }
-
+ }
+
+ localFileSize = 0;
+ }
+ }
+
if (mHadError)
- {
- gDownloadIsRunningCount--;
- done = true;
- yield break;
- }
-
+ {
+ gDownloadIsRunningCount--;
+ done = true;
+ yield break;
+ }
+
if (File.Exists(localFile))
- {
+ {
try
- {
- if (File.Exists(localFile))
- File.Delete(localFile);
- }
+ {
+ if (File.Exists(localFile))
+ File.Delete(localFile);
+ }
catch (System.Exception e)
- {
- DebugEx.LogWarning("<color=red>Could not delete local file</color>");
- DebugEx.LogWarning(e);
- }
+ {
+ DebugEx.LogWarning("<color=red>Could not delete local file</color>");
+ DebugEx.LogWarning(e);
+ }
while (File.Exists(localFile))
{
if (stop)
@@ -468,241 +478,244 @@
yield break;
}
yield return null;
- }
- }
-
-#if UseWebClient //|| UNITY_IOS
- using (WebClient client = new WebClient()) {
- client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadCompleted);
- client.DownloadFileAsync(new Uri(mRemoteFile), mLocalFileTemp);
- }
-
- while (!done) {
- yield return null;
- }
- mHadError = !Move(mLocalFileTemp, localFile);//鎶婁复鏃舵枃浠舵敼鍚嶄负姝e紡鏂囦欢
-#else
+ }
+ }
+
+#if UseWebClient //|| UNITY_IOS
+ using (WebClient client = new WebClient()) {
+ client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadCompleted);
+ client.DownloadFileAsync(new Uri(mRemoteFile), mLocalFileTemp);
+ }
+
+ while (!done) {
+ yield return null;
+ }
+ mHadError = !Move(mLocalFileTemp, localFile);//鎶婁复鏃舵枃浠舵敼鍚嶄负姝e紡鏂囦欢
+#else
try
- {
- fileRequest = (HttpWebRequest)HttpWebRequest.Create(mRemoteFile);
+ {
+ fileRequest = (HttpWebRequest)HttpWebRequest.Create(mRemoteFile);
if (fileRequest.ServicePoint.ConnectionLimit < RemoteFile.MaxConnectLimit)
- {
- fileRequest.ServicePoint.ConnectionLimit = RemoteFile.MaxConnectLimit;
- }
- fileRequest.ServicePoint.Expect100Continue = false;
- fileRequest.Timeout = 3000;
- fileRequest.Proxy = null;
- fileRequest.KeepAlive = false;
-
+ {
+ fileRequest.ServicePoint.ConnectionLimit = RemoteFile.MaxConnectLimit;
+ }
+ fileRequest.ServicePoint.Expect100Continue = false;
+ fileRequest.Timeout = 3000;
+ fileRequest.Proxy = null;
+ fileRequest.KeepAlive = false;
+
if (localFileSize != 0L && isAcceptRange)
- {
- fileRequest.AddRange((int)localFileSize, (int)mRemoteFileSize - 1);
- }
-#if !UNITY_WEBPLAYER
- fileRequest.Method = WebRequestMethods.Http.Get;
-#endif
- fileRequest.BeginGetResponse(AsynchCallback, fileRequest);
- tick1 = System.Environment.TickCount;
- }
+ {
+ fileRequest.AddRange((int)localFileSize, (int)mRemoteFileSize - 1);
+ }
+#if !UNITY_WEBPLAYER
+ fileRequest.Method = WebRequestMethods.Http.Get;
+#endif
+ fileRequest.BeginGetResponse(AsynchCallback, fileRequest);
+ tick1 = System.Environment.TickCount;
+ }
catch (System.Exception ex)
- {
- DebugEx.LogWarning("BeginGetResponse exception: " + ex.Message);
- DebugEx.LogWarning(ex);
+ {
+ DebugEx.LogWarning("BeginGetResponse exception: " + ex.Message);
+ DebugEx.LogWarning(ex);
if (fileRequest != null)
- {
- fileRequest.Abort();
- fileRequest = null;
- }
- mHadError = true;
- done = true;
- gDownloadIsRunningCount--;
- yield break;
- }
-
+ {
+ fileRequest.Abort();
+ fileRequest = null;
+ }
+ mHadError = true;
+ done = true;
+ gDownloadIsRunningCount--;
+ yield break;
+ }
+
while (fileResponse == null && !mHadError)
{ // Wait for asynch to finish
if (stop)
{
yield break;
- }
-
+ }
+
if (processErroring)
- {
- mHadError = true;
- break;
- }
- float dur = System.Environment.TickCount - tick1;
+ {
+ mHadError = true;
+ break;
+ }
+ float dur = System.Environment.TickCount - tick1;
if (dur > timeOut)
- {
- DebugEx.LogWarningFormat("涓嬭浇杩滅▼鏂囦欢{0} 瓒呮椂!", mRemoteFile);
- mHadError = true;
- break;
- }
- yield return null;
- }
-
+ {
+ DebugEx.LogWarningFormat("涓嬭浇杩滅▼鏂囦欢{0} 瓒呮椂!", mRemoteFile);
+ mHadError = true;
+ break;
+ }
+ yield return null;
+ }
+
if (mHadError)
- {
- DebugEx.LogWarningFormat("[RemoteFile] 杩滅▼鏂囦欢{0} 涓嬭浇澶辫触! ", localFile);
+ {
+ DebugEx.LogWarningFormat("[RemoteFile] 杩滅▼鏂囦欢{0} 涓嬭浇澶辫触! ", localFile);
if (fileRequest != null)
- {
- fileRequest.Abort();
- fileRequest = null;
- }
+ {
+ fileRequest.Abort();
+ fileRequest = null;
+ }
if (fileResponse != null)
- {
- fileResponse.Close();
- fileResponse = null;
- }
- done = true;
- gDownloadIsRunningCount--;
- yield break;
- }
-
+ {
+ fileResponse.Close();
+ fileResponse = null;
+ }
+ done = true;
+ gDownloadIsRunningCount--;
+ yield break;
+ }
+
try
- {
- inStream = fileResponse.GetResponseStream();
- fs = new FileStream(mLocalFileTemp, (localFileSize > 0) ? FileMode.Append : FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
+ {
+ inStream = fileResponse.GetResponseStream();
+ fs = new FileStream(mLocalFileTemp, (localFileSize > 0) ? FileMode.Append : FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
if (buff == null)
- {
- buff = new byte[bufferSize];
- }
- fileWriteState = FileWriteState.Writting;
- inStream.BeginRead(buff, 0, bufferSize, ReadDataCallback, null);
- read_Stream_startTickcount = System.Environment.TickCount;
- }
+ {
+ buff = new byte[bufferSize];
+ }
+ fileWriteState = FileWriteState.Writting;
+ inStream.BeginRead(buff, 0, bufferSize, ReadDataCallback, null);
+ read_Stream_startTickcount = System.Environment.TickCount;
+ }
catch (Exception ex)
- {
- DebugEx.LogWarning("<color=red>ERROR: " + mRemoteFile + "</color>");
- DebugEx.LogWarning(ex);
+ {
+ DebugEx.LogWarning("<color=red>ERROR: " + mRemoteFile + "</color>");
+ DebugEx.LogWarning(ex);
if (inStream != null)
- {
- inStream.Close();
- inStream = null;
- }
+ {
+ inStream.Close();
+ inStream = null;
+ }
if (fs != null)
- {
- fs.Close();
- fs = null;
- }
+ {
+ fs.Close();
+ fs = null;
+ }
if (fileResponse != null)
- {
- fileResponse.Close();
- fileResponse = null;
- }
- mHadError = true;
- fileWriteState = FileWriteState.Error;
- }
-
+ {
+ fileResponse.Close();
+ fileResponse = null;
+ }
+ mHadError = true;
+ fileWriteState = FileWriteState.Error;
+ }
+
while (fileWriteState == FileWriteState.Writting)
{
if (stop)
{
yield break;
- }
-
+ }
+
if (processErroring)
- {
- fileWriteState = FileWriteState.Error;
- break;
- }
+ {
+ fileWriteState = FileWriteState.Error;
+ break;
+ }
if (downloadSpeedRef == 0)
- {
- int dura = System.Environment.TickCount - read_Stream_startTickcount;
+ {
+ int dura = System.Environment.TickCount - read_Stream_startTickcount;
if (dura > timeOut)
- {
- fileWriteState = FileWriteState.Timeout;
- DebugEx.LogWarningFormat("[RemoteFile] 杩滅▼鏂囦欢{0} 璇诲彇瓒呮椂{1}!", mRemoteFile, dura);
- break;
- }
- }
-
- yield return null;
- }
+ {
+ fileWriteState = FileWriteState.Timeout;
+ DebugEx.LogWarningFormat("[RemoteFile] 杩滅▼鏂囦欢{0} 璇诲彇瓒呮椂{1}!", mRemoteFile, dura);
+ break;
+ }
+ }
+
+ yield return null;
+ }
+
if (fileRequest != null)
- {
- fileRequest.Abort();
- fileRequest = null;
- }
+ {
+ fileRequest.Abort();
+ fileRequest = null;
+ }
if (fileWriteState == FileWriteState.Error || fileWriteState == FileWriteState.Timeout)
- {
- DebugEx.LogWarningFormat("[RemoteFile] 杩滅▼鏂囦欢{0} 涓嬭浇澶辫触! ", localFile);
+ {
+ DebugEx.LogWarningFormat("[RemoteFile] 杩滅▼鏂囦欢{0} 涓嬭浇澶辫触! ", localFile);
if (fileResponse != null)
- {
- fileResponse.Close();
- fileResponse = null;
- }
- mHadError = true;
- done = true;
- gDownloadIsRunningCount--;
- yield break;
- }
+ {
+ fileResponse.Close();
+ fileResponse = null;
+ }
+
+ gDownloadIsRunningCount--;
+ mHadError = true;
+ done = true;
+ yield break;
+ }
+
try
{
- FileInfo localTempFileInfo = new FileInfo(mLocalFileTemp);
+ FileInfo localTempFileInfo = new FileInfo(mLocalFileTemp);
if (localTempFileInfo.Exists)
{ //涓存椂鏂囦欢瀛樺湪,闇�瑕佸垽鏂ぇ灏忔槸鍚︿竴鑷�
//鍒ゆ柇涓存椂鏂囦欢鍜岃繙绋嬫枃浠秙ize鏄惁涓�鑷�
-#if !UNITY_WEBPLAYER
if (localTempFileInfo.Length != mRemoteFileSize && mRemoteFileSize != 0L)
- {
- mHadError = true;
- DebugEx.LogError(string.Format(localFile + " 涓嬭浇瀹屾垚鍚�, 浣嗘槸澶у皬{0} 鍜岃繙绋嬫枃浠朵笉涓�鑷� {1}", localTempFileInfo.Length, mRemoteFileSize));
- }
+ {
+ mHadError = true;
+ DebugEx.LogError(string.Format(localFile + " 涓嬭浇瀹屾垚鍚�, 浣嗘槸澶у皬{0} 鍜岃繙绋嬫枃浠朵笉涓�鑷� {1}", localTempFileInfo.Length, mRemoteFileSize));
+ }
else
- { //澶у皬涓�鑷�
- mHadError = !Move(mLocalFileTemp, localFile);//鎶婁复鏃舵枃浠舵敼鍚嶄负姝e紡鏂囦欢
- }
- gDownloadIsRunningCount--;
- done = true;
-#endif
- }
+ { //澶у皬涓�鑷�
+ mHadError = !Move(mLocalFileTemp, localFile);//鎶婁复鏃舵枃浠舵敼鍚嶄负姝e紡鏂囦欢
+ }
+ }
else
- { //涓存椂鏂囦欢涓嶅瓨鍦�
- mHadError = true;
- gDownloadIsRunningCount--;
- done = true;
- }
-#endif
- }
+ { //涓存椂鏂囦欢涓嶅瓨鍦�
+ mHadError = true;
+ }
+#endif
+ }
catch (Exception ex)
- {
- DebugEx.LogError(ex);
- mHadError = true;
- }
- }
-
- bool IsOutdated {
- get {
- if (File.Exists(mLocalFileTemp))
- return mRemoteLastModified > mLocalLastModified;
- return false;
- }
- }
-
+ {
+ DebugEx.LogError(ex);
+ mHadError = true;
+ }
+
+ yield return null;
+ gDownloadIsRunningCount--;
+ done = true;
+ }
+
+ bool IsOutdated
+ {
+ get
+ {
+ if (File.Exists(mLocalFileTemp))
+ return mRemoteLastModified > mLocalLastModified;
+ return false;
+ }
+ }
+
enum FileWriteState
- {
- None,
- Writting,
- Completed,
- Error,
- Timeout,
- }
-
- Stream inStream;
- FileStream fs;
- FileWriteState fileWriteState = FileWriteState.None; //涓嬭浇鏂囦欢鍐欏叆鐘舵��
-
+ {
+ None,
+ Writting,
+ Completed,
+ Error,
+ Timeout,
+ }
+
+ Stream inStream;
+ FileStream fs;
+ FileWriteState fileWriteState = FileWriteState.None; //涓嬭浇鏂囦欢鍐欏叆鐘舵��
+
void ReadDataCallback(IAsyncResult ar)
- {
+ {
if (stop)
{
return;
- }
-
+ }
+
try
- {
+ {
if (inStream != null)
{
int read = inStream.EndRead(ar);
@@ -738,79 +751,79 @@
fileWriteState = FileWriteState.Completed;
}
}
- }
+ }
catch (Exception ex)
- {
+ {
if (!processErroring)
- {
- DebugEx.LogWarning(ex);
- DebugEx.LogWarning("ReadDataCallback 寮傚父淇℃伅: " + ex.Message);
- }
+ {
+ DebugEx.LogWarning(ex);
+ DebugEx.LogWarning("ReadDataCallback 寮傚父淇℃伅: " + ex.Message);
+ }
if (fs != null)
- {
- fs.Close();
- fs = null;
- }
+ {
+ fs.Close();
+ fs = null;
+ }
if (inStream != null)
- {
- inStream.Close();
- inStream = null;
- }
- fileWriteState = FileWriteState.Error;
- }
- }
-
+ {
+ inStream.Close();
+ inStream = null;
+ }
+ fileWriteState = FileWriteState.Error;
+ }
+ }
+
void WriteDataCallBack(IAsyncResult _asyncResult)
{
fs.Flush();
inStream.BeginRead(buff, 0, bufferSize, new AsyncCallback(ReadDataCallback), null);
read_Stream_startTickcount = System.Environment.TickCount;
- }
-
-#if UseWebClient //|| UNITY_IOS
- protected void DownloadCompleted(System.Object sender, AsyncCompletedEventArgs e) {
- done = true;
- }
-#else
- // Throwind an exception here will not propogate to unity!
+ }
+
+#if UseWebClient //|| UNITY_IOS
+ protected void DownloadCompleted(System.Object sender, AsyncCompletedEventArgs e) {
+ done = true;
+ }
+#else
+ // Throwind an exception here will not propogate to unity!
protected void AsynchCallback(IAsyncResult result)
- {
+ {
try
- {
+ {
if (result == null)
- {
- DebugEx.LogError("Asynch result is null!");
- mHadError = true;
- }
-
- HttpWebRequest webRequest = (HttpWebRequest)result.AsyncState;
+ {
+ DebugEx.LogError("Asynch result is null!");
+ mHadError = true;
+ }
+
+ HttpWebRequest webRequest = (HttpWebRequest)result.AsyncState;
if (webRequest == null)
- {
- DebugEx.LogError("Could not cast to web request");
- mHadError = true;
- }
-
- fileResponse = webRequest.EndGetResponse(result) as HttpWebResponse;
+ {
+ DebugEx.LogError("Could not cast to web request");
+ mHadError = true;
+ }
+
+ fileResponse = webRequest.EndGetResponse(result) as HttpWebResponse;
if (fileResponse == null)
- {
- DebugEx.LogError("Asynch response is null!");
- mHadError = true;
- }
- }
+ {
+ DebugEx.LogError("Asynch response is null!");
+ mHadError = true;
+ }
+ }
catch (Exception ex)
- {
- mHadError = true;
- DebugEx.LogWarning(ex);
- DebugEx.LogWarning("[RemoteFile] AsynchCallback 寮傚父: " + ex.Message);
- }
- }
-#endif
-
+ {
+ mHadError = true;
+ DebugEx.LogWarning(ex);
+ DebugEx.LogWarning("[RemoteFile] AsynchCallback 寮傚父: " + ex.Message);
+ }
+ }
+#endif
+
public enum State
{
Wait,
Working,
Stoped,
- }
-}
-
+ }
+}
+
--
Gitblit v1.8.0