From b9b58ffae007877db60789120da82a9c760a674c Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 23 Feb 2024 01:12:11 +0100 Subject: [PATCH] Send messages via mkdir --- eufs/euph.py | 16 ++++++++++++++++ eufs/main.py | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/eufs/euph.py b/eufs/euph.py index 2aed611..61c57f3 100644 --- a/eufs/euph.py +++ b/eufs/euph.py @@ -48,6 +48,9 @@ class Room: self.alive = False self.ws.close() + def send(self, content, parent=None): + self._send("send", content=content, parent=parent) + def find_msg_by_texts(self, texts): msg = None children = {mid: msg for mid, msg in self.msgs.items() if msg.parent == None} @@ -103,6 +106,10 @@ class Room: self._on_hello_event(data) case "snapshot-event": self._on_snapshot_event(data) + case "send-event": + self._on_send_event(data) + case "send-reply": + self._on_send_event(data) print(packet["type"]) @@ -128,3 +135,12 @@ class Room: parent.children[msg.id] = msg self._send("nick", name="garmtest") + + def _on_send_event(self, data): + msg = Message(data) + self.msgs[msg.id] = msg + + if msg.parent is not None: + parent = self.msgs.get(msg.parent) + if parent is not None: + parent.children[msg.id] = msg diff --git a/eufs/main.py b/eufs/main.py index e8e9fef..ea68230 100644 --- a/eufs/main.py +++ b/eufs/main.py @@ -123,6 +123,45 @@ class EuFs(fuse.Fuse): print(child.text) yield fuse.Direntry(child.text) + def mkdir(self, path, mode): + print(f"mkdir: {path!r} {mode!r}") + + parts = Path(path).parts + if parts == ("/",): + print(f" is root") + return -errno.EEXIST + print(f" is not root") + + roomname = parts[1] + texts = parts[2:] + + room = self.rooms.get(roomname) + if not room: + print(f" is invalid room") + return -errno.ENOENT + print(f" is valid room") + + if texts == (): + print(f" is no content") + return -errno.EEXIST + + content = texts[-1] + texts = texts[:-1] + + if texts == (): + print(" is root message") + room.send(content) + return + + msg = room.find_msg_by_texts(texts) + if not msg: + print(f" is invalid msg") + return -errno.ENOENT + print(f" is valid msg") + + print(" is child message") + room.send(content, parent=msg.id) + def main(): server = EuFs(version="%prog " + fuse.__version__, dash_s_do="setsingle")