summaryrefslogtreecommitdiff
path: root/src/fifo.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/fifo.py')
-rw-r--r--src/fifo.py71
1 files changed, 0 insertions, 71 deletions
diff --git a/src/fifo.py b/src/fifo.py
deleted file mode 100644
index 863ef228..00000000
--- a/src/fifo.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""
-Defines the Fifo class
-
-This fifo allows simple communication between a remote poezio
-and a local computer, with ssh+cat.
-"""
-
-import logging
-log = logging.getLogger(__name__)
-
-import os
-import threading
-
-class OpenTrick(threading.Thread):
- """
- A threaded trick to make the open for writing succeed.
- A fifo cannot be opened for writing if it has not been
- yet opened by the other hand for reading.
- So, we just open the fifo for reading and we do not close
- it afterwards, because if the other reader disconnects,
- we will receive a SIGPIPE. And we do not want that.
-
- (we never read anything from it, obviously)
- """
- def __init__(self, path):
- threading.Thread.__init__(self)
- self.path = path
- self.fd = None
-
- def run(self):
- self.fd = open(self.path, 'r', encoding='utf-8')
-
-
-class Fifo(object):
- """
- Just a simple file handler, writing and reading in a fifo.
- Mode is either 'r' or 'w', just like the mode for the open()
- function.
- """
- def __init__(self, path, mode):
- self.trick = None
- if not os.path.exists(path):
- os.mkfifo(path)
- if mode == 'w':
- self.trick = OpenTrick(path)
- # that thread will wait until we open it for writing
- self.trick.start()
- self.fd = open(path, mode, encoding='utf-8')
-
- def write(self, data):
- """
- Try to write on the fifo. If that fails, this means
- that nothing has that fifo opened, so the writing is useless,
- so we just return (and display an error telling that, somewhere).
- """
- self.fd.write(data)
- self.fd.flush()
-
- def readline(self):
- "Read a line from the fifo"
- return self.fd.readline()
-
- def __del__(self):
- "Close opened fds"
- try:
- self.fd.close()
- if self.trick:
- self.trick.fd.close()
- except:
- log.error('Unable to close descriptors for the fifo',
- exc_info=True)