Exemple #1
0
def main():
    if len(sys.argv) <= 2:
        print(f'Usage: {sys.argv[0]} <name> <file>')
        exit(0)
    logging.basicConfig(format='[{asctime}]{levelname}:{message}',
                        datefmt='%Y-%m-%d %H:%M:%S',
                        level=logging.INFO,
                        style='{')

    app = NDNApp()
    name = Name.normalize(sys.argv[1])
    name.append(Component.from_version(timestamp()))

    with open(sys.argv[2], 'rb') as f:
        data = f.read()
        seg_cnt = (len(data) + SEGMENT_SIZE - 1) // SEGMENT_SIZE
        packets = [app.prepare_data(name + [Component.from_segment(i)],
                                    data[i*SEGMENT_SIZE:(i+1)*SEGMENT_SIZE],
                                    freshness_period=10000,
                                    final_block_id=Component.from_segment(seg_cnt - 1))
                   for i in range(seg_cnt)]
    print(f'Created {seg_cnt} chunks under name {Name.to_str(name)}')

    @app.route(name)
    def on_interest(int_name, _int_param, _app_param):
        if Component.get_type(int_name[-1]) == Component.TYPE_SEGMENT:
            seg_no = Component.to_number(int_name[-1])
        else:
            seg_no = 0
        if seg_no < seg_cnt:
            app.put_raw_packet(packets[seg_no])

    app.run_forever()
Exemple #2
0
 def on_interest(name, param, _app_param):
     print(f'>> I: {Name.to_str(name)}, {param}')
     content = "world!".encode()
     data_name = name + [Component.from_version(timestamp())]
     app.put_data(data_name, content=content, freshness_period=10000)
     print(f'<< D: {Name.to_str(data_name)}')
     print(f'Content: {content.decode()}')
     print('')
Exemple #3
0
 def test_number():
     assert Component.from_segment(13) == b'!\x01\r'
     assert Component.from_byte_offset(13) == b'\x22\x01\r'
     assert Component.from_sequence_num(13) == b'%\x01\r'
     assert Component.from_version(13) == b'#\x01\r'
     timeval = 15686790223318112
     comp = Component.from_timestamp(timeval)
     assert Component.get_type(comp) == 36
     assert Component.get_value(comp) == b'\x00\x37\xbb\x0d\x76\xed\x4c\x60'
     assert Component.to_number(comp) == timeval
Exemple #4
0
 def on_interest(name, param, _app_param):
     print(f'>> I: {Name.to_str(name)}, {param}')
     content = "world!".encode()
     data_name = name + [Component.from_version(timestamp())]
     sign_cert_name = checker.suggest(data_name, app.keychain)
     print(f'        Suggested signing cert: {Name.to_str(sign_cert_name)}')
     app.put_data(data_name, content=content, freshness_period=10000, cert=sign_cert_name)
     print(f'<< D: {Name.to_str(data_name)}')
     print(f'Content: {content.decode()}')
     print('')
Exemple #5
0
    def test_number():
        assert Component.from_segment(13) == b'!\x01\r'
        assert Component.from_byte_offset(13) == b'\x22\x01\r'
        assert Component.from_sequence_num(13) == b'%\x01\r'
        assert Component.from_version(13) == b'#\x01\r'
        timeval = 15686790223318112
        comp = Component.from_timestamp(timeval)
        assert Component.get_type(comp) == 36
        assert Component.get_value(comp) == b'\x00\x37\xbb\x0d\x76\xed\x4c\x60'
        assert Component.to_number(comp) == timeval

        assert Component.to_str(Component.from_segment(13)) == 'seg=13'
        assert Component.to_str(Component.from_byte_offset(13)) == 'off=13'
        assert Component.to_str(Component.from_sequence_num(13)) == 'seq=13'
        assert Component.to_str(Component.from_version(13)) == 'v=13'
        assert Component.to_str(
            Component.from_timestamp(timeval)) == 't=15686790223318112'

        assert Component.from_str('seg=13') == b'!\x01\r'
        assert Component.from_str('off=13') == b'\x22\x01\r'
        assert Component.from_str('seq=13') == b'%\x01\r'
        assert Component.from_str('v=13') == b'#\x01\r'
        assert Component.from_str(
            't=15686790223318112') == b'$\x08\x007\xbb\rv\xedL`'