Newer
Older
exporter / exporter.py
#! /usr/bin/python

import socket
import subprocess
import errno
import sys
import os

port = 7890

s = socket.socket()
s.bind(("localhost", port))

args = [os.getcwd() + "/GraphicExport.exe"]
# args = [os.getcwd() + "/GraphicExport.app/GraphicExport.exe", str(port)]
g = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

s.settimeout(0.5)
s.listen(0)

conn = None
while conn is None and g.returncode is None:
  try:
    (conn, _) = s.accept()
  except socket.timeout, e:
      pass
  except e:
    print e
    s.close()
    g.wait()
    sys.exit(1)
  g.poll()

if conn:
  conn.setblocking(False)
  conn.send("EXPORT|" + "|".join(sys.argv[1:]) + "\n")

while g.returncode is None:
  try:
    d = conn.recv(4096)
    if len(d):
      sys.stdout.write(d)
      sys.stdout.flush()
  except socket.error, e:
    if e.args[0] == errno.EWOULDBLOCK or e.args[0] == errno.EAGAIN:
      pass
    else:
      print e
      conn.close()
      s.close()
      g.wait()
      sys.exit(1)
  g.poll()

if (conn):
  conn.close()
s.close()