123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #pragma once
- #include "acceptor_status.h"
- #include "defs.h"
- #include "event_loop.h"
- #include "netaddr.h"
- #include "session_impl.h"
- #include "shutdown_state.h"
- #include <library/cpp/messagebus/actor/actor.h>
- #include <util/system/event.h>
- namespace NBus {
- namespace NPrivate {
- class TAcceptor
- : public NEventLoop::IEventHandler,
- private ::NActor::TActor<TAcceptor> {
- friend struct TBusSessionImpl;
- friend class ::NActor::TActor<TAcceptor>;
- public:
- TAcceptor(TBusSessionImpl* session, ui64 acceptorId, SOCKET socket, const TNetAddr& addr);
- void HandleEvent(SOCKET socket, void* cookie) override;
- void Shutdown();
- inline ::NActor::TActor<TAcceptor>* GetActor() {
- return this;
- }
- private:
- void SendStatus(TInstant now);
- void Act(::NActor::TDefaultTag);
- private:
- const ui64 AcceptorId;
- TBusSessionImpl* const Session;
- NEventLoop::TChannelPtr Channel;
- TAcceptorStatus Stats;
- TAtomicShutdownState ShutdownState;
- struct TGranStatus {
- TGranStatus(TDuration gran)
- : Listen(gran)
- {
- }
- TGranUp<TAcceptorStatus> Listen;
- };
- TGranStatus GranStatus;
- };
- }
- }
|