Class: Takagi::Base
- Extended by:
- MiddlewareManagement, PluginManagement, ReactorManagement, ServerLifecycle
- Defined in:
- lib/takagi/base.rb,
lib/takagi/base/server_lifecycle.rb,
lib/takagi/base/plugin_management.rb,
lib/takagi/base/reactor_management.rb,
lib/takagi/base/middleware_management.rb
Overview
Base class that every Takagi based app should use.
Provides a Sinatra-like DSL for building CoAP servers with support for:
-
Route registration (GET, POST, PUT, DELETE, OBSERVE)
-
Middleware stack
-
Reactor pattern for observables/observers
-
Multi-protocol servers (UDP, TCP)
This class now follows Single Responsibility Principle by delegating specific concerns to focused modules:
-
ServerLifecycle: Boot, run, spawn operations
-
MiddlewareManagement: Middleware stack configuration
-
ReactorManagement: Observable/observer patterns
Direct Known Subclasses
Defined Under Namespace
Modules: MiddlewareManagement, PluginManagement, ReactorManagement, ServerLifecycle
Constant Summary
Constants inherited from Router
Router::DEFAULT_CONTENT_FORMAT
Class Method Summary collapse
-
.core(path, method: :get, &block) ⇒ Object
Configures CoRE Link Format metadata for an existing route.
-
.observable(path, metadata: {}, &block) ⇒ Object
Registers an OBSERVE route in the global router (server-side) Use this to make a resource observable by clients.
-
.router ⇒ Router
Returns the global router instance.
Methods included from ServerLifecycle
Methods included from MiddlewareManagement
Methods included from ReactorManagement
reactor, start_reactors, stop_reactors, use_reactor
Methods included from PluginManagement
Methods inherited from Router
#add_route, #all_routes, #configure_core, #find_observable, #find_route, #initialize, instance, #link_format_entries, #observable, reset!
Constructor Details
This class inherits a constructor from Takagi::Router
Class Method Details
.core(path, method: :get, &block) ⇒ Object
Configures CoRE Link Format metadata for an existing route. Handy when you want to declare handlers and metadata separately (e.g., during boot).
71 72 73 |
# File 'lib/takagi/base.rb', line 71 def self.core(path, method: :get, &block) router.configure_core(method.to_s.upcase, path, &block) end |
.observable(path, metadata: {}, &block) ⇒ Object
Registers an OBSERVE route in the global router (server-side) Use this to make a resource observable by clients
65 66 67 |
# File 'lib/takagi/base.rb', line 65 def self.observable(path, metadata: {}, &block) router.observable(path, metadata: , &block) end |