Skip to content
Snippets Groups Projects
Select Git revision
  • c822d7bd595eb4c104c622cdebabbf05ba37dbaf
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
31 results

Call.cpp

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;
    }