pica/server/session.h

45 lines
1.1 KiB
C++

//SPDX-FileCopyrightText: 2023 Yury Gubich <blue@macaw.me>
//SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <string>
#include "request/accepting.h"
#include "taskmanager/scheduler.h"
class Session : public Accepting {
public:
Session(
std::weak_ptr<TM::Scheduler> scheduler,
unsigned int id,
unsigned int owner,
const std::string& access,
const std::string& renew,
unsigned int timeout
);
Session(const Session&) = delete;
Session(Session&& other) = delete;
~Session();
Session& operator = (const Session&) = delete;
Session& operator = (Session&& other) = delete;
std::string getAccessToken() const;
std::string getRenewToken() const;
void accept(std::unique_ptr<Request> request) override;
const unsigned int id;
const unsigned int owner;
private:
void onTimeout();
private:
std::weak_ptr<TM::Scheduler> scheduler;
std::string access;
std::string renew;
std::unique_ptr<Request> polling;
TM::Record::ID timeoutId;
TM::Scheduler::Delay timeout;
};