22 self.threaded = wsgienv['wsgi.multithread'] |
22 self.threaded = wsgienv['wsgi.multithread'] |
23 self.multiprocess = wsgienv['wsgi.multiprocess'] |
23 self.multiprocess = wsgienv['wsgi.multiprocess'] |
24 self.run_once = wsgienv['wsgi.run_once'] |
24 self.run_once = wsgienv['wsgi.run_once'] |
25 self.env = wsgienv |
25 self.env = wsgienv |
26 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) |
26 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) |
27 self.start_response = start_response |
27 self._start_response = start_response |
28 self.headers = [] |
28 self.headers = [] |
29 |
29 |
30 def __iter__(self): |
30 def __iter__(self): |
31 return iter([]) |
31 return iter([]) |
32 |
32 |
33 def read(self, count=-1): |
33 def read(self, count=-1): |
34 return self.inp.read(count) |
34 return self.inp.read(count) |
35 |
35 |
|
36 def start_response(self, status): |
|
37 if self._start_response is not None: |
|
38 if not self.headers: |
|
39 raise RuntimeError("request.write called before headers sent" + |
|
40 " (%s)." % thing) |
|
41 |
|
42 if isinstance(status, ErrorResponse): |
|
43 status = statusmessage(status.code) |
|
44 elif isinstance(status, int): |
|
45 status = statusmessage(status) |
|
46 |
|
47 self.server_write = self._start_response(status, self.headers) |
|
48 self._start_response = None |
|
49 self.headers = [] |
|
50 |
36 def respond(self, status, *things): |
51 def respond(self, status, *things): |
|
52 if not things: |
|
53 self.start_response(status) |
37 for thing in things: |
54 for thing in things: |
38 if hasattr(thing, "__iter__"): |
55 if hasattr(thing, "__iter__"): |
39 for part in thing: |
56 for part in thing: |
40 self.respond(status, part) |
57 self.respond(status, part) |
41 else: |
58 else: |
42 thing = str(thing) |
59 thing = str(thing) |
43 if self.server_write is None: |
60 self.start_response(status) |
44 if not self.headers: |
|
45 raise RuntimeError("request.write called before headers sent (%s)." % thing) |
|
46 if isinstance(status, ErrorResponse): |
|
47 status = statusmessage(status.code) |
|
48 elif isinstance(status, int): |
|
49 status = statusmessage(status) |
|
50 self.server_write = self.start_response(status, |
|
51 self.headers) |
|
52 self.start_response = None |
|
53 self.headers = [] |
|
54 try: |
61 try: |
55 self.server_write(thing) |
62 self.server_write(thing) |
56 except socket.error, inst: |
63 except socket.error, inst: |
57 if inst[0] != errno.ECONNRESET: |
64 if inst[0] != errno.ECONNRESET: |
58 raise |
65 raise |