Ejemplo n.º 1
0
        public override void Write(CacheItemInfo info, byte[] data)
        {
            var fi = new FileItem(info);

            PriorityQueue.AddStorageWorkItem(() =>
            {
                lock (LockObject) {
                    for (int r = 0; r < WriteRetries; r++)
                    {
                        try {
                            FileItem.EnsurePath(IsoStore, fi.FileName);
                            using (Stream stream = IsoStore.OpenFile(fi.FileName, FileMode.Create, FileAccess.Write, FileShare.None)) {
                                stream.Write(data, 0, data.Length);
                                stream.Flush();
                            }
                            _cache[info.UniqueName] = info;
                            break;
                        }
                        catch (IsolatedStorageException) {
                            Debug.WriteLine("Exception writing file: Name={0}, Length={1}", fi.FileName, data.Length);
                            // These IsolatedStorageExceptions seem to happen at random,
                            // haven't yet found a repro.  So for the retry,
                            // if we failed, sleep for a bit and then try again.
                            //
                            Thread.Sleep(50);
                        }
                    }
                }
            });
        }
Ejemplo n.º 2
0
        public byte[] Read(string filename)
        {
            // Debug.WriteLine("Storage: Reading " + filename);

            byte[] bytes = new byte[] { };;
            // Opening for read only.
            try
            {
                if (IsoStore.FileExists(filename))
                {
                    using (var fileStream = IsoStore.OpenFile(filename, FileMode.Open, FileAccess.Read))
                    {
                        bytes = new byte[fileStream.Length];
                        fileStream.Read(bytes, 0, bytes.Length);
                    }
                }
            }
            catch (FileNotFoundException)
            {
            }
            catch (IsolatedStorageException)
            {
            }

            /*finally
             * {
             * }*/
            return(bytes);
        }
Ejemplo n.º 3
0
        public override byte[] Read(CacheItemInfo item)
        {
            var fi = new FileItem(item);

            byte[] bytes = null;

            lock (LockObject) {
                if (!IsoStore.FileExists(fi.FileName))
                {
                    return(null);
                }

                using (Stream stream = IsoStore.OpenFile(fi.FileName, FileMode.Open, FileAccess.Read, FileShare.Read)) {
                    bytes = new byte[stream.Length];
                    stream.Read(bytes, 0, (int)stream.Length);
                }
            }

            return(bytes);
        }
Ejemplo n.º 4
0
        public void Write(string filename, byte[] data)
        {
            using (var fileStream = IsoStore.OpenFile(filename, FileMode.Create, FileAccess.Write, FileShare.Write)) // IsoStore.CreateFile(filename))
            {
                try
                {
                    if (data != null && data.Length > 0)
                    {
                        Debug.WriteLine("Storage: Writing " + filename);

                        fileStream.Write(data, 0, data.Length);
                    }
                }
                catch
                {
                }
                //finally
                //{
                //fileStream.Close();
                //}
            }
        }