def do_writestream(self, args): """writestream <addr> <inst> <start> <data>""" args = args.split() if _debug: TestConsoleCmd._debug("do_writestream %r", args) try: addr, obj_inst, start_position, data = args obj_type = 'file' obj_inst = int(obj_inst) start_position = int(start_position) # build a request request = AtomicWriteFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicWriteFileRequestAccessMethodChoice( streamAccess=AtomicWriteFileRequestAccessMethodChoiceStreamAccess( fileStartPosition=start_position, fileData=data, ), ), ) request.pduDestination = Address(addr) if _debug: TestConsoleCmd._debug(" - request: %r", request) # give it to the application this_application.request(request) except Exception, e: TestConsoleCmd._exception("exception: %r", e)
def do_writerecord(self, args): """writerecord <addr> <inst> <start> <count> [ <data> ... ]""" args = args.split() if _debug: TestConsoleCmd._debug("do_writerecord %r", args) try: addr, obj_inst, start_record, record_count = args[0:4] obj_type = 'file' obj_inst = int(obj_inst) start_record = int(start_record) record_count = int(record_count) record_data = list(args[4:]) # build a request request = AtomicWriteFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicWriteFileRequestAccessMethodChoice( recordAccess=AtomicWriteFileRequestAccessMethodChoiceRecordAccess( fileStartRecord=start_record, recordCount=record_count, fileRecordData=record_data, ), ), ) request.pduDestination = Address(addr) if _debug: TestConsoleCmd._debug(" - request: %r", request) # give it to the application this_application.request(request) except Exception, e: TestConsoleCmd._exception("exception: %r", e)
def do_writestream(self, args): """writestream <addr> <inst> <start> <data>""" args = args.split() if _debug: TestConsoleCmd._debug("do_writestream %r", args) try: addr, obj_inst, start_position, data = args obj_type = 'file' obj_inst = int(obj_inst) start_position = int(start_position) data = data.encode('utf-8') # build a request request = AtomicWriteFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicWriteFileRequestAccessMethodChoice( streamAccess= AtomicWriteFileRequestAccessMethodChoiceStreamAccess( fileStartPosition=start_position, fileData=data, ), ), ) request.pduDestination = Address(addr) if _debug: TestConsoleCmd._debug(" - request: %r", request) # make an IOCB iocb = IOCB(request) if _debug: TestConsoleCmd._debug(" - iocb: %r", iocb) # give it to the application this_application.request_io(iocb) # wait for it to complete iocb.wait() # do something for success if iocb.ioResponse: apdu = iocb.ioResponse # should be an ack if not isinstance(apdu, AtomicWriteFileACK): if _debug: TestConsoleCmd._debug(" - not an ack") return # suck out the record data if apdu.fileStartPosition is not None: value = apdu.fileStartPosition elif apdu.fileStartRecord is not None: value = apdu.fileStartRecord TestConsoleCmd._debug(" - value: %r", value) sys.stdout.write(repr(value) + '\n') sys.stdout.flush() # do something for error/reject/abort if iocb.ioError: sys.stdout.write(str(iocb.ioError) + '\n') except Exception as error: TestConsoleCmd._exception("exception: %r", error)