class PorcupineServerService(win32serviceutil.ServiceFramework):
	_svc_name_ = 'Porcupine'
	_svc_display_name_ = 'Porcupine Server'

	def __init__(self, args):
		win32serviceutil.ServiceFramework.__init__(self, args)
		sys.stdout = open('nul', 'w')
		sys.stderr = open('nul', 'w')
		self.controller = None

	def SvcDoRun(self):
		try:
			if '' not in sys.path:
				sys.path = [''] + sys.path
			if main_is_frozen():
				os.chdir( os.path.dirname(sys.executable) )
			from porcupineserver import Controller
			self.controller = Controller()
			self.controller.start()
			self.controller.shutdown_evt.wait()
		except Exception, e:
			print e
			if self.controller:
				self.controller.initiateShutdown()
			raise