Exemplo n.º 1
0
        public void Test_unPackFileOpen()
        {
            List <byte> blist = new List <byte> {
                0x0A, 0x00, 0x00, 0x00, 0x78, 0x56, 0x34, 0x12
            };
            uint address = RemoteFileUtil.unPackFileOpen(blist, "<");

            Assert.AreEqual(address, (uint)0x12345678);

            try
            {
                List <byte> blist2 = new List <byte> {
                    0x0B, 0x00, 0x00, 0x00, 0x78, 0x56, 0x34, 0x12
                };
                address = RemoteFileUtil.unPackFileOpen(blist2, "<");
                Assert.Fail("An exception should have been thrown");
            }
            catch (ArgumentException ae)
            {
                Assert.AreEqual(true, (ae.Message.Length > 0));
            }
            catch (Exception e)
            {
                Assert.Fail(
                    string.Format("Unexpected exception of type {0} caught: {1}",
                                  e.GetType(), e.Message)
                    );
            }
        }
Exemplo n.º 2
0
 protected override void _processCmd(List <byte> data)
 {
     if (data.Count >= 4)
     {
         uint cmd = BitConverter.ToUInt32(data.GetRange(0, 4).ToArray(), 0);
         if (cmd == RemoteFile.Constants.RMF_CMD_FILE_INFO)
         {
             RemoteFile.File remoteFile = RemoteFileUtil.unPackFileInfo(data);
             for (int i = 0; i < requestedFiles.Count; i++)
             {
                 if (requestedFiles[i].name == remoteFile.name)
                 {
                     requestedFiles[i].address    = remoteFile.address;
                     requestedFiles[i].fileType   = remoteFile.fileType;
                     requestedFiles[i].digestType = remoteFile.digestType;
                     requestedFiles[i].digestData = remoteFile.digestData;
                     requestedFiles[i].open();
                     remoteFileMap.insert(requestedFiles[i]);
                     Msg msg = new Msg(RemoteFile.Constants.RMF_MSG_FILEOPEN, 0, 0, requestedFiles[i].address);
                     requestedFiles.RemoveAt(i);
                     msgQueue.Add(msg);
                 }
                 else
                 {
                     remoteFileMap.insert(remoteFile);
                 }
             }
         }
         else if (cmd == RemoteFile.Constants.RMF_CMD_FILE_OPEN)
         {
             uint address = RemoteFileUtil.unPackFileOpen(data, "<");
             Console.WriteLine("received open command, address: " + address);
             Apx.File file = localFileMap.findByAddress(address);
             if (file != null)
             {
                 Console.WriteLine("received open command, name: " + file.name);
                 file.open();
                 List <byte> fileContent = file.read(0, (int)file.length);
                 if (fileContent.Count > 0)
                 {
                     Msg msg = new Msg(RemoteFile.Constants.RMF_MSG_WRITE_DATA, file.address, 0, fileContent);
                     msgQueue.Add(msg);
                 }
             }
         }
         else if (cmd == RemoteFile.Constants.RMF_CMD_FILE_CLOSE)
         {
             throw new NotImplementedException();
         }
         else
         {
             throw new ArgumentException("Unknown command, cannot process");
         }
     }
     else
     {
         throw new ArgumentException("too short command to proccess");
     }
 }