Ejemplo n.º 1
0
 private void Open(float lat, float lon)
 {
     CommitCacheRequired = false;
     SectorCached        = -1;
     Latitude            = (short)lat;
     Longitude           = (short)lon;
     lock (syncLock)
     {
         Transition(States.LOCKED_AND_SYNCING);
         if (File.Exists(FileName))
         {
             //STrace.Trace(typeof(GR2).FullName,2, "QTREE/GR2: Abriendo archivo " + FileName);
             using (var sw = File.OpenRead(FileName))
             {
                 var data = new byte[512];
                 sw.Read(data, 0, 512);
                 sw.Close();
                 unsafe
                 {
                     fixed(byte *ptrBuffer = &data[0])
                     {
                         Headers = (Gr2Headers)
                                   Marshal.PtrToStructure(new IntPtr(ptrBuffer),
                                                          typeof(Gr2Headers));
                     }
                 }
             }
             Transition(States.INSERVICE);
             return;
         }
         STrace.Debug(typeof(GR2).FullName, String.Format("QT0003: El archivo no existe. Ruta: {0}", FileName));
         Transition(States.FAILURE);
     }
 }
Ejemplo n.º 2
0
        private void Create(float lat, float lon)
        {
            CommitCacheRequired = false;
            SectorCached        = -1;
            Latitude            = (short)lat;
            Longitude           = (short)lon;
            Headers             = new Gr2Headers {
                Signature = "QF-v0.5",
                base_lat  = (short)lat,
                base_lon  = (short)lon,
                Revision  = 0,
                Status    = (char)1
            };

            lock (syncLock)
            {
                Transition(States.LOCKED_AND_SYNCING);
                if (!File.Exists(FileName))
                {
                    //STrace.Trace(typeof(GR2).FullName,2, "QTREE/GR2: Creando archivo de tamaño y layout.");
                    using (var sw = File.Create(FileName))
                    {
                        var data = new byte[512];
                        unsafe
                        {
                            fixed(byte *ptrBuffer = &data[0])
                            {
                                Marshal.StructureToPtr(Headers, new IntPtr(ptrBuffer), true);
                            }
                        }
                        sw.Write(data, 0, 512);
                        data = new byte[512];
                        for (var y = 0; y < 60; y++)
                        {
                            for (var x = 0; x < 60; x++)
                            {
                                sw.Write(data, 0, 512);
                            }
                        }

                        sw.Close();
                    }
                    Transition(States.INSERVICE);
                    return;
                }
                STrace.Debug(typeof(GR2).FullName, String.Format("QT0002: El archivo ya existe. Ruta: {0}", FileName));
                Transition(States.FAILURE);
            }
        }