Skip to content
Snippets Groups Projects
Select Git revision
  • 6c96a47f13ebcb790ee8de7cbef8549336fa57ed
  • master default
  • windows_ci_static
  • c_link
  • cpack
  • windows_ci
  • cert_pk_id
  • proxy_push_result
  • cnode_put_id
  • update-windows-build
  • proxy
  • resubscribe_on_token_change
  • actions
  • client_mode
  • llhttp
  • search_node_add
  • crypto_aes_gcm_argon2
  • ios_notifications
  • log_fmt
  • v2asio
  • fix-msvc
  • v3.4.0
  • v3.3.1
  • v3.3.1rc1
  • v3.3.1rc2
  • v3.3.0
  • v3.2.0
  • v3.1.11
  • v3.1.10
  • v3.1.9
  • v3.1.8.2
  • v3.1.8.1
  • v3.1.8
  • v3.1.7
  • v3.1.6
  • v3.1.5
  • v3.1.4
  • v3.1.3
  • v3.1.2
  • v3.1
  • v3.0.1
41 results

dhtcnode.c

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    dhtcnode.c 1.51 KiB
    #include <c/opendht_c.h>
    
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    
    bool dht_value_callback(const dht_value* value, bool expired, void* user_data)
    {
        dht_runner* runner = (dht_runner*)user_data;
        dht_data_view data = dht_value_get_data(value);
        printf("Value callback %s: %.*s.\n", expired ? "expired" : "new", (int)data.size, data.data);
    }
    
    bool dht_get_callback(const dht_value* value, void* user_data)
    {
        dht_runner* runner = (dht_runner*)user_data;
        dht_data_view data = dht_value_get_data(value);
        printf("Get callback: %.*s.\n", (int)data.size, data.data);
    }
    
    bool dht_done_callback(bool ok, void* user_data)
    {
        dht_runner* runner = (dht_runner*)user_data;
        printf("Done callback. %s\n", ok ? "Success !" : "Failure :-(");
    }
    
    int main()
    {
        dht_runner* runner = dht_runner_new();
        dht_runner_run(runner, 4040);
    
        dht_infohash h;
        dht_infohash_random(&h);
    
        printf("random hash: %s\n", dht_infohash_print(&h));
    
        // Put data
        const char* data_str = "yo, this is some data";
        dht_value* val = dht_value_new(data_str, strlen(data_str));
        dht_runner_put(runner, &h, val, dht_done_callback, runner);
        dht_value_unref(val);
    
        // Get data
        dht_runner_get(runner, &h, dht_get_callback, dht_done_callback, runner);
    
        // Listen for data
        dht_op_token* token = dht_runner_listen(runner, &h, dht_value_callback, runner);
    
        sleep(1);
    
        dht_runner_cancel_listen(runner, &h, token);
        dht_op_token_delete(token);
    
        dht_runner_delete(runner);
        return 0;
    }