Beispiel #1
0
    def decode(self, event, c):
        while True:
            # ID search
            if not self.btr:
                i = 0
                for cc in self.rawdata:
                    i += 1
                    if self.find_id(cc):
                        self.rawdata = self.rawdata[i:]
                        self.btr -= len(self.rawdata)
                        break
                    else:
                        sys.stderr.write('Unknowed ID `0x%02X`\n' % ord(cc))

            if not self.btr:
                if not self.find_id(c):
                    sys.stderr.write('Unknowed ID `0x%02X`\n' % ord(c))
                return

            # Data read
            self.rawdata += c
            self.btr -= 1

            # Checksum check
            if self.btr < 1:
                checksum = self.checksum(
                    chr(int(self.id, 0)) +
                    self.rawdata[:struct.calcsize(self.format)])
                if struct.unpack(
                        '>H', self.rawdata[struct.calcsize(self.format):struct.
                                           calcsize(self.format) +
                                           2])[0] == checksum:
                    # Handling
                    a = struct.unpack(
                        self.format,
                        self.rawdata[0:struct.calcsize(self.format)])
                    for i in xrange(len(a)):
                        events.fire(IrisDecoder, self.names[i],
                                    (self.time, a[i] * self.scale[i]))
                    self.rawdata = self.rawdata[struct.calcsize(self.format) +
                                                2:]
                else:
                    sys.stderr.write(
                        'Wrong checksum for a message of ID `%s` (%d != %d)\n'
                        % (self.id,
                           struct.unpack(
                               '>H', self.rawdata[struct.calcsize(
                                   self.format):struct.calcsize(self.format) +
                                                  2])[0], checksum))
                self.btr = 0
            return
Beispiel #2
0
    def application(env, start_response):
        response = [None]

        def callback(data, response_line="200 OK", headers=[("Content-Type", "text/plain")]):
            if response[0] is None:
                response[0] = data
            else:
                raise Exception("Already called.")
            start_response(response_line, headers)

        events.fire("http", {'callback': callback, 'irc': irc}, env)

        if response[0] is not None:
            return response[0]

        start_response("404 File Not Found", [("Content-Type", "text/plain")])
        return "404 File Not Found"
Beispiel #3
0
def process_line(irc, type, obj):
    if type == "PING":
        irc.write("PONG " + obj["args"][0])
    elif type == "PRIVMSG":
        source = to_source(obj["prefix"])
        if obj["args"][0][0] == "#":
            events.fire(
                "chanmsg", irc, {
                    "source": source,
                    "channel": obj["args"][0],
                    "message": obj["args"][1]
                })
        else:
            events.fire("privmsg", irc, {
                "source": source,
                "message": obj["args"][1]
            })
    elif type == "JOIN":
        events.fire("join", irc, {
            "source": to_source(obj["prefix"]),
            "channel": obj["args"][0]
        })
    elif type == "001":
        for channel in config.BOT_CHANNELS.split(','):
            irc.write("JOIN %s" % channel.strip())
    else:
        _log.warning("bad command type: %r: %r" % (type, obj))
Beispiel #4
0
    def render(self, name, context=None):
        template = self.find(name)
        context = context if context else {}

        context.update({
            'template': {
                'name': template.name,
                'list': name,
                'theme': self.theme
            }
        })

        events.fire('before_template_render',
                    name=name,
                    context=context,
                    env=self.environment)
        result = template.render(context, context=context)
        events.fire('after_template_render',
                    result=result,
                    name=name,
                    context=context,
                    env=self.environment)
        return result
Beispiel #5
0
	def decode(self, event, c):
		while True:
			# ID search
			if not self.btr:
				i = 0
				for cc in self.rawdata:
					i += 1
					if self.find_id(cc):
						self.rawdata = self.rawdata[i:]
						self.btr -= len(self.rawdata)
						break
					else:
						sys.stderr.write('Unknowed ID `0x%02X`\n' % ord(cc))
			
			if not self.btr:
				if not self.find_id(c):
					sys.stderr.write('Unknowed ID `0x%02X`\n' % ord(c))
				return

			# Data read
			self.rawdata += c
			self.btr -= 1
			
			# Checksum check
			if self.btr < 1:
				checksum = self.checksum(chr(int(self.id, 0)) + self.rawdata[:struct.calcsize(self.format)])
				if struct.unpack('>H', self.rawdata[struct.calcsize(self.format):struct.calcsize(self.format)+2])[0] == checksum:
					# Handling
					a = struct.unpack(self.format, self.rawdata[0:struct.calcsize(self.format)])
					for i in xrange(len(a)):
						events.fire(IrisDecoder, self.names[i], (self.time, a[i]*self.scale[i]))
					self.rawdata = self.rawdata[struct.calcsize(self.format)+2:]
				else:
					sys.stderr.write('Wrong checksum for a message of ID `%s` (%d != %d)\n' % (self.id, struct.unpack('>H', self.rawdata[struct.calcsize(self.format):struct.calcsize(self.format)+2])[0], checksum))
				self.btr = 0
			return
