示例#1
0
    def send(self, http_type, data):
        if not self.inited:
            self._init(http_type, data)
            self.inited = True

        if not self.is_http:
            return

        # still current http request/response
        if self.cur_type == http_type:
            self.cur_data.append(data)
            return

        if self.cur_data is not None:
            reader = DataReader(self.cur_data)
            if self.cur_type == HttpType.REQUEST:
                self.read_request(reader, self.message)
            elif self.cur_type == HttpType.RESPONSE:
                self.read_response(reader, self.message)

        self.cur_type = http_type

        # new http request/response
        self.cur_data = []
        self.cur_data.append(data)
示例#2
0
    def process_tasks(self, task_queue):
        message = RequestMessage()
        m_time = 0
        while True:
            queuedata = task_queue.get()
            httptype = queuedata[0]
            data_queue = queuedata[1]
            try:
                m_time = queuedata[2]
            except:
                pass
            #httptype, data_queue = task_queue.get()

            if httptype is None:
                # finished
                self.processor.finish()
                break

            reader = DataReader(data_queue)
            try:
                if httptype == HttpType.REQUEST:
                    self.read_request(reader, message, m_time)
                elif httptype == HttpType.RESPONSE:
                    self.read_response(reader, message)
            except Exception:
                #import traceback

                #traceback.print_exc()
                # consume all data.
                # reader.skipall()
                break
示例#3
0
 def finish(self):
     # if still have unprocessed data
     if self.cur_data:
         reader = DataReader(self.cur_data)
         if self.cur_type == HttpType.REQUEST:
             self.read_request(reader, self.message)
         elif self.cur_type == HttpType.RESPONSE:
             self.read_response(reader, self.message)
示例#4
0
 def finish(self):
     """if still have unprocessed data then process them"""
     if self.cur_data:
         reader = DataReader(self.cur_data)
         if self.cur_type == HttpType.REQUEST:
             pkt = self.read_request(reader, self.message)
             if pkt is not None:
                 return pkt
         elif self.cur_type == HttpType.RESPONSE:
             self.read_response(reader, self.message)
     return None
示例#5
0
    def process_tasks(self, task_queue):
        message = RequestMessage()

        while True:
            httptype, data_queue = task_queue.get()
            if httptype is None:
                # finished
                self.processor.finish()
                break

            reader = DataReader(data_queue)
            try:
                if httptype == HttpType.REQUEST:
                    self.read_request(reader, message)
                elif httptype == HttpType.RESPONSE:
                    self.read_response(reader, message)
            except Exception:
                import traceback

                traceback.print_exc()
                # consume all data.
                reader.skipall()
                break
示例#6
0
    def send(self, http_type, data):
        """append http request or reponses

        if the connection is not initiated yet then start the connection
        and if it's still the current connection then append the packet

        Args:
            http_type (HttpType): type of packet
            data (str):  data of unparsed packet
        Returns:
            None
        """
        pkt = None
        if not self.inited:
            self._init(http_type, data)
            self.inited = True

        if not self.is_http:
            return None

        # still current http request/response
        if self.cur_type == http_type:
            self.cur_data.append(data)
            return None

        if self.cur_data is not None:
            reader = DataReader(self.cur_data)
            if self.cur_type == HttpType.REQUEST:
                pkt = self.read_request(reader, self.message)
            elif self.cur_type == HttpType.RESPONSE:
                self.read_response(reader, self.message)

        self.cur_type = http_type

        # new http request/response
        self.cur_data = []
        self.cur_data.append(data)
        if pkt is not None:
            return pkt
        else:
            return None