Skip to content

Commit

Permalink
for inter-process communication, uses Pipe instead of Queue
Browse files Browse the repository at this point in the history
github issue #54
merge of commit 629d068 from branch "pipe instead queue" (now
extinct) with some name changes…
  • Loading branch information
iBaa committed Jun 21, 2013
1 parent 6e736b2 commit 9d6211b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 21 deletions.
9 changes: 3 additions & 6 deletions DNSServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def printDNSPaket(paket):



def Run(cmdQueue, param):
def Run(cmdPipe, param):
dinit(__name__, param) # init logging, DNSServer process

try:
Expand Down Expand Up @@ -154,14 +154,11 @@ def Run(cmdQueue, param):
try:
while True:
# check command
try:
cmd = cmdQueue.get_nowait()
if cmdPipe.poll():
cmd = cmdPipe.recv()
if cmd=='shutdown':
break

except Queue.Empty:
pass

# do your work (with timeout)
try:
data, addr = DNS.recvfrom(1024)
Expand Down
16 changes: 8 additions & 8 deletions PlexConnect.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import sys, time
from os import sep
import socket
from multiprocessing import Process, Queue
from multiprocessing import Process, Pipe

import PlexGDM
import DNSServer, WebServer
Expand Down Expand Up @@ -46,8 +46,8 @@ def getIP_self():
dinit('PlexConnect', param) # re-init logfile with loglevel

if cfg.getSetting('enable_dnsserver')=='True':
cmd_DNSServer = Queue()
cmd_WebServer = Queue()
pipe_DNSServer = Pipe() # endpoint [0]-PlexConnect, [1]-DNSServer
pipe_WebServer = Pipe() # endpoint [0]-PlexConnect, [1]-WebServer

param['IP_self'] = getIP_self()
param['IP_DNSMaster'] = cfg.getSetting('ip_dnsmaster')
Expand All @@ -70,22 +70,22 @@ def getIP_self():
dprint('PlexConnect', 0, "PMS: {0}", param['Addr_PMS'])

if cfg.getSetting('enable_dnsserver')=='True':
p_DNSServer = Process(target=DNSServer.Run, args=(cmd_DNSServer, param))
p_DNSServer = Process(target=DNSServer.Run, args=(pipe_DNSServer[1], param))
p_DNSServer.start()

time.sleep(0.1)
if not p_DNSServer.is_alive():
dprint('PlexConnect', 0, "DNSServer not alive. Shutting down.")
sys.exit(1)

p_WebServer = Process(target=WebServer.Run, args=(cmd_WebServer, param))
p_WebServer = Process(target=WebServer.Run, args=(pipe_WebServer[1], param))
p_WebServer.start()

time.sleep(0.1)
if not p_WebServer.is_alive():
dprint('PlexConnect', 0, "WebServer not alive. Shutting down.")
if cfg.getSetting('enable_dnsserver')=='True':
cmd_DNSServer.put('shutdown')
pipe_DNSServer[0].send('shutdown')
p_DNSServer.join()
sys.exit(1)

Expand All @@ -97,8 +97,8 @@ def getIP_self():
finally:
dprint('PlexConnect', 0, "Shutting down.")
if cfg.getSetting('enable_dnsserver')=='True':
cmd_DNSServer.put('shutdown')
pipe_DNSServer[0].send('shutdown')
p_DNSServer.join()

cmd_WebServer.put('shutdown')
pipe_WebServer[0].send('shutdown')
p_WebServer.join()
10 changes: 3 additions & 7 deletions WebServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ def do_GET(self):



def Run(cmdQueue, param):
def Run(cmdPipe, param):
dinit(__name__, param) # init logging, WebServer process

#Protocol = "HTTP/1.0"
Expand All @@ -192,15 +192,11 @@ def Run(cmdQueue, param):
try:
while True:
# check command
try:
# check command
cmd = cmdQueue.get_nowait()
if cmdPipe.poll():
cmd = cmdPipe.recv()
if cmd=='shutdown':
break

except Queue.Empty:
pass

# do your work (with timeout)
server.handle_request()

Expand Down

0 comments on commit 9d6211b

Please sign in to comment.