From fcf12b8b722b8add90fb511db50fe003b0667de9 Mon Sep 17 00:00:00 2001 From: Ilya Date: Sun, 20 Aug 2023 19:51:18 +0300 Subject: [PATCH] Lock changes --- .../datasource/VirtualFileSystem.java | 55 +++++++++++++++++++ src/test/java/Main.java | 7 ++- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/redguy/tftpserver/datasource/VirtualFileSystem.java diff --git a/src/main/java/ru/redguy/tftpserver/datasource/VirtualFileSystem.java b/src/main/java/ru/redguy/tftpserver/datasource/VirtualFileSystem.java new file mode 100644 index 0000000..4552ec3 --- /dev/null +++ b/src/main/java/ru/redguy/tftpserver/datasource/VirtualFileSystem.java @@ -0,0 +1,55 @@ +package ru.redguy.tftpserver.datasource; + +import java.io.*; +import java.util.HashMap; + +public class VirtualFileSystem implements IDataSource { + + private HashMap fileHashMap = new HashMap<>(); + + public VirtualFileSystem() { + + } + + public void addFile(String name, File file) { + fileHashMap.put(name, file); + } + + @Override + public boolean isFileExists(String file) { + return fileHashMap.containsKey(file); + } + + @Override + public boolean isFile(String file) { + return fileHashMap.containsKey(file); + } + + @Override + public boolean isCanRead(String file) { + return fileHashMap.containsKey(file); + } + + @Override + public OutputStream getOutputStream(String file) { + try { + return new FileOutputStream(fileHashMap.get(file)); + } catch (FileNotFoundException e) { + return null; + } + } + + @Override + public InputStream getInputStream(String file) { + try { + return new FileInputStream(fileHashMap.get(file)); + } catch (FileNotFoundException e) { + return null; + } + } + + @Override + public void delete(String file) { + fileHashMap.remove(file); + } +} diff --git a/src/test/java/Main.java b/src/test/java/Main.java index 29df5c8..b67c15d 100644 --- a/src/test/java/Main.java +++ b/src/test/java/Main.java @@ -3,14 +3,19 @@ import ru.redguy.tftpserver.TFTPServer; import ru.redguy.tftpserver.TFTPread; import ru.redguy.tftpserver.TFTPwrite; import ru.redguy.tftpserver.datasource.FileSystem; +import ru.redguy.tftpserver.datasource.IDataSource; +import ru.redguy.tftpserver.datasource.VirtualFileSystem; +import java.io.File; import java.net.SocketException; public class Main { public static void main(String[] args) { TFTPServer tftpServer = new TFTPServer(); + VirtualFileSystem ds = new VirtualFileSystem(); + ds.addFile("a.gradle",new File("build.gradle")); try { - tftpServer.start(1000,false,new FileSystem("gradle")); + tftpServer.start(1000,false,ds); } catch (SocketException e) { e.printStackTrace(); }