Esempio n. 1
0
    public override void OnResponse(Msg.Code code, object o, object ctx)
    {
        Debug.Log("callback OnResponse: " + code + " " + o);
        switch (code)
        {
        case Msg.Code.GetUserInfo:
            var response = Msg.FromJson <GetUserInfo>(o.ToString());
            break;

        case Msg.Code.EnterStage:
            var r2 = Msg.FromJson <EnterStage>(o.ToString());
            Debug.Log(r2.ToJson());
            break;

        default:
            Debug.Log("default callback OnResponse: " + code + " " + o);
            break;
        }
    }
Esempio n. 2
0
 public virtual void OnResponse(Msg.Code code, object o, object ctx)
 {
 }
Esempio n. 3
0
 public override void OnResponse(Msg.Code code, object o, object ctx)
 {
     Console.WriteLine($"callback OnResponse: {code} {o}");
 }
Esempio n. 4
0
        public void SendGameRequest(Msg.Code code, long uid, object o = null, object ctx = null)
        {
            queue.Enqueue(() => {
                Stream dataStreamSend = null;
                WebResponse response  = null;
                StreamReader reader   = null;
                Stream dataStreamRecv = null;
                try
                {
                    var url = gameServerURL + "?uid=" + uid + "&code=" + (int)code;

                    HttpWebRequest request   = (HttpWebRequest)HttpWebRequest.Create(url);
                    request.Method           = "POST";
                    request.Timeout          = 3 * 1000;
                    request.ReadWriteTimeout = 3 * 1000;

                    byte[] byteArray = new byte[] { };
                    if (o != null)
                    {
                        byteArray = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(o));
                    }
                    request.ContentLength = byteArray.Length;
                    dataStreamSend        = request.GetRequestStream();
                    dataStreamSend.Write(byteArray, 0, byteArray.Length);
                    dataStreamSend.Close();
                    response                  = request.GetResponse();
                    dataStreamRecv            = response.GetResponseStream();
                    reader                    = new StreamReader(dataStreamRecv);
                    string responseFromServer = reader.ReadToEnd();
                    callback.OnResponse(code, responseFromServer, ctx);
                }
                catch (WebException ex)
                {
                    using (HttpWebResponse res = (HttpWebResponse)ex.Response)
                    {
                        switch (res.StatusCode)
                        {
                        case HttpStatusCode.BadRequest:
                        case HttpStatusCode.InternalServerError:
                            var errRet = Msg.MakeErrorResponse(code, uid, (int)Msg.Err.ErrSendFailure, res.ToString());

                            if (errRet == null)
                            {
                                callback.OnError(ex);
                            }
                            else
                            {
                                callback.OnResponse(code, errRet, ctx);
                            }

                            break;

                        default:
                            callback.OnError(ex);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    // shit happen ... 待处理
                    callback.OnError(ex);
                }
                finally
                {
                    if (dataStreamSend != null)
                    {
                        dataStreamSend.Close();
                    }
                    if (response != null)
                    {
                        response.Close();
                    }
                    if (reader != null)
                    {
                        reader.Close();
                    }
                    if (dataStreamRecv != null)
                    {
                        dataStreamRecv.Close();
                    }
                }
            });
        }
Esempio n. 5
0
 public void SendGameRequest(Msg.Code code, object o = null, object ctx = null)
 {
     SendGameRequest(code, this.UserId, o, ctx);
 }
Esempio n. 6
0
        /// <summary>
        /// Hanlder for application when some an custom event occours.
        /// </summary>
        /// <param name="opcode"></param>
        /// <param name="operand"></param>
        private void OnChatRoomEvent(Msg.Code opcode, object operand)
        {
            switch (opcode)
            {
            case Msg.Code.NewUser:
                string userName = operand as string;
                if (!listUsers.Items.Contains(userName))
                {
                    listUsers.Items.Add(userName);
                    txtRoom.SelectionStart  = txtRoom.Text.Length + 1;
                    txtRoom.SelectionColor  = Color.SteelBlue;
                    txtRoom.SelectionFont   = new Font("Tahoma", 8, FontStyle.Italic);
                    txtRoom.SelectionIndent = 0;
                    txtRoom.AppendText(@"'" + userName + "' has joined the conversation.\r\n");
                }
                break;

            case Msg.Code.UserLeft:
                userName = operand as string;
                if (listUsers.Items.Contains(userName)) // if user exist in list
                {
                    listUsers.Items.Remove(userName);
                    txtRoom.SelectionStart  = txtRoom.Text.Length + 1;
                    txtRoom.SelectionColor  = Color.SteelBlue;
                    txtRoom.SelectionFont   = new Font("Tahoma", 8, FontStyle.Italic);
                    txtRoom.SelectionIndent = 0;
                    txtRoom.AppendText(@"'" + userName + "' has left the conversation.\r\n");
                }
                break;

            case Msg.Code.Text:
            {
                Msg msg = Helper.FromByteBuffer(operand as byte[]) as Msg;
                if (msg == null)
                {
                    return;                  /// not a message maybe
                }
                if ((msg.To == null))
                {
                    txtRoom.SelectionStart = txtRoom.Text.Length + 1;
                    if (msg.From.CompareTo(_userName) == 0)
                    {
                        txtRoom.SelectionColor = Color.SteelBlue;
                    }
                    else
                    {
                        txtRoom.SelectionColor = Color.ForestGreen;
                    }
                    txtRoom.SelectionFont   = new Font("Tahoma", 9, FontStyle.Bold);
                    txtRoom.SelectionIndent = 0;
                    txtRoom.AppendText(msg.From + " says: \r\n");

                    txtRoom.SelectionStart  = txtRoom.Text.Length + 1;
                    txtRoom.SelectionColor  = Color.Black;
                    txtRoom.SelectionFont   = new Font("Tahoma", 9);
                    txtRoom.SelectionIndent = 10;
                    txtRoom.AppendText(msg.Data.ToString() + "\r\n");
                }
            }
            break;
            }
            txtRoom.ScrollToCaret();
        }
Esempio n. 7
0
 /// <summary>
 /// Hanlder for application when some an custom event occours.
 /// </summary>
 /// <param name="opcode"></param>
 /// <param name="operand"></param>
 private void OnAppEvent(object opcode, object operand)
 {
     Msg.Code code = (Msg.Code)opcode;
     this.Invoke(new OnChatRoomEventHandler(this.OnChatRoomEvent),
                 new object[] { code, operand });
 }
Esempio n. 8
0
        public static void deserialize_call(Msg.Code code, object s, object ctx)
        {
            string json = s.ToString();

            switch (code)
            {
            case Msg.Code.GetUserInfo:
            {
                var ret = Msg.FromJson <GetUserInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetUserInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.EnterStage:
            {
                var ret = Msg.FromJson <EnterStage>(json);
                var f   = ctx as rpc_callback <Ret <EnterStage> >;
                f(ret);
                break;
            }

            case Msg.Code.ExitStage:
            {
                var ret = Msg.FromJson <ExitStage>(json);
                var f   = ctx as rpc_callback <Ret <ExitStage> >;
                f(ret);
                break;
            }

            case Msg.Code.BattleStart:
            {
                var ret = Msg.FromJson <BattleStart>(json);
                var f   = ctx as rpc_callback <Ret <BattleStart> >;
                f(ret);
                break;
            }

            case Msg.Code.BattleEnd:
            {
                var ret = Msg.FromJson <BattleEnd>(json);
                var f   = ctx as rpc_callback <Ret <BattleEnd> >;
                f(ret);
                break;
            }

            case Msg.Code.EnterDungeon:
            {
                var ret = Msg.FromJson <EnterDungeon>(json);
                var f   = ctx as rpc_callback <Ret <EnterDungeon> >;
                f(ret);
                break;
            }

            case Msg.Code.ExitDungeon:
            {
                var ret = Msg.FromJson <ExitDungeon>(json);
                var f   = ctx as rpc_callback <Ret <ExitDungeon> >;
                f(ret);
                break;
            }

            case Msg.Code.Reborn:
            {
                var ret = Msg.FromJson <Reborn>(json);
                var f   = ctx as rpc_callback <Ret <Reborn> >;
                f(ret);
                break;
            }

            case Msg.Code.OpenBox:
            {
                var ret = Msg.FromJson <OpenBox>(json);
                var f   = ctx as rpc_callback <Ret <OpenBox> >;
                f(ret);
                break;
            }

            case Msg.Code.PickupLoot:
            {
                var ret = Msg.FromJson <PickupLoot>(json);
                var f   = ctx as rpc_callback <Ret <PickupLoot> >;
                f(ret);
                break;
            }

            case Msg.Code.Equip:
            {
                var ret = Msg.FromJson <Equip>(json);
                var f   = ctx as rpc_callback <Ret <Equip> >;
                f(ret);
                break;
            }

            case Msg.Code.Unequip:
            {
                var ret = Msg.FromJson <Unequip>(json);
                var f   = ctx as rpc_callback <Ret <Unequip> >;
                f(ret);
                break;
            }

            case Msg.Code.Craft:
            {
                var ret = Msg.FromJson <Craft>(json);
                var f   = ctx as rpc_callback <Ret <Craft> >;
                f(ret);
                break;
            }

            case Msg.Code.Decompose:
            {
                var ret = Msg.FromJson <Decompose>(json);
                var f   = ctx as rpc_callback <Ret <Decompose> >;
                f(ret);
                break;
            }

            case Msg.Code.Enhance:
            {
                var ret = Msg.FromJson <Enhance>(json);
                var f   = ctx as rpc_callback <Ret <Enhance> >;
                f(ret);
                break;
            }

            case Msg.Code.ConsumItem:
            {
                var ret = Msg.FromJson <ConsumItem>(json);
                var f   = ctx as rpc_callback <Ret <ConsumItem> >;
                f(ret);
                break;
            }

            case Msg.Code.ListOnSale:
            {
                var ret = Msg.FromJson <ListOnSale>(json);
                var f   = ctx as rpc_callback <Ret <ListOnSale> >;
                f(ret);
                break;
            }

            case Msg.Code.RefreshOnSale:
            {
                var ret = Msg.FromJson <RefreshOnSale>(json);
                var f   = ctx as rpc_callback <Ret <RefreshOnSale> >;
                f(ret);
                break;
            }

            case Msg.Code.Purchase:
            {
                var ret = Msg.FromJson <Purchase>(json);
                var f   = ctx as rpc_callback <Ret <Purchase> >;
                f(ret);
                break;
            }

            case Msg.Code.ListDiamondPrice:
            {
                var ret = Msg.FromJson <ListDiamondPrice>(json);
                var f   = ctx as rpc_callback <Ret <ListDiamondPrice> >;
                f(ret);
                break;
            }

            case Msg.Code.SubmitOrder:
            {
                var ret = Msg.FromJson <SubmitOrder>(json);
                var f   = ctx as rpc_callback <Ret <SubmitOrder> >;
                f(ret);
                break;
            }

            case Msg.Code.QueryOrderStatus:
            {
                var ret = Msg.FromJson <QueryOrderStatus>(json);
                var f   = ctx as rpc_callback <Ret <QueryOrderStatus> >;
                f(ret);
                break;
            }

            case Msg.Code.LevelUp:
            {
                var ret = Msg.FromJson <LevelUp>(json);
                var f   = ctx as rpc_callback <Ret <LevelUp> >;
                f(ret);
                break;
            }

            case Msg.Code.JobUpgrade:
            {
                var ret = Msg.FromJson <JobUpgrade>(json);
                var f   = ctx as rpc_callback <Ret <JobUpgrade> >;
                f(ret);
                break;
            }

            case Msg.Code.RuneEquip:
            {
                var ret = Msg.FromJson <RuneEquip>(json);
                var f   = ctx as rpc_callback <Ret <RuneEquip> >;
                f(ret);
                break;
            }

            case Msg.Code.RuneUnequip:
            {
                var ret = Msg.FromJson <RuneUnequip>(json);
                var f   = ctx as rpc_callback <Ret <RuneUnequip> >;
                f(ret);
                break;
            }

            case Msg.Code.ExpandBagCell:
            {
                var ret = Msg.FromJson <ExpandBagCell>(json);
                var f   = ctx as rpc_callback <Ret <ExpandBagCell> >;
                f(ret);
                break;
            }

            case Msg.Code.ExpandStashCell:
            {
                var ret = Msg.FromJson <ExpandStashCell>(json);
                var f   = ctx as rpc_callback <Ret <ExpandStashCell> >;
                f(ret);
                break;
            }

            case Msg.Code.MoveItemsBagToStash:
            {
                var ret = Msg.FromJson <MoveItemsBagToStash>(json);
                var f   = ctx as rpc_callback <Ret <MoveItemsBagToStash> >;
                f(ret);
                break;
            }

            case Msg.Code.MoveItemsStashToBag:
            {
                var ret = Msg.FromJson <MoveItemsStashToBag>(json);
                var f   = ctx as rpc_callback <Ret <MoveItemsStashToBag> >;
                f(ret);
                break;
            }

            case Msg.Code.MoveGoldBagToStash:
            {
                var ret = Msg.FromJson <MoveGoldBagToStash>(json);
                var f   = ctx as rpc_callback <Ret <MoveGoldBagToStash> >;
                f(ret);
                break;
            }

            case Msg.Code.MoveGoldStashToBag:
            {
                var ret = Msg.FromJson <MoveGoldStashToBag>(json);
                var f   = ctx as rpc_callback <Ret <MoveGoldStashToBag> >;
                f(ret);
                break;
            }

            case Msg.Code.DestroyItem:
            {
                var ret = Msg.FromJson <DestroyItem>(json);
                var f   = ctx as rpc_callback <Ret <DestroyItem> >;
                f(ret);
                break;
            }

            case Msg.Code.DestroyMultipleItem:
            {
                var ret = Msg.FromJson <DestroyMultipleItem>(json);
                var f   = ctx as rpc_callback <Ret <DestroyMultipleItem> >;
                f(ret);
                break;
            }

            case Msg.Code.DestroyItemsInStash:
            {
                var ret = Msg.FromJson <DestroyItemsInStash>(json);
                var f   = ctx as rpc_callback <Ret <DestroyItemsInStash> >;
                f(ret);
                break;
            }

            case Msg.Code.SortItemsInBag:
            {
                var ret = Msg.FromJson <SortItemsInBag>(json);
                var f   = ctx as rpc_callback <Ret <SortItemsInBag> >;
                f(ret);
                break;
            }

            case Msg.Code.SortItemsInStash:
            {
                var ret = Msg.FromJson <SortItemsInStash>(json);
                var f   = ctx as rpc_callback <Ret <SortItemsInStash> >;
                f(ret);
                break;
            }

            case Msg.Code.RefreshDiamond:
            {
                var ret = Msg.FromJson <RefreshDiamond>(json);
                var f   = ctx as rpc_callback <Ret <RefreshDiamond> >;
                f(ret);
                break;
            }

            case Msg.Code.GetUserStatInfo:
            {
                var ret = Msg.FromJson <GetUserStatInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetUserStatInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.UserRename:
            {
                var ret = Msg.FromJson <UserRename>(json);
                var f   = ctx as rpc_callback <Ret <UserRename> >;
                f(ret);
                break;
            }

            case Msg.Code.PresentRedeemCode:
            {
                var ret = Msg.FromJson <PresentRedeemCode>(json);
                var f   = ctx as rpc_callback <Ret <PresentRedeemCode> >;
                f(ret);
                break;
            }

            case Msg.Code.ListNoticeInfo:
            {
                var ret = Msg.FromJson <ListNoticeInfo>(json);
                var f   = ctx as rpc_callback <Ret <ListNoticeInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.ConfirmNoticeInfo:
            {
                var ret = Msg.FromJson <ConfirmNoticeInfo>(json);
                var f   = ctx as rpc_callback <Ret <ConfirmNoticeInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.DeleteNoticeInfo:
            {
                var ret = Msg.FromJson <DeleteNoticeInfo>(json);
                var f   = ctx as rpc_callback <Ret <DeleteNoticeInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.MarkAsReadNoticeInfo:
            {
                var ret = Msg.FromJson <MarkAsReadNoticeInfo>(json);
                var f   = ctx as rpc_callback <Ret <MarkAsReadNoticeInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.GetExploreInfo:
            {
                var ret = Msg.FromJson <GetExploreInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetExploreInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.AddExploreChargeCount:
            {
                var ret = Msg.FromJson <AddExploreChargeCount>(json);
                var f   = ctx as rpc_callback <Ret <AddExploreChargeCount> >;
                f(ret);
                break;
            }

            case Msg.Code.ReduceExploreTime:
            {
                var ret = Msg.FromJson <ReduceExploreTime>(json);
                var f   = ctx as rpc_callback <Ret <ReduceExploreTime> >;
                f(ret);
                break;
            }

            case Msg.Code.ExploreStart:
            {
                var ret = Msg.FromJson <ExploreStart>(json);
                var f   = ctx as rpc_callback <Ret <ExploreStart> >;
                f(ret);
                break;
            }

            case Msg.Code.ExploreViewAward:
            {
                var ret = Msg.FromJson <ExploreViewAward>(json);
                var f   = ctx as rpc_callback <Ret <ExploreViewAward> >;
                f(ret);
                break;
            }

            case Msg.Code.ExploreEnd:
            {
                var ret = Msg.FromJson <ExploreEnd>(json);
                var f   = ctx as rpc_callback <Ret <ExploreEnd> >;
                f(ret);
                break;
            }

            case Msg.Code.PuzzleStart:
            {
                var ret = Msg.FromJson <PuzzleStart>(json);
                var f   = ctx as rpc_callback <Ret <PuzzleStart> >;
                f(ret);
                break;
            }

            case Msg.Code.PuzzleUpdateProcess:
            {
                var ret = Msg.FromJson <PuzzleUpdateProcess>(json);
                var f   = ctx as rpc_callback <Ret <PuzzleUpdateProcess> >;
                f(ret);
                break;
            }

            case Msg.Code.PuzzleEnd:
            {
                var ret = Msg.FromJson <PuzzleEnd>(json);
                var f   = ctx as rpc_callback <Ret <PuzzleEnd> >;
                f(ret);
                break;
            }

            case Msg.Code.ActiveNewCharacter:
            {
                var ret = Msg.FromJson <ActiveNewCharacter>(json);
                var f   = ctx as rpc_callback <Ret <ActiveNewCharacter> >;
                f(ret);
                break;
            }

            case Msg.Code.KillCharacter:
            {
                var ret = Msg.FromJson <KillCharacter>(json);
                var f   = ctx as rpc_callback <Ret <KillCharacter> >;
                f(ret);
                break;
            }

            case Msg.Code.GetDungeonRankingInfo:
            {
                var ret = Msg.FromJson <GetDungeonRankingInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetDungeonRankingInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.GetDungeonRankingList:
            {
                var ret = Msg.FromJson <GetDungeonRankingList>(json);
                var f   = ctx as rpc_callback <Ret <GetDungeonRankingList> >;
                f(ret);
                break;
            }

            case Msg.Code.GetPersonalRankingInfo:
            {
                var ret = Msg.FromJson <GetPersonalRankingInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetPersonalRankingInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.GetPersonalRankingList:
            {
                var ret = Msg.FromJson <GetPersonalRankingList>(json);
                var f   = ctx as rpc_callback <Ret <GetPersonalRankingList> >;
                f(ret);
                break;
            }

            case Msg.Code.GetThreadComment:
            {
                var ret = Msg.FromJson <GetThreadComment>(json);
                var f   = ctx as rpc_callback <Ret <GetThreadComment> >;
                f(ret);
                break;
            }

            case Msg.Code.GetThreadHotComment:
            {
                var ret = Msg.FromJson <GetThreadHotComment>(json);
                var f   = ctx as rpc_callback <Ret <GetThreadHotComment> >;
                f(ret);
                break;
            }

            case Msg.Code.GetHeroThreadId:
            {
                var ret = Msg.FromJson <GetHeroThreadId>(json);
                var f   = ctx as rpc_callback <Ret <GetHeroThreadId> >;
                f(ret);
                break;
            }

            case Msg.Code.PostComment:
            {
                var ret = Msg.FromJson <PostComment>(json);
                var f   = ctx as rpc_callback <Ret <PostComment> >;
                f(ret);
                break;
            }

            case Msg.Code.PraiseThread:
            {
                var ret = Msg.FromJson <PraiseThread>(json);
                var f   = ctx as rpc_callback <Ret <PraiseThread> >;
                f(ret);
                break;
            }

            case Msg.Code.PraiseComment:
            {
                var ret = Msg.FromJson <PraiseComment>(json);
                var f   = ctx as rpc_callback <Ret <PraiseComment> >;
                f(ret);
                break;
            }

            case Msg.Code.GetUserProperties:
            {
                var ret = Msg.FromJson <GetUserProperties>(json);
                var f   = ctx as rpc_callback <Ret <GetUserProperties> >;
                f(ret);
                break;
            }

            case Msg.Code.SetUserProperties:
            {
                var ret = Msg.FromJson <SetUserProperties>(json);
                var f   = ctx as rpc_callback <Ret <SetUserProperties> >;
                f(ret);
                break;
            }

            case Msg.Code.GetAchievementAward:
            {
                var ret = Msg.FromJson <GetAchievementAward>(json);
                var f   = ctx as rpc_callback <Ret <GetAchievementAward> >;
                f(ret);
                break;
            }

            case Msg.Code.GetOperationActivityInfo:
            {
                var ret = Msg.FromJson <GetOperationActivityInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetOperationActivityInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.GetActivtyAwardFisrtPay:
            {
                var ret = Msg.FromJson <GetActivtyAwardFisrtPay>(json);
                var f   = ctx as rpc_callback <Ret <GetActivtyAwardFisrtPay> >;
                f(ret);
                break;
            }

            case Msg.Code.GetActivtyAwardSignInFirst7Day:
            {
                var ret = Msg.FromJson <GetActivtyAwardSignInFirst7Day>(json);
                var f   = ctx as rpc_callback <Ret <GetActivtyAwardSignInFirst7Day> >;
                f(ret);
                break;
            }

            case Msg.Code.GetActivtyAwardSignIn30Day:
            {
                var ret = Msg.FromJson <GetActivtyAwardSignIn30Day>(json);
                var f   = ctx as rpc_callback <Ret <GetActivtyAwardSignIn30Day> >;
                f(ret);
                break;
            }

            case Msg.Code.GetDungeonRule1:
            {
                var ret = Msg.FromJson <GetDungeonRule1>(json);
                var f   = ctx as rpc_callback <Ret <GetDungeonRule1> >;
                f(ret);
                break;
            }

            case Msg.Code.GetDungeonRule2:
            {
                var ret = Msg.FromJson <GetDungeonRule2>(json);
                var f   = ctx as rpc_callback <Ret <GetDungeonRule2> >;
                f(ret);
                break;
            }

            case Msg.Code.UseItem:
            {
                var ret = Msg.FromJson <UseItem>(json);
                var f   = ctx as rpc_callback <Ret <UseItem> >;
                f(ret);
                break;
            }

            case Msg.Code.GetVipInfo:
            {
                var ret = Msg.FromJson <GetVipInfo>(json);
                var f   = ctx as rpc_callback <Ret <GetVipInfo> >;
                f(ret);
                break;
            }

            case Msg.Code.VipYueKaMaterialGetAward:
            {
                var ret = Msg.FromJson <VipYueKaMaterialGetAward>(json);
                var f   = ctx as rpc_callback <Ret <VipYueKaMaterialGetAward> >;
                f(ret);
                break;
            }

            case Msg.Code.PayGetCallbackUrl:
            {
                var ret = Msg.FromJson <PayGetCallbackUrl>(json);
                var f   = ctx as rpc_callback <Ret <PayGetCallbackUrl> >;
                f(ret);
                break;
            }

            case Msg.Code.PayPrepare:
            {
                var ret = Msg.FromJson <PayPrepare>(json);
                var f   = ctx as rpc_callback <Ret <PayPrepare> >;
                f(ret);
                break;
            }

            case Msg.Code.PayVerifyReceipt:
            {
                var ret = Msg.FromJson <PayVerifyReceipt>(json);
                var f   = ctx as rpc_callback <Ret <PayVerifyReceipt> >;
                f(ret);
                break;
            }

            case Msg.Code.PayAppleVerifyReceipt:
            {
                var ret = Msg.FromJson <PayAppleVerifyReceipt>(json);
                var f   = ctx as rpc_callback <Ret <PayAppleVerifyReceipt> >;
                f(ret);
                break;
            }

            case Msg.Code.PayVerifyOrder:
            {
                var ret = Msg.FromJson <PayVerifyOrder>(json);
                var f   = ctx as rpc_callback <Ret <PayVerifyOrder> >;
                f(ret);
                break;
            }

            case Msg.Code.PayListOrder:
            {
                var ret = Msg.FromJson <PayListOrder>(json);
                var f   = ctx as rpc_callback <Ret <PayListOrder> >;
                f(ret);
                break;
            }

            case Msg.Code.PayGooglePurchase:
            {
                var ret = Msg.FromJson <PayGooglePurchase>(json);
                var f   = ctx as rpc_callback <Ret <PayGooglePurchase> >;
                f(ret);
                break;
            }

            case Msg.Code.PayGoogleConsume:
            {
                var ret = Msg.FromJson <PayGoogleConsume>(json);
                var f   = ctx as rpc_callback <Ret <PayGoogleConsume> >;
                f(ret);
                break;
            }

            case Msg.Code.AccountLogin:
            {
                var ret = Msg.FromJson <AccountLogin>(json);
                var f   = ctx as rpc_callback <Ret <AccountLogin> >;
                f(ret);
                break;
            }

            case Msg.Code.AccountLogout:
            {
                var ret = Msg.FromJson <AccountLogout>(json);
                var f   = ctx as rpc_callback <Ret <AccountLogout> >;
                f(ret);
                break;
            }

            case Msg.Code.GM_ActivateUser:
            {
                var ret = Msg.FromJson <GM_ActivateUser>(json);
                var f   = ctx as rpc_callback <Ret <GM_ActivateUser> >;
                f(ret);
                break;
            }

            case Msg.Code.GM_ResetUser:
            {
                var ret = Msg.FromJson <GM_ResetUser>(json);
                var f   = ctx as rpc_callback <Ret <GM_ResetUser> >;
                f(ret);
                break;
            }

            case Msg.Code.GM_CreateItem:
            {
                var ret = Msg.FromJson <GM_CreateItem>(json);
                var f   = ctx as rpc_callback <Ret <GM_CreateItem> >;
                f(ret);
                break;
            }

            case Msg.Code.GM_SetMyMoney:
            {
                var ret = Msg.FromJson <GM_SetMyMoney>(json);
                var f   = ctx as rpc_callback <Ret <GM_SetMyMoney> >;
                f(ret);
                break;
            }

            case Msg.Code.GM_ResetJob:
            {
                var ret = Msg.FromJson <GM_ResetJob>(json);
                var f   = ctx as rpc_callback <Ret <GM_ResetJob> >;
                f(ret);
                break;
            }

            case Msg.Code.GM_SetVipInfo:
            {
                var ret = Msg.FromJson <GM_SetVipInfo>(json);
                var f   = ctx as rpc_callback <Ret <GM_SetVipInfo> >;
                f(ret);
                break;
            }

            default:
            {
                throw new System.Exception("Network: no such msg code: " + code.ToString());
            }
            }
        }