예제 #1
0
    private void Connect(NetRequestInfo info)
    {
        Debug.Log("[NetRequestManager] Request : " + info.Request.Command.ToString() + ", orderID = " + info.OrderID);

        ReqApiBase api = info.Request;

        api.player_id = 0;              // TODO : どこかに保持しておき代入.
        api.debug     = 0;              // TODO : 必要ならば特定条件で 1 に設定するようにする.

        if (api.IsNotReady)
        {
            throw new NotImplementedException();            // 未実装
        }
        string serverURL = "google.co.jp";                  // TODO : API呼び出し用サーバーURL.

        if (string.IsNullOrEmpty(serverURL))
        {
            Debug.LogError("[NetRequestManager] Request Error!! : Server URL is null or empty.");
            return;
        }
        var co = NetConnectManager.SharedInstance.StartConnectPost(NET_TAG,
                                                                   DownloadDataType.NetCommand.GetNetPriority(),
                                                                   serverURL + api.URN,
                                                                   System.Text.Encoding.UTF8.GetBytes(api.ToPostDataWithHash()),
                                                                   DownloadDataType.NetCommand.ToString());

        co.DidLoadDelegate = ConnectFinished(info);
    }
예제 #2
0
    // 通信終了時処理
    private Action <NetConnector> ConnectFinished(NetRequestInfo info)
    {
        return(delegate(NetConnector con) {
            m_requestQueue.RemoveAll(i => i.OrderID == info.OrderID);
            // TODO : View側のローティング演出やボタンロックなどがあればこのタイミングで解除しとくのが無難?

            var response = NetResponse.Create(info.Request.Command, con);
            if (response.IsConnectError)
            {
                // TODO : 通信エラー処理.
                return;
            }
            // TODO : 通信成功処理.他にもキャッシュ更新などを実装する.
            if (response.IsConnectError && !response.IsErrorResultCode)
            {
                info.Request.DidLoad(response);
            }
            m_bRequesting = false;
        });
    }
예제 #3
0
        private void Server_NewRequestReceived(NetSession session, NetRequestInfo requestInfo)
        {
            lock (_obj)
            {
                var packet = requestInfo.Packet;
                Console.WriteLine(packet);
                //var message = new Queue<NetPacket>();
                //if (!session._messages.TryGetValue(session._count, out message))
                //{
                //    Interlocked.Increment(ref session._count);
                //    session._messages.TryAdd(session._count, message);
                //}

                if (packet.PacketIndex == 1)
                {
                    Interlocked.Increment(ref session._count);
                    var message = new Queue <NetPacket>();
                    message.Enqueue(packet);
                    session._messages.TryAdd(session._count, message);
                }
                else
                {
                    var message = new Queue <NetPacket>();
                    if (session._messages.TryGetValue(session._count, out message))
                    {
                        message.Enqueue(packet);
                    }
                }
            }


            //var queue = new Queue<NetPacket>();
            //if (!_sessionDic.TryGetValue(session.SessionID, out queue))
            //    return;


            //if (packet.PacketCount == 1)
            //{
            //    if (packet.PacketIndex != 1)
            //        return;

            //    var type = (int)packet.Type;
            //    switch (type)
            //    {
            //        case 0:
            //            ProcessSingleText(session, packet);
            //            break;
            //        case 1:
            //            ProcessSingleFile(session, packet);
            //            break;
            //        default:
            //            ProcessSingleText(session, packet);
            //            break;
            //    }
            //}
            //else
            //{
            //    queue.Enqueue(packet);
            //    if (packet.PacketIndex == 1)
            //    {
            //        Task.Factory.StartNew(() =>
            //        {
            //            ProcessMultiplePackets(session);
            //        });
            //    }
            //}
        }