blob: e3d105c02cf128b215db261b5bc2cb4ee13159c9 [file] [log] [blame]
###
#
# Copyright Alan Kennedy.
#
# You may contact the copyright holder at this uri:
#
# http://www.xhaus.com/contact/modjy
#
# The licence under which this code is released is the Apache License v2.0.
#
# The terms and conditions of this license are listed in a file contained
# in the distribution that also contained this file, under the name
# LICENSE.txt.
#
# You may also read a copy of the license at the following web address.
#
# http://modjy.xhaus.com/LICENSE.txt
#
###
import types
from modjy_exceptions import *
class write_object:
def __init__(self, ostream):
self.ostream = ostream
self.num_writes = 0
def __call__(self, *args, **keywords):
if len(args) != 1 or not isinstance(args[0], types.StringTypes):
raise NonStringOutput("Invocation of write callable requires exactly one string argument")
try:
self.ostream.write(args[0]) # Jython implicitly converts the (binary) string to a byte array
# WSGI requires that all output be flushed before returning to the application
# According to the java docs: " The flush method of OutputStream does nothing."
# Still, leave it in place for now: it's in the right place should this
# code ever be ported to another platform.
self.ostream.flush()
self.num_writes += 1
except Exception, x:
raise ModjyIOException(x)