01: /* Licensed to the Apache Software Foundation (ASF) under one or more
02: * contributor license agreements. See the NOTICE file distributed with
03: * this work for additional information regarding copyright ownership.
04: * The ASF licenses this file to You under the Apache License, Version 2.0
05: * (the "License"); you may not use this file except in compliance with
06: * the License. You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.apache.harmony.nio;
18:
19: import java.nio.channels.FileChannel;
20:
21: import org.apache.harmony.nio.internal.ReadOnlyFileChannel;
22: import org.apache.harmony.nio.internal.ReadWriteFileChannel;
23: import org.apache.harmony.nio.internal.WriteOnlyFileChannel;
24: import org.apache.harmony.nio.internal.nls.Messages;
25: import org.apache.harmony.luni.platform.IFileSystem;
26:
27: /**
28: * A simple factory to provide a generic way to create FileChannel
29: * implementation from within the java.io package.
30: */
31: public class FileChannelFactory {
32: public static FileChannel getFileChannel(Object stream, long fd,
33: int mode) {
34: switch (mode) {
35: case IFileSystem.O_RDONLY:
36: return new ReadOnlyFileChannel(stream, fd);
37: case IFileSystem.O_WRONLY:
38: return new WriteOnlyFileChannel(stream, fd);
39: case IFileSystem.O_RDWR:
40: return new ReadWriteFileChannel(stream, fd);
41: case IFileSystem.O_RDWRSYNC:
42: return new ReadWriteFileChannel(stream, fd);
43: case IFileSystem.O_APPEND:
44: return new WriteOnlyFileChannel(stream, fd, true);
45: default:
46: // nio.09=Unknown file channel type: {0}
47: throw new RuntimeException(Messages.getString(
48: "nio.09", mode)); //$NON-NLS-1$
49: }
50: }
51: }
|