Newer
Older
Import / projects / LGN-IP3870 / t / new / error.py
import socket
import runtime
import evas
import os
import os.path
import sys
import status
import config
import utils
import uiconfig
from basemodel import NotifyStage

class Error:
	SOCK_FILE='/tmp/.error.sock'


	def __init__(self):
		try:
			os.unlink(self.SOCK_FILE)
		except OSError: 
			pass

		self.server_s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM, 0)
		self.server_s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
		self.server_s.bind(self.SOCK_FILE)
		self.server_s.listen(5)

		self.error_s = None
		self.error_tag = None

		self.server_tag = utils.Input(self.server_s.fileno(), self.accept_error)


	def destroy(self):
		self.error_tag = None
		self.error_s = None
		os.unlink(self.SOCK_FILE)

	def accept_error(self, fd, type):
		print 'accept_error. fd = %d, type = %d' % (fd, type)
		assert type == evas.INPUT_READ

		self.error_s, addr = self.server_s.accept()
		self.error_tag = utils.Input(self.error_s.fileno(), self.handle_error)
		return True

	def recv_packet(self):
		c = self.error_s.recv(1)
		l = ord(c)
		print 'l = ', l

		msg = ''
		while l > 0:
			m = self.error_s.recv(l)
			l -= len(m)
			msg += m
		return msg

	def send_packet(self, buf):
		import struct
		p = struct.pack('B', len(buf))
		self.error_s.send(p)
		self.error_s.send(buf)

	def handle_error(self, fd, type):
		print 'handle_error. fd = %d, type = %d' % (fd, type)
		if type & evas.INPUT_HUP:
			runtime.manager.handle_error_message('connection_closed')
			return False

		assert type & evas.INPUT_READ
		str = self.recv_packet()
		
		if str == 'AUTH_FAIL':
			print "Show Auth Fail Message in MMI"
			msg = _('Auth Fail')
			runtime.manager.stack_stage(NotifyStage(msg, uiconfig.baloon_setting_voip_icon))
		
		elif str == 'IPCP_FAIL':
			print "Show IPCP_FAIL Message in MMI"	
			msg = _('IPCP Fail')
			runtime.manager.stack_stage(NotifyStage(msg, uiconfig.baloon_setting_voip_icon))
			
		elif str == 'LCP_FAIL':
			print "Show LCP_FAIL Message in MMI"		
			msg = _('LCP Fail')
			runtime.manager.stack_stage(NotifyStage(msg, uiconfig.baloon_setting_voip_icon))
		else:
			print 'Unknown message: [%s]' % str
			assert False
			
		return True