public void ConstructorMustSerializeExceptionWhenExceptionIsBeingSerialized()
        {
            NotFoundException exception = new NotFoundException("Test");

            using MemoryStream stream = new MemoryStream();
            Assert.Equal("Test", FormatterHelper.Deserialize <NotFoundException>(new BinaryFormatter(), FormatterHelper.Serialize(new BinaryFormatter(), stream, exception)).Message);
        }
Пример #2
0
        public global::MagicSpritz.IAction Deserialize(byte[] bytes, int offset, global::MessagePack.IFormatterResolver formatterResolver, out int readSize)
        {
            if (global::MessagePack.MessagePackBinary.IsNil(bytes, offset))
            {
                readSize = 1;
                return(null);
            }

            return(FormatterHelper.Deserialize(bytes, offset, formatterResolver, out readSize));
        }
Пример #3
0
    private void ReceiveAudio(byte[] bytes)
    {
        //反序列化
        M_AudioClip mac = (M_AudioClip)FormatterHelper.Deserialize(bytes);
        //生成新的声音片段
        AudioClip ac = AudioClip.Create("s", mac.length, 1, mac.frequency, false);

        //float数组转audioclip
        ac.SetData(mac.audioData, 0);
        //播放
        audioSource.clip = ac;
        audioSource.Play();
    }
Пример #4
0
 private void Work(object obj)
 {
     try
     {
         var        paras     = obj as object[];
         IPEndPoint remoteIP  = paras[0] as IPEndPoint;
         byte[]     msgBuffer = paras[1] as byte[];
         byte[]     buffer    = null;
         object     msgObj    = FormatterHelper.Deserialize(msgBuffer);
         if (msgObj is LoginMessage)
         {
             LoginMessage         lginMsg              = (LoginMessage)msgObj;
             IPEndPoint           userEndPoint         = new IPEndPoint(remoteIP.Address, remoteIP.Port);
             User                 user                 = new User(lginMsg.UserName, userEndPoint);
             OnFriendLoginMessage onFriendLoginMessage = new OnFriendLoginMessage(user);
             buffer = FormatterHelper.Serialize(onFriendLoginMessage);
             foreach (User item in userList)
             {
                 server.Send(buffer, buffer.Length, item.NetPoint);
             }
             if (!userList.Contain(user))
             {
                 userList.Add(user);
             }
             // 发送应答消息
             OnLoginMessage onloginmsg = new OnLoginMessage(userList);
             buffer = FormatterHelper.Serialize(onloginmsg);
             server.Send(buffer, buffer.Length, remoteIP);
         }
         else if (msgObj is LogoutMessage)
         {
             P2P.WellKnown.C2S.LogoutMessage lgoutMsg = (P2P.WellKnown.C2S.LogoutMessage)msgObj;
             User lgoutUser = userList.Find(lgoutMsg.UserName);
             if (lgoutUser != null)
             {
                 userList.Remove(lgoutUser);
             }
         }
         else if (msgObj is P2P.WellKnown.C2S.DownLoadMessage)
         {
             //DownLoadMessage downLoadMessage = msgObj as DownLoadMessage;
             //UdpTranferFile.UdpSendFile udpSendFile = new UdpTranferFile.UdpSendFile(remoteIP.Address.ToString(), downLoadMessage.Port, 2280);
             //udpSendFile.Start();
             //UdpTranferFile.SendFileManager sendFileManager = new UdpTranferFile.SendFileManager(downLoadMessage.FileName);
             //if (udpSendFile.CanSend(sendFileManager))
             //{
             //    udpSendFile.SendFile(sendFileManager, null);
             //}
             //else
             //{
             //    //MessageBox.Show("文件正在发送,不能发送重复的文件。");
             //}
         }
         else if (msgObj is GetUsersMessage)
         {
             GetUsersResponseMessage srvResMsg = new GetUsersResponseMessage(userList);
             buffer = FormatterHelper.Serialize(srvResMsg);
             foreach (User user in userList)
             {
                 server.Send(buffer, buffer.Length, user.NetPoint);
             }
         }
         else if (msgObj is MassMsg)
         {
             ResetInterval();
             this.SendToEveryBody();
         }
         else if (msgObj is TranslateMessage)
         {
             P2P.WellKnown.C2S.TranslateMessage transMsg = (P2P.WellKnown.C2S.TranslateMessage)msgObj;
             User toUser = userList.Find(transMsg.ToUserName);
             // 转发Purch Hole请求消息
             if (toUser == null)
             {
                 //Console.WriteLine("Remote host {0} cannot be found at index server", transMsg.ToUserName);
             }
             else
             {
                 SomeOneCallYouMessage transMsg2 = new SomeOneCallYouMessage(remoteIP);
                 buffer = FormatterHelper.Serialize(transMsg);
                 server.Send(buffer, buffer.Length, toUser.NetPoint);
             }
         }
     }
     catch (Exception)
     {
     }
 }