mirror of
https://github.com/Pardus-LiderAhenk/ahenk
synced 2024-11-30 11:22:22 +03:00
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
# -*- coding: utf-8 -*-
|
||
|
# Author: Volkan Şahin <volkansah.in> <bm.volkansahin@gmail.com>
|
||
|
|
||
|
import threading
|
||
|
|
||
|
|
||
|
class Fifo(object):
|
||
|
def __init__(self):
|
||
|
self.lock = threading.Lock()
|
||
|
self.path = '/tmp/liderahenk.fifo'
|
||
|
|
||
|
def push(self, content):
|
||
|
file = None
|
||
|
self.lock.acquire()
|
||
|
try:
|
||
|
file = open(self.path, 'a+')
|
||
|
file.write(content)
|
||
|
except Exception as e:
|
||
|
print('Error:{0}'.format(str(e)))
|
||
|
finally:
|
||
|
file.close()
|
||
|
self.lock.release()
|
||
|
|
||
|
def pull(self, queue):
|
||
|
result = None
|
||
|
self.lock.acquire()
|
||
|
try:
|
||
|
lines = open(self.path, 'rb').readlines()
|
||
|
if lines is not None and len(lines) > 0:
|
||
|
result = lines[0].decode("unicode_escape")
|
||
|
w_file = open(self.path, 'wb')
|
||
|
w_file.writelines(lines[1:])
|
||
|
w_file.close()
|
||
|
except Exception as e:
|
||
|
print('Error:{0}'.format(str(e)))
|
||
|
finally:
|
||
|
self.lock.release()
|
||
|
queue.put(result)
|