Beispiel #6
0
def process_line(irc, type, obj):
    if type == "chanmsg":
        obj["message"] = util.decode_irc(obj["message"])
        events.fire("chanmsg", irc, obj)
    elif type == "privmsg":
        obj["message"] = util.decode_irc(obj["message"])
        events.fire("privmsg", irc, obj)
    elif type == "join":
        events.fire("join", irc, obj)
    elif type == "startup":
        irc.write("join", {"channel": "#twilightzone"})
    else:
        _log.warning("bad command type: %r: %r" % (type, obj))
Beispiel #7
0
 def __init__(self, theme=None, extra_globals=None, extra_paths=None):
     self.theme = theme
     jinja2_env_kwargs = {
         'loader': self._build_loader(extra_paths=extra_paths),
         'auto_reload': False,
         'cache_size': 0 if debug else 50,
     }
     events.fire('before_jinja2_environment_creation',
                 engine=self,
                 jinja2_env_kwargs=jinja2_env_kwargs)
     self.environment = jinja2.Environment(**jinja2_env_kwargs)
     events.fire('after_jinja2_environment_creation', engine=self)
     self._update_globals(extra_globals)
     events.fire("template_engine_created", self)
Beispiel #8
0
def process_line(irc, type, obj):
    if type == "PING":
        irc.write("PONG " + obj["args"][0])
    elif type == "PRIVMSG":
        source = to_source(obj["prefix"])
        if obj["args"][0][0] == "#":
            events.fire("chanmsg", irc, {"source": source, "channel": obj["args"][0], "message": obj["args"][1]})
        else:
            events.fire("privmsg", irc, {"source": source, "message": obj["args"][1]})
    elif type == "JOIN":
        events.fire("join", irc, {"source": to_source(obj["prefix"]), "channel": obj["args"][0]})
    elif type == "001":
        for channel in config.BOT_CHANNELS.split(','):
            irc.write("JOIN %s" % channel.strip())
    else:
        _log.warning("bad command type: %r: %r" % (type, obj))
Beispiel #9
0
 def process_line(self, msgtype, obj):
     if msgtype == "PING":
         self.last_ping = time.time()
         self.write("PONG " + obj["args"][0])
     elif msgtype == "PRIVMSG":
         source = self.to_source(obj["prefix"])
         if obj["args"][0][0] == "#":
             events.fire("chanmsg", self, {"source": source, "channel": obj["args"][0], "message": obj["args"][1]})
         else:
             events.fire("privmsg", self, {"source": source, "message": obj["args"][1]})
     elif msgtype == "JOIN":
         events.fire("join", self, {"source": self.to_source(obj["prefix"]), "channel": obj["args"][0]})
     elif msgtype == "001":
         for channel in config.BOT_CHANNELS.split(","):
             self.write("JOIN %s" % channel.strip())
     else:
         _log.warning("bad command type: %r: %r" % (type, obj))
Beispiel #10
0
    "Bullets": 10,
    "Whiskey": 1,
    "Medicine": 1,
    "Food": 10
}
prices = {
    "Gold": 1,
    "Furs": 4,
    "Bullets": 2,
    "Whiskey": 6,
    "Medicine": 10,
    "Food": 2
}
wholesale = {"Furs": 2, "Bullets": 1, "Whiskey": 3, "Medicine": 5, "Food": 1}
events_list = {
    0: events.noevent(),
    1: events.competitor(),
    2: events.noevent(),
    3: events.robbed(),
    4: events.noevent(),
    5: events.find(),
    6: events.noevent(),
    7: events.indentured(),
    8: events.noevent(),
    9: events.fire(),
    10: events.noevent(),
    11: events.blizzard(),
    12: events.noevent(),
    13: events.competitor_gone()
}
Beispiel #11
0
		def loop(self):
			events.fire(IrisChannel, 'onReceive', self.serial.read(1))
Beispiel #12
0
 def loop(self):
     events.fire(IrisChannel, 'onReceive', self.serial.read(1))
Beispiel #13
0
	def loop(self):
		byte = sys.stdin.read(1)
		if not byte: byte = '\x00'
		events.fire(IrisChannel, 'onReceive', byte)
Beispiel #14
0
 def loop(self):
     msg, addr = self.sock.recvfrom(1024)
     for byte in msg:
         if not byte: byte = '\x00'
         events.fire(IrisChannel, 'onReceive', byte)