abstract class Crystal::EventLoop

Included Modules

Defined in:

crystal/system/event_loop.cr:1
crystal/system/event_loop.cr:65
crystal/system/event_loop/file_descriptor.cr
crystal/system/event_loop/socket.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module Crystal::EventLoop::Socket

accept(socket : ::Socket) : ::Socket::Handle | Nil accept, close(socket : ::Socket) : Nil close, connect(socket : ::Socket, address : ::Socket::Addrinfo | ::Socket::Address, timeout : Time::Span | Nil) : IO::Error | Nil connect, read(socket : ::Socket, slice : Bytes) : Int32 read, receive_from(socket : ::Socket, slice : Bytes) : Tuple(Int32, ::Socket::Address) receive_from, remove(socket : ::Socket) : Nil remove, send_to(socket : ::Socket, slice : Bytes, address : ::Socket::Address) : Int32 send_to, write(socket : ::Socket, slice : Bytes) : Int32 write

Instance methods inherited from module Crystal::EventLoop::FileDescriptor

close(file_descriptor : Crystal::System::FileDescriptor) : Nil close, read(file_descriptor : Crystal::System::FileDescriptor, slice : Bytes) : Int32 read, remove(file_descriptor : Crystal::System::FileDescriptor) : Nil remove, write(file_descriptor : Crystal::System::FileDescriptor, slice : Bytes) : Int32 write

Instance methods inherited from class Reference

==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other)
==
, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil)
same?
, to_s(io : IO) : Nil to_s

Constructor methods inherited from class Reference

new new, unsafe_construct(address : Pointer, *args, **opts) : self unsafe_construct

Class methods inherited from class Reference

pre_initialize(address : Pointer) pre_initialize

Instance methods inherited from class Object

! : Bool !, !=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other)
===
, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash
hash
, in?(collection : Object) : Bool
in?(*values : Object) : Bool
in?
, inspect(io : IO) : Nil
inspect : String
inspect
, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil!
not_nil!
, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String
to_json
, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil
to_pretty_json
, to_s(io : IO) : Nil
to_s : String
to_s
, to_yaml(io : IO) : Nil
to_yaml : String
to_yaml
, try(&) try, unsafe_as(type : T.class) forall T unsafe_as

Class methods inherited from class Object

from_json(string_or_io, root : String)
from_json(string_or_io)
from_json
, from_yaml(string_or_io : String | IO) from_yaml

Macros inherited from class Object

class_getter(*names, &block) class_getter, class_getter!(*names) class_getter!, class_getter?(*names, &block) class_getter?, class_property(*names, &block) class_property, class_property!(*names) class_property!, class_property?(*names, &block) class_property?, class_setter(*names) class_setter, def_clone def_clone, def_equals(*fields) def_equals, def_equals_and_hash(*fields) def_equals_and_hash, def_hash(*fields) def_hash, delegate(*methods, to object) delegate, forward_missing_to(delegate) forward_missing_to, getter(*names, &block) getter, getter!(*names) getter!, getter?(*names, &block) getter?, property(*names, &block) property, property!(*names) property!, property?(*names, &block) property?, setter(*names) setter

Constructor Detail

def self.create : self #

Creates an event loop instance


[View source]
def self.current : self #

[View source]

Class Method Detail

def self.current? : self | Nil #

[View source]

Instance Method Detail

abstract def create_resume_event(fiber : Fiber) : Event #

Create a new resume event for a fiber.


[View source]
abstract def create_timeout_event(fiber : Fiber) : Event #

Creates a timeout_event.


[View source]
abstract def interrupt : Nil #

Tells a blocking run loop to no longer wait for events to activate. It may for example enqueue a NOOP event with an immediate (or past) timeout. Having activated an event, the loop shall return, allowing the blocked thread to continue.

Should be a NOOP when the loop isn't running or is running in a nonblocking mode.

NOTE we assume that multiple threads won't run the event loop at the same time in parallel, but this assumption may change in the future!


[View source]
abstract def run(blocking : Bool) : Bool #

Runs the loop.

Returns immediately if events are activable. Set blocking to false to return immediately if there are no activable events; set it to true to wait for activable events, which will block the current thread until then.

Returns true on normal returns (e.g. has activated events, has pending events but blocking was false) and false when there are no registered events.


[View source]