Exemple #1
0
            public void send(Queue <byte[]> sendData)
            {
                //Stopwatch sw = new Stopwatch(); // test

                //sw.Reset();
                //sw.Start();
                using (MutexObject.section(_mutex))
                {
                    //sw.Stop();
                    //laps.Add(sw.Elapsed.TotalMilliseconds);
                    //sw.Reset();
                    //sw.Start();
                    getMessageRange();
                    //sw.Stop();
                    //laps.Add(sw.Elapsed.TotalMilliseconds);
                    //sw.Reset();
                    //sw.Start();
                    tryRenumber();
                    //sw.Stop();
                    //laps.Add(sw.Elapsed.TotalMilliseconds);
                    //sw.Reset();
                    //sw.Start();

                    if (_gmrLastNo == -1)
                    {
                        FileTools.deletePath(_messageDir);
                        Directory.CreateDirectory(_messageDir);
                    }
                    //sw.Stop();
                    //laps.Add(sw.Elapsed.TotalMilliseconds);
                    //sw.Reset();
                    //sw.Start();
                    using (FileStream wfs = new FileStream(
                               Path.Combine(_messageDir, StringTools.zPad(_gmrLastNo + 1, 4)),
                               FileMode.Create,
                               FileAccess.Write
                               ))
                        foreach (byte[] block in sendData)
                        {
                            wfs.Write(block, 0, block.Length);
                        }
                    //sw.Stop();
                    //laps.Add(sw.Elapsed.TotalMilliseconds);
                    //sw.Reset();
                    //sw.Start();
                }
                //sw.Stop();
                //laps.Add(sw.Elapsed.TotalMilliseconds);
                //sw.Reset();
                //sw.Start();
                _messagePostEvent.set();
                //sw.Stop();
                //laps.Add(sw.Elapsed.TotalMilliseconds);
            }
Exemple #2
0
 private void renumber()
 {
     for (int no = _gmrFirstNo; no <= _gmrLastNo; no++)
     {
         File.Move(
             Path.Combine(_messageDir, StringTools.zPad(no, 4)),
             Path.Combine(_messageDir, StringTools.zPad(no - _gmrFirstNo, 4))
             );
     }
     _gmrLastNo -= _gmrFirstNo;
     _gmrFirstNo = 0;
 }
Exemple #3
0
        public static string getTMP()
        {
            if (_tmp == null)
            {
                string tmp = getTMP_envName("TMP");

                if (tmp == null)
                {
                    tmp = getTMP_envName("TEMP");

                    if (tmp == null)
                    {
                        tmp = getTMP_envName("ProgramData");

                        if (tmp == null)
                        {
                            throw null;
                        }

                        // 書き込みテスト -- ProgramDataってゲストでも書けるっぽい。
                        {
                            string dir = Path.Combine(tmp, StringTools.getUUID() + "_test");

                            Directory.CreateDirectory(dir);
                            Directory.Delete(dir);
                        }
                    }
                }
                tmp = Path.Combine(tmp, Program.APP_IDENT) + ".tmp";

                for (int c = 0; ; c++)
                {
                    string trialTmp = Path.Combine(tmp, StringTools.zPad(c, 4));

                    if (Directory.Exists(trialTmp) == false)
                    {
                        tmp = trialTmp;
                        break;
                    }
                }
                Directory.CreateDirectory(tmp);
                _tmp = tmp;
            }
            return(_tmp);
        }
Exemple #4
0
            private byte[] tryRecv()
            {
                using (MutexObject.section(_mutex))
                {
                    getMessageRange();

                    if (_gmrFirstNo != -1)
                    {
                        String file     = Path.Combine(_messageDir, StringTools.zPad(_gmrFirstNo, 4));
                        byte[] recvData = File.ReadAllBytes(file);

                        FileTools.deletePath(file);

                        if (_gmrFirstNo == _gmrLastNo)
                        {
                            FileTools.deletePath(_messageDir);
                        }

                        return(recvData);
                    }
                }
                return(null);
            }