blob: 6b1e5f593f7bad0aba4852f350405f53a57ccb63 [file] [log] [blame]
import logging
import socket
_BUF_SIZE = 1024
class FakePrinter():
"""A fake printer (server)."""
sock = 0
def __init__(self):
"""Initialize fake printer"""
# Create a TCP/IP socket
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Bind the socket to the port
server_address = ('localhost', 9100)
self.sock.bind(server_address)
def start(self, log_file_path):
"""Start the fake printer.
It listens on port 9100 and dump printing request
received to a temporary file.
Args:
@param log_file_path: the abs path of log file.
"""
# Listen for incoming printer request.
self.sock.listen(1)
logging.info('waiting for a printing request')
(connection, client_address) = self.sock.accept()
try:
logging.info('printing request from ' + str(client_address))
logfile = open(log_file_path, 'w');
while True:
data = connection.recv(_BUF_SIZE)
if not data:
logging.info('no more data from ' + str(client_address))
break
logfile.write(data)
logfile.close();
logging.info('printing request is dumped to ' + str(logfile))
finally:
connection.close()