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)
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)
def __writefile_request(args, stream=False): """ This function creates a write file stream/record request. :param args: list of parameters :param stream: is stream access :return: request """ # read address, instance and start record address, obj_inst, start = args[:3] count = 0 # set type obj_type = 'file' # check if object instance is correct if not obj_inst.isdigit(): raise ValueError('object instance invalid') # make object instance to integer obj_inst = int(obj_inst) # check if start record is correct if not start.isdigit(): raise ValueError('start record invalid') # make start record to integer start = int(start) if stream: # read data data = args[3] else: # read record count count = args[3] # check if record count is correct if not count.isdigit(): raise ValueError('record count invalid') # make record count to integer count = int(count) # read data data = list(args[4:]) if len(args) > 4 else [] # create request if stream: request = AtomicWriteFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicWriteFileRequestAccessMethodChoice( streamAccess=AtomicWriteFileRequestAccessMethodChoiceStreamAccess( fileStartPosition=start, fileData=data, ) ) ) else: request = AtomicWriteFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicWriteFileRequestAccessMethodChoice( recordAccess=AtomicWriteFileRequestAccessMethodChoiceRecordAccess( fileStartRecord=start, recordCount=count, fileRecordData=data, ) ) ) # send to specified address request.pduDestination = Address(address) # return created request return request