// 通信接続処理 private void Connect(NetConnectInfo info) { var go = new GameObject("connection"); go.transform.parent = this.gameObject.transform; var con = go.AddComponent <NetConnector>(); con.DidLoadEvent += this.DidLoad; // 通信開始 if (this.WillStart != null) { this.WillStart(info); } if (info.IsPost) { con.StartConnectPost(info, this.HttpHeaders); } else { con.StartConnectGet(info); } if (info.DidStartDelegate != null) { info.DidStartDelegate(con); } }
/// <summary> /// 通信を開始する. (GET) /// </summary> /// <param name="info">通信情報</param> public void StartConnectGet(NetConnectInfo info) { Debug.Log("[NetConnector] Start Connect GET : " + info.Url); if (info == null) { Debug.LogError("[NetConnector] Error!! Start Connect GET : NetConnectInfo is null."); return; } if (info.Url == null) { Debug.LogError("[NetConnector] Error!! Start Connect GET : NetConnectInfo URL is null."); return; } this.StopAllCoroutines(); this.Info = info; this.TimeoutDuration = info.TimeoutDuration; this.gameObject.name = info.Url; this.IsTimeout = false; if (this.WWW != null) { this.WWW.Dispose(); } this.WWW = new WWW(this.Info.Url); this.IsConnecting = true; this.StartCoroutine("ProcDownload"); }
/// <summary> /// 通信を開始する. (HTTP ヘッダー付き POST) /// </summary> /// <param name="info">通信情報</param> /// <param name="form">Http ヘッダー情報</param> public void StartConnectPost(NetConnectInfo info, Dictionary <string, string> headers) { Debug.Log("[NetConnector] Start Connect POST : " + info.Url); if (info == null) { Debug.LogError("[NetConnector] Error!! Start Connect POST : NetConnectInfo is null."); return; } if (info.Url == null || !info.IsPost) { Debug.LogError("[NetConnector] Error!! Start Connect POST : URL is null. Or this connect is not post."); return; } this.StopAllCoroutines(); this.Info = info; this.TimeoutDuration = info.TimeoutDuration; this.gameObject.name = info.Url; this.IsTimeout = false; if (this.WWW != null) { this.WWW.Dispose(); } if (headers != null && headers.Count > 0) { this.WWW = new WWW(info.Url, info.PostData, headers); } else { this.WWW = new WWW(info.Url, info.PostData); } m_prevProgress = 0f; this.IsConnecting = true; this.StartCoroutine("ProcDownload"); }
/// <summary> /// 通信を開始する. (GET) /// 現状, HTTP ヘッダーの追加なしで通信します。 /// </summary> /// <param name="tag">管理用タグ名. 削除時に指定する.</param> /// <param name="priority">通信優先度. 数字が大きいほど優先度が上.</param> /// <param name="url">通信先 URL</param> /// <param name="dataType">ダウンロードデータ種類</param> /// <param name="didLoad">通信終了時に呼ばれるメソッド</param> public NetConnectInfo StartConnectGet(string tag, int priority, string url, string dataType) { var info = new NetConnectInfo(url) { Tag = tag, Priority = priority, DataType = dataType }; this.EnqueueConnectQueue(info); return(info); }
// 通信接続リクエストキューに実行優先順にソートして追加 private void EnqueueConnectQueue(NetConnectInfo info) { m_connectQueue.Enqueue(info); var list = from i in m_connectQueue.ToArray() orderby i.Priority descending select i; m_connectQueue.Clear(); foreach (var i in list) { m_connectQueue.Add(i); } }
/// <summary> /// 通信を開始する. MCNetConnectInfo 継承クラスをつかうときはこいつを使うべし. /// </summary> /// <param name="info">通信情報</param> public void StartConnect(NetConnectInfo info) { this.EnqueueConnectQueue(info); }
/// <summary> /// 通信を開始する. (POST) /// </summary> /// <param name="info">通信情報</param> public void StartConnectPost(NetConnectInfo info) { this.StartConnectPost(info, null); }