def do_readrecord(self, args): """readrecord <addr> <inst> <start> <count>""" args = args.split() if _debug: TestConsoleCmd._debug("do_readrecord %r", args) try: addr, obj_inst, start_record, record_count = args obj_type = 'file' obj_inst = int(obj_inst) start_record = int(start_record) record_count = int(record_count) # build a request request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( recordAccess=AtomicReadFileRequestAccessMethodChoiceRecordAccess( fileStartRecord=start_record, requestedRecordCount=record_count, ), ), ) 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_readstream(self, args): """readstream <addr> <inst> <start> <count>""" args = args.split() if _debug: TestConsoleCmd._debug("do_readstream %r", args) try: addr, obj_inst, start_position, octet_count = args obj_type = 'file' obj_inst = int(obj_inst) start_position = int(start_position) octet_count = int(octet_count) # build a request request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( streamAccess= AtomicReadFileRequestAccessMethodChoiceStreamAccess( fileStartPosition=start_position, requestedOctetCount=octet_count, ), ), ) request.pduDestination = Address(addr) if _debug: TestConsoleCmd._debug(" - request: %r", request) # give it to the application this_application.request(request) except Exception as error: TestConsoleCmd._exception("exception: %r", error)
def do_readstream(self, args): """readstream <addr> <inst> <start> <count>""" args = args.split() if _debug: TestConsoleCmd._debug("do_readstream %r", args) try: addr, obj_inst, start_position, octet_count = args obj_type = 'file' obj_inst = int(obj_inst) start_position = int(start_position) octet_count = int(octet_count) # build a request request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( streamAccess=AtomicReadFileRequestAccessMethodChoiceStreamAccess( fileStartPosition=start_position, requestedOctetCount=octet_count, ), ), ) request.pduDestination = Address(addr) if _debug: TestConsoleCmd._debug(" - request: %r", request) # give it to the application this_application.request(request) except Exception as error: TestConsoleCmd._exception("exception: %r", error)
def do_readrecord(self, args): """readrecord <addr> <inst> <start> <count>""" args = args.split() if _debug: TestConsoleCmd._debug("do_readrecord %r", args) try: addr, obj_inst, start_record, record_count = args obj_type = 'file' obj_inst = int(obj_inst) start_record = int(start_record) record_count = int(record_count) # build a request request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( recordAccess= AtomicReadFileRequestAccessMethodChoiceRecordAccess( fileStartRecord=start_record, requestedRecordCount=record_count, ), ), ) 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, AtomicReadFileACK): if _debug: TestConsoleCmd._debug(" - not an ack") return # suck out the record data if apdu.accessMethod.recordAccess: value = apdu.accessMethod.recordAccess.fileRecordData elif apdu.accessMethod.streamAccess: value = apdu.accessMethod.streamAccess.fileData if _debug: 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_readrecord(self, args): """readrecord <addr> <inst> <start> <count>""" args = args.split() if _debug: TestConsoleCmd._debug("do_readrecord %r", args) try: addr, obj_inst, start_record, record_count = args obj_type = 'file' obj_inst = int(obj_inst) start_record = int(start_record) record_count = int(record_count) # build a request request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( recordAccess=AtomicReadFileRequestAccessMethodChoiceRecordAccess( fileStartRecord=start_record, requestedRecordCount=record_count, ), ), ) 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, AtomicReadFileACK): if _debug: TestConsoleCmd._debug(" - not an ack") return # suck out the record data if apdu.accessMethod.recordAccess: value = apdu.accessMethod.recordAccess.fileRecordData elif apdu.accessMethod.streamAccess: value = apdu.accessMethod.streamAccess.fileData if _debug: 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 __readfile_request(args, stream=False): """ This function creates a read file record/stream request. :param args: list of parameters :param stream: is stream access :return: request """ # read address, instance, start record and record count address, obj_inst, start, count = args # 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) # check if record count is correct if not count.isdigit(): raise ValueError('record count invalid') # make record count to integer count = int(count) # create request if stream: request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( streamAccess=AtomicReadFileRequestAccessMethodChoiceStreamAccess( fileStartPosition=start, requestedOctetCount=count, ) ) ) else: request = AtomicReadFileRequest( fileIdentifier=(obj_type, obj_inst), accessMethod=AtomicReadFileRequestAccessMethodChoice( recordAccess=AtomicReadFileRequestAccessMethodChoiceRecordAccess( fileStartRecord=start, requestedRecordCount=count, ) ) ) # send to specified address request.pduDestination = Address(address) # return created request return request