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