if self.source == None:
self.source = 'LOCAL'
if part:
- print 'part', part[0], part[1]
self.parts = [None for x in range(part[1])]
self.parts[part[0]-1] = self.text
self.reduce_parts()
if update:
fcntl.lockf(f, fcntl.LOCK_EX)
+ else:
+ fcntl.lockf(f, fcntl.LOCK_SH)
for ln in f:
l.append(parse_time(ln.strip()))
l.sort()
f.close()
return l
- def load_month(self, f):
+ def load_month(self, f, do_lock):
# load the messages from f, which is open for read
rv = {}
+ if do_lock:
+ fcntl.lockf(f, do_lock)
for l in f:
l.strip()
m = SMSmesg(line=l)
sms.parts = None
fcntl.lockf(f, fcntl.LOCK_EX)
- l = self.load_month(f)
+ l = self.load_month(f, 0)
while sms.stamp in l:
sms.stamp += 1
l[sms.stamp] = sms
def lookup(self, lasttime = None, state = None):
if lasttime == None:
- lasttime = int(time.time())
+ lasttime = int(time.time() + 3600)
if state == None:
return self.getmesgs(lasttime)
if state == 'DRAFT':
t = parse_time(m + '01-000000')
if t > last:
continue
- mon = self.load_month(open(self.dirname + '/' + m))
+ mon = self.load_month(open(self.dirname + '/' + m), fcntl.LOCK_SH)
for mt in mon:
if mt <= last:
rv.append(mon[mt])
return None
if self.cached_month != m:
self.cached_month = m
- self.cache = self.load_month(open(self.dirname + '/' + m))
+ self.cache = self.load_month(open(self.dirname + '/' + m), fcntl.LOCK_SH)
if t in self.cache:
return self.cache[t]
return None
return
fcntl.lockf(f, fcntl.LOCK_EX)
- l = self.load_month(f)
+ l = self.load_month(f, 0)
if tm in l:
del l[tm]
self.store_month(l, m);