Esempio n. 1
0
        private Stream OpenStream(string filePath, FileMode fmode, StreamAccess access, StreamShare share, int _)
        {
            var faccess = FileAccess.Read;

            switch (access)
            {
            case StreamAccess.Read: faccess = FileAccess.Read; break;

            case StreamAccess.ReadWrite: faccess = FileAccess.ReadWrite; break;

            case StreamAccess.Write: faccess = FileAccess.Write; break;
            }

            FileShare fshare = FileShare.None;

            switch (share)
            {
            case StreamShare.None: fshare = FileShare.None; break;

            case StreamShare.Read: fshare = FileShare.Read; break;

            case StreamShare.ReadWrite: fshare = FileShare.ReadWrite; break;

            case StreamShare.Write: fshare = FileShare.Write; break;
            }

            return(File.Open(filePath, fmode, faccess, fshare));
        }
Esempio n. 2
0
 public RetryStream(RetryStreamConfig _owner, string _path, StreamAccess _access)
 {
     owner  = _owner;
     path   = _path;
     access = _access;
     str    = CreateNetworkStream();
 }
        public override IBStream CreateStream(string path, StreamAccess access)
        {
            FileStream fs = new FileStream(LocalRoot + path, FileMode.OpenOrCreate,
                                           access == StreamAccess.Read ? FileAccess.Read : FileAccess.ReadWrite,
                                           access == StreamAccess.Read ? FileShare.ReadWrite : FileShare.Read, 1);

            return(new LocalStream(fs, password));
        }
Esempio n. 4
0
            public static void Save(IValueSink sink, StreamAccess value)
            {
                sink.EnterSequence();
                Value <int> .Save(sink, value.FileStartPosition);

                Value <byte[]> .Save(sink, value.FileData);

                sink.LeaveSequence();
            }
            public static void Save(IValueSink sink, StreamAccess value)
            {
                sink.EnterSequence();
                Value <int> .Save(sink, value.FileStartPosition);

                Value <uint> .Save(sink, value.RequestedOctetCount);

                sink.LeaveSequence();
            }
Esempio n. 6
0
 public CheckStreamAccessCompleted(Guid correlationId, string eventStreamId, long?transactionId,
                                   StreamAccessType accessType, StreamAccess accessResult)
 {
     CorrelationId = correlationId;
     EventStreamId = eventStreamId;
     TransactionId = transactionId;
     AccessType    = accessType;
     AccessResult  = accessResult;
 }
Esempio n. 7
0
        public CreateStreamResult CreateStream(string name, StreamAccess access, StreamShare share, int bufferSize)
        {
            var filePath = Path.Combine(SystemPath, name);
            var fs       = OpenStream(filePath, FileMode.Create, access, share, bufferSize);
            var ret      = new CreateStreamResult()
            {
                EntryBase = StorageProviderEntryFromPath(filePath),
                Stream    = fs
            };

            return(ret);
        }
Esempio n. 8
0
    public override IBStream CreateStream(string path, StreamAccess access)
    {
        //one remote connection each file; each remote connection has its own inner cache,
        //two connections for one file, some cache will not update automatically.
        RetryStream o;

        if (dict.TryGetValue(path, out o))
        {
            return(o);
        }
        o = new RetryStream(this, BoxFileStreamConfig.RootPath + path, access);
        dict.Add(path, o);
        return(o);
    }
Esempio n. 9
0
        public override IBStream CreateStream(string path, StreamAccess access)
        {
            IRandomAccessStream s;

            if (!streams.TryGetValue(path, out s))
            {
                var x = ApplicationData.Current.LocalFolder.CreateFileAsync(path, Windows.Storage.CreationCollisionOption.OpenIfExists).AsTask();
                x.Wait();
                var y = x.Result.OpenAsync(FileAccessMode.ReadWrite).AsTask();
                y.Wait();
                s = y.Result;
                streams.Add(path, s);
            }
            return(new LocalStream(s));
        }
