Public Types | |
| using | IoResult = int | 
| using | CbType = std::function< void(IoResult, int64_t, Proactor *)> | 
Public Member Functions | |
| void | Run (unsigned ring_depth=512, int wq_fd=-1) | 
| void | Stop () | 
| Signals proactor to stop. Does not wait for it.  | |
| SubmitEntry | GetSubmitEntry (CbType cb, int64_t payload) | 
| Get the Submit Entry object in order to issue I/O request.  More... | |
| bool | InMyThread () const | 
| Returns true if the called is running in this Proactor thread.  More... | |
| auto | thread_id () const | 
| bool | HasFastPoll () const | 
| template<typename Func > | |
| void | AsyncBrief (Func &&brief) | 
| template<typename Func > | |
| auto | AwaitBrief (Func &&brief) -> decltype(brief()) | 
| Similarly to AsyncBrief but waits 'f' to return.  | |
| template<typename Func , typename... Args> | |
| void | AsyncFiber (Func &&f, Args &&... args) | 
| template<typename... Args> | |
| boost::fibers::fiber | LaunchFiber (Args &&... args) | 
| template<typename Func > | |
| auto | AwaitBlocking (Func &&f) -> decltype(f()) | 
| void | RegisterSignal (std::initializer_list< uint16_t > l, std::function< void(int)> cb) | 
| void | ClearSignal (std::initializer_list< uint16_t > l) | 
| int | ring_fd () const | 
Static Public Member Functions | |
| static bool | IsProactorThread () | 
| static uint64_t | GetMonotonicTimeNs () | 
| static int32_t | GetIndex () | 
| static void | SetIndex (uint32_t index) | 
Definition at line 25 of file proactor.h.
| void util::uring::Proactor::AsyncBrief | ( | Func && | brief | ) | 
Message passing functions.Fire and forget - does not wait for the function to be called. f should not block, lock on mutexes or Await. Might block the calling fiber if the queue is full. 
Definition at line 229 of file proactor.h.
      
  | 
  inline | 
Similarly to AsyncBrief but 'f' but wraps 'f' in fiber. f is allowed to fiber-block or await.
Definition at line 117 of file proactor.h.
| SubmitEntry util::uring::Proactor::GetSubmitEntry | ( | CbType | cb, | 
| int64_t | payload | ||
| ) | 
Get the Submit Entry object in order to issue I/O request.
| cb | - completion callback. | 
| payload | - an argument to the completion callback that is further passed as the second argument to CbType(). Can be nullptr if no notification is required. | 
This method might block the calling fiber therefore it should not be called within proactor context. In other words it can not be called from *Brief([]...) calls to Proactor. In addition, this method can not be used for introducing IOSQE_IO_LINK chains since they require atomic SQE allocation.
Definition at line 378 of file proactor.cc.
      
  | 
  inline | 
Returns true if the called is running in this Proactor thread.
Definition at line 69 of file proactor.h.
| void util::uring::Proactor::Run | ( | unsigned | ring_depth = 512,  | 
        
| int | wq_fd = -1  | 
        ||
| ) | 
If tq_seq_ has changed since it was cached into tq_seq, then EmplaceTaskQueue succeeded and we might have more tasks to execute - lets run the loop again. Otherwise, set tq_seq_ to WAIT_SECTION, hinting that we are going to stall now. Other threads will need to wake-up the ring (see WakeRing()) but only the they will actually syscall only once.
Definition at line 151 of file proactor.cc.
 1.8.15