Files
Solax/myenv/lib/python3.12/site-packages/reactivex/scheduler/scheduleditem.py
2024-09-13 09:46:28 +02:00

50 lines
1.4 KiB
Python

from datetime import datetime
from typing import Any, Optional, TypeVar
from reactivex import abc
from reactivex.disposable import SingleAssignmentDisposable
from .scheduler import Scheduler
_TState = TypeVar("_TState")
class ScheduledItem(object):
def __init__(
self,
scheduler: Scheduler,
state: Optional[_TState],
action: abc.ScheduledAction[_TState],
duetime: datetime,
) -> None:
self.scheduler: Scheduler = scheduler
self.state: Optional[Any] = state
self.action: abc.ScheduledAction[_TState] = action
self.duetime: datetime = duetime
self.disposable: SingleAssignmentDisposable = SingleAssignmentDisposable()
def invoke(self) -> None:
ret = self.scheduler.invoke_action(self.action, state=self.state)
self.disposable.disposable = ret
def cancel(self) -> None:
"""Cancels the work item by disposing the resource returned by
invoke_core as soon as possible."""
self.disposable.dispose()
def is_cancelled(self) -> bool:
return self.disposable.is_disposed
def __lt__(self, other: "ScheduledItem") -> bool:
return self.duetime < other.duetime
def __gt__(self, other: "ScheduledItem") -> bool:
return self.duetime > other.duetime
def __eq__(self, other: Any) -> bool:
try:
return self.duetime == other.duetime
except AttributeError:
return NotImplemented