Esempio n. 10
0
        public Stream OpenStream(Uri uri, StreamMode mode, StreamAccess access, StreamShare share, int bufferSize)
        {
            var fmode = FileMode.Append;

            switch (mode)
            {
            case StreamMode.Append: fmode = FileMode.Append; break;

            case StreamMode.Open: fmode = FileMode.Open; break;

            case StreamMode.Truncate: fmode = FileMode.Truncate; break;
            }

            var filePath = PathFromUri(uri);

            return(OpenStream(filePath, fmode, access, share, bufferSize));
        }
        public Stream OpenStream(Uri uri, StreamMode mode, StreamAccess access, StreamShare share, int bufferSize)
        {
            if (uri is null)
            {
                throw new ArgumentNullException(nameof(uri));
            }

            if (mode != StreamMode.Open)
            {
                throw new NotSupportedException($"ZipStorgeProvider does not support mode: {mode}");
            }

            lock (_zipArchive)
            {
                var path   = PathFromUri(uri);
                var stream = _zipArchive.GetEntry(path).Open();
                return(stream);
            }
        }
Esempio n. 12
0
        public CreateStreamResult CreateStream(string name, StreamAccess access, StreamShare share, int bufferSize = 0)
        {
            var resolver   = Context.ContentResolver;
            var androidUri = DocumentsContract.CreateDocument(resolver, AndroidUri, null, name);
            var fs         = OpenStream(androidUri, StreamMode.Open, access, share, bufferSize);
            var ret        = new CreateStreamResult()
            {
                Stream    = fs,
                EntryBase = new StorageEntryBase
                {
                    Name          = name,
                    LastWriteTime = DateTime.Now,
                    Size          = 0,
                    IsStorage     = false,
                    Uri           = AndroidUriToUri(androidUri)
                }
            };

            return(ret);
        }
Esempio n. 13
0
 public Stream OpenStream(Uri uri, StreamMode mode, StreamAccess access, StreamShare share, int bufferSize = 0)
 {
     return(OpenStream(AndroidUriFromChildNetUri(uri), mode, access, share, bufferSize));
 }
Esempio n. 14
0
 public static void Save(IValueSink sink, StreamAccess value)
 {
     sink.EnterSequence();
     Value<int>.Save(sink, value.FileStartPosition);
     Value<uint>.Save(sink, value.RequestedOctetCount);
     sink.LeaveSequence();
 }
Esempio n. 15
0
 public static void Save(IValueSink sink, StreamAccess value)
 {
     sink.EnterSequence();
     Value<int>.Save(sink, value.FileStartPosition);
     Value<byte[]>.Save(sink, value.FileData);
     sink.LeaveSequence();
 }
Esempio n. 16
0
 public CreateStreamResult CreateStream(string name, StreamAccess access, StreamShare share, int bufferSize) => throw new NotSupportedException();
Esempio n. 17
0
        private Stream OpenStream(Android.Net.Uri androidUri, StreamMode mode, StreamAccess access, StreamShare _, int bufferSize = 0)
        {
            if (access == StreamAccess.ReadWrite)
            {
                throw new ArgumentException("StreamMode.ReadWrite does not support!");
            }


            var    resolver   = Context.ContentResolver;
            string streamMode = "";

            if (bufferSize == 0)
            {
                bufferSize = 4096;
            }

            switch (mode)
            {
            case StreamMode.Append:
                if (access == StreamAccess.Read)
                {
                    throw new ArgumentException("StreamMode.Append only support StreamAccess.write access.");
                }
                if (access == StreamAccess.Write)
                {
                    streamMode = "wa";
                }
                if (access == StreamAccess.ReadWrite)
                {
                    throw new ArgumentException("StreamMode.Append only support StreamAccess.write access.");
                }
                break;

            case StreamMode.Open:
                if (access == StreamAccess.Read)
                {
                    streamMode = "r";
                }
                if (access == StreamAccess.Write)
                {
                    streamMode = "rw";                                   //rw instead w; because w does not support seek
                }
                break;

            case StreamMode.Truncate:
                if (access == StreamAccess.Read)
                {
                    throw new ArgumentException("StreamMode.Truncate does not support StreamAccess.read access.");
                }
                if (access == StreamAccess.ReadWrite)
                {
                    throw new ArgumentException("StreamMode.Truncate does not support StreamAccess.readWrite access.");
                }
                if (access == StreamAccess.Write)
                {
                    streamMode = "rwt";
                }
                break;
            }


            var parcelFD = resolver.OpenFileDescriptor(androidUri, streamMode);
            var stream   = new ChannelStream(parcelFD, streamMode);
            var ret      = (Stream) new BufferedStream(stream, bufferSize);

            return(ret);
        }