# Path: log.py
# class __NullLogger:
#     def debug(self, msg=""):    pass
#     def warning(self, msg=""):  pass
#     def info(self, msg=""):     pass
#     def error(self, msg=""):    pass
#     def fatal(self, msg=""):    pass
# 
# Path: SigObject.py
# class SigObject(QObject):
#     def __init__(self):
# 
# Path: log.py
# class __NullLogger:
#     def debug(self, msg=""):    pass
#     def warning(self, msg=""):  pass
#     def info(self, msg=""):     pass
#     def error(self, msg=""):    pass
#     def fatal(self, msg=""):    pass
# 
# Path: net/socktypes.py
# TCP_SERVER_BASE_TYPE = 0x00
# TCP_CLIENT_BASE_TYPE = 0x10
# UDP_SERVER_BASE_TYPE = 0x20
# UDP_CLIENT_BASE_TYPE = 0x30
# TCP_SERVER        = TCP_SERVER_BASE_TYPE | 0x01
# TCP_CLIENT_REMOTE = TCP_SERVER_BASE_TYPE | 0x02
# TCP_CLIENT_LOCAL  = TCP_CLIENT_BASE_TYPE | 0x10
# UDP_SERVER        = UDP_SERVER_BASE_TYPE | 0x00 # it's just like a sever
# UDP_CLIENT_REMOTE = UDP_SERVER_BASE_TYPE | 0x01
# UDP_CLIENT_LOCAL  = UDP_CLIENT_BASE_TYPE | 0x01


import socket
import threading
import select
import signals
from log import logger
from SigObject import sigObject
from log import logger
from net import socktypes
#-*- coding: utf-8 -*-

class UdpServer(threading.Thread):
    
    RECV_SIZE = 262144
    
    def __init__(self, port, ip="0.0.0.0"):
        threading.Thread.__init__(self)
        self.stopflag = False
        self.ip, self.port = ip, port
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self._id = id(self.sock)
        
        self.remoteAddr = None
    
    def getId(self):
        return self._id
    
    def getAddress(self):
        return "%s:%d" % (self.ip, self.port)
        
    def start_(self):
        try:
            self.sock.bind((self.ip, self.port))
        except:

# Path: log.py
# class __NullLogger:
#     def debug(self, msg=""):    pass
#     def warning(self, msg=""):  pass
#     def info(self, msg=""):     pass
#     def error(self, msg=""):    pass
#     def fatal(self, msg=""):    pass
# 
# Path: SigObject.py
# class SigObject(QObject):
#     def __init__(self):
# 
# Path: log.py
# class __NullLogger:
#     def debug(self, msg=""):    pass
#     def warning(self, msg=""):  pass
#     def info(self, msg=""):     pass
#     def error(self, msg=""):    pass
#     def fatal(self, msg=""):    pass
# 
# Path: net/socktypes.py
# TCP_SERVER_BASE_TYPE = 0x00
# TCP_CLIENT_BASE_TYPE = 0x10
# UDP_SERVER_BASE_TYPE = 0x20
# UDP_CLIENT_BASE_TYPE = 0x30
# TCP_SERVER        = TCP_SERVER_BASE_TYPE | 0x01
# TCP_CLIENT_REMOTE = TCP_SERVER_BASE_TYPE | 0x02
# TCP_CLIENT_LOCAL  = TCP_CLIENT_BASE_TYPE | 0x10
# UDP_SERVER        = UDP_SERVER_BASE_TYPE | 0x00 # it's just like a sever
# UDP_CLIENT_REMOTE = UDP_SERVER_BASE_TYPE | 0x01
# UDP_CLIENT_LOCAL  = UDP_CLIENT_BASE_TYPE | 0x01


# Path: net/UdpServer.py
import socket
import threading
import select
import signals
from log import logger
from SigObject import sigObject
from log import logger
from net import socktypes

#-*- coding: utf-8 -*-

class UdpServer(threading.Thread):
    
    RECV_SIZE = 262144
    
    def __init__(self, port, ip="0.0.0.0"):
        threading.Thread.__init__(self)
        self.stopflag = False
        self.ip, self.port = ip, port
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self._id = id(self.sock)
        
        self.remoteAddr = None
    
    def getId(self):
        return self._id
    
    def getAddress(self):
        return "%s:%d" % (self.ip, self.port)
        
    def start_(self):
        try:
            self.sock.bind((self.ip, self.port))
        except:

            logger.error("bind address error: %s" % self.getAddress())