Skip to content
Snippets Groups Projects
Select Git revision
  • aa375a7f893bc7bf2f88f6dccdf59e5c016cf37c
  • master default protected
  • beta/202506161038
  • stable/20250613.0
  • nightly/20250613.0
  • beta/202506101658
  • stable/20250610.0
  • nightly/20250610.0
  • beta/202506091027
  • beta/202506061543
  • nightly/20250605.0
  • beta/202506051039
  • beta/202506051002
  • beta/202506041611
  • beta/202506041335
  • beta/202505231812
  • stable/20250523.0
  • nightly/20250523.0
  • nightly/20250515.0
  • nightly/20250510.0
  • nightly/20250509.1
  • nightly/20250509.0
22 results

JamiFileDialog.qml

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    dht_proxy_client.cpp 46.12 KiB
    /*
     *  Copyright (C) 2014-2020 Savoir-faire Linux Inc.
     *  Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
     *          Adrien Béraud <adrien.beraud@savoirfairelinux.com>
     *          Vsevolod Ivanov <vsevolod.ivanov@savoirfairelinux.com>
     *
     *  This program is free software; you can redistribute it and/or modify
     *  it under the terms of the GNU General Public License as published by
     *  the Free Software Foundation; either version 3 of the License, or
     *  (at your option) any later version.
     *
     *  This program is distributed in the hope that it will be useful,
     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *  GNU General Public License for more details.
     *
     *  You should have received a copy of the GNU General Public License
     *  along with this program. If not, see <https://www.gnu.org/licenses/>.
     */
    
    #include "dht_proxy_client.h"
    #include "dhtrunner.h"
    #include "op_cache.h"
    #include "utils.h"
    
    #include <http_parser.h>
    #include <deque>
    
    namespace dht {
    
    struct DhtProxyClient::InfoState {
        std::atomic_uint ipv4 {0}, ipv6 {0};
        std::atomic_bool cancel {false};
    };
    
    struct DhtProxyClient::OperationState {
        std::atomic_bool ok {true};
        std::atomic_bool stop {false};
    };
    
    struct DhtProxyClient::Listener
    {
        Listener(OpValueCache&& c):
            cache(std::move(c))
        {}
    
        unsigned callbackId;
        OpValueCache cache;
        CacheValueCallback cb;
        Sp<OperationState> opstate;
        std::shared_ptr<http::Request> request;
        std::unique_ptr<asio::steady_timer> refreshSubscriberTimer;
    };
    
    struct PermanentPut {
        PermanentPut(const Sp<Value>& v, std::unique_ptr<asio::steady_timer>&& j,
                     const Sp<std::atomic_bool>& o):
            value(v), refreshPutTimer(std::move(j)), ok(o)
        {}
    
        Sp<Value> value;
        std::unique_ptr<asio::steady_timer> refreshPutTimer;
        Sp<std::atomic_bool> ok;
    };
    
    struct DhtProxyClient::ProxySearch {
        SearchCache ops {};
        std::unique_ptr<asio::steady_timer> opExpirationTimer;
        std::map<size_t, Listener> listeners {};
        std::map<Value::Id, PermanentPut> puts {};