Skip to content

Instantly share code, notes, and snippets.

/// This module contains helpers for managing lifetime of async functions.
/// In particular, it wraps the following two things from tokio:
/// * cancellation token to notify "async functions/actors" that they have to stop and
/// * tokio::sync::mpsc::Sender object (when it is dropped, parent knows that all its "children" has stopped)
/// We use a channel to wait until all children has died (likely, because cancellation_token had told them)
/// See more at https://tokio.rs/tokio/topics/shutdown
/// Usage:
/// ```
[INFO rust_analyzer] server version 1.66.1 (90743e7 2023-01-10) will start
[DEBUG lsp_server::msg] < {"id":"{27e2e516-4b7a-4eeb-a401-00ea75e9a878}","jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["*"]}}},"completion":{"completionItem":{"commitCharacterSupport":true,"snippetSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"dynamicRegistration":true},"definition":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration
[INFO rust_analyzer] server version 1.66.1 (90743e7 2023-01-10) will start
[DEBUG lsp_server::msg] < {"id":"{712d7cfd-17db-4e8d-9cdf-4ae71c43b15d}","jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["*"]}}},"completion":{"completionItem":{"commitCharacterSupport":true,"snippetSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"dynamicRegistration":true},"definition":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration
#include "TJwt.h"
#include "memory.h"
#include "TJwt_p.h"
#include <cstring>
#include <memory>
#include <openssl/bio.h>
#include <openssl/crypto.h>
#include <openssl/hmac.h>
@DimanNe
DimanNe / TJwt.h
Created September 22, 2022 08:54
class QIODevice;
class THashData {
public:
QByteArray Data;
QString ToHexString() const {
QString Result = Data.toHex().toLower();
return Result;
}
import fileinput
from datetime import datetime
import itertools as itl
def nwise(iterable, n=2):
iters = itl.tee(iterable, n)
for i, it in enumerate(iters):
next(itl.islice(it, i, i), None)
return zip(*iters)
0.000 / 0.653 ms: 13:13:56.452820 execve("/usr/bin/sleep", ["sleep", "1"], 0x7ffded01ecb0 /* 53 vars */) = 0
0.653 / 0.023 ms: 13:13:56.453473 brk(NULL) = 0x5617efdea000
0.676 / 0.063 ms: 13:13:56.453496 arch_prctl(0x3001 /* ARCH_??? */, 0x7fffeb7041b0) = -1 EINVAL (Invalid argument)
0.739 / 0.020 ms: 13:13:56.453559 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
0.759 / 0.017 ms: 13:13:56.453579 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
0.776 / 0.515 ms: 13:13:56.453596 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=104209, ...}, AT_EMPTY_PATH) = 0
1.291 / 0.025 ms: 13:13:56.454111 mmap(NULL, 104209, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f6d31fba000
1.316 / 0.022 ms: 13:13:56.454136 close(3) = 0
1.338 / 0.016 ms: 13:13:56.454158 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
1.354 / 0.016 ms: 13:13:56.454174 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\342\2\0\0\0\0\0"..., 832) = 832
0.000 / 1.008 ms: 12:12:03.164063 execve("/usr/bin/sleep", ["sleep", "1"], 0x7ffd0bd93e50 /* 13 vars */) = 0
1.008 / 0.119 ms: 12:12:03.165071 brk(NULL) = 0x55b78c484000
1.127 / 0.102 ms: 12:12:03.165190 arch_prctl(0x3001 /* ARCH_??? */, 0x7ffcb5dfd850) = -1 EINVAL (Invalid argument)
1.229 / 0.095 ms: 12:12:03.165292 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
1.324 / 0.079 ms: 12:12:03.165387 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
1.403 / 0.289 ms: 12:12:03.165466 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=36066, ...}, AT_EMPTY_PATH) = 0
1.692 / 0.081 ms: 12:12:03.165755 mmap(NULL, 36066, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f46d9151000
1.773 / 0.075 ms: 12:12:03.165836 close(3) = 0
1.848 / 0.081 ms: 12:12:03.165911 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
1.929 / 0.079 ms: 12:12:03.165992 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\206\2\0\0\0\0\0"..., 832) = 832
strace -tt ./a.out
17:59:24.176652 execve("./a.out", ["./a.out"], 0x7fff100cfe78 /* 24 vars */) = 0
17:59:24.177070 brk(NULL) = 0x560de05df000
17:59:24.177119 arch_prctl(0x3001 /* ARCH_??? */, 0x7ffd4b1f97c0) = -1 EINVAL (Invalid argument)
17:59:24.177174 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd2a80b3000
17:59:24.177202 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
17:59:24.177246 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:59:24.177275 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffd4b1f89f0, 0) = -1 ENOENT (No such file or directory)
17:59:24.181884 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
17:59:24.181912 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffd4b1f89f0, 0) = -1 EN
This file has been truncated, but you can view the full file.
TypeHierarchyBuilder::buildDerivedTypeHierarchy 1: symbol: "14 25 /home/dimanne/devel/chromium/src/base/single_thread_task_runner.h"
TypeHierarchyBuilder::buildDerivedTypeHierarchy: symbol: "14 25 /home/dimanne/devel/chromium/src/base/single_thread_task_runner.h"
TypeHierarchyBuilder::buildDerived: typeHierarchy: "" depth: 0
unqualifyName: qualifiedName: "base::SingleThreadTaskRunner"
filesDependingOn: symbol: "14 25 /home/dimanne/devel/chromium/src/base/single_thread_task_runner.h"
DerivedHierarchyVisitor::execute: doc: "/home/dimanne/devel/chromium/src/base/single_thread_task_runner.h"
DerivedHierarchyVisitor::visit: symbol: "14 25 /home/dimanne/devel/chromium/src/base/single_thread_task_runner.h"
TypeHierarchyBuilder::followTypedef: enclosingScope: "2 11 /home/dimanne/devel/chromium/src/base/single_thread_task_runner.h" symbolName: "SequencedTaskRunner"
DerivedHierarchyVisitor::execute: doc: "/home/dimanne/devel/chromium/src/base/test/test_io_thread.h"
DerivedHierarchyVisitor::visit: symbol: "5