blob: db4bb2321705d6a39d46d513272fa53b7d25b00a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/*
* DO NOT EDIT! generated by embed_mruby_code.pl
* Please refer to the respective source files for copyright information.
*/
/* lib/handler/mruby/embedded/core.rb */
#define H2O_MRUBY_CODE_CORE \
"module Kernel\n" \
" def _h2o_define_callback(name, id)\n" \
" Kernel.define_method(name) do |*args|\n" \
" ret = Fiber.yield([ id, _h2o_create_resumer(), args ])\n" \
" if ret.kind_of? Exception\n" \
" raise ret\n" \
" end\n" \
" ret\n" \
" end\n" \
" end\n" \
" def _h2o_create_resumer()\n" \
" me = Fiber.current\n" \
" Proc.new do |v|\n" \
" me.resume(v)\n" \
" end\n" \
" end\n" \
" def _h2o_proc_each_to_array()\n" \
" Proc.new do |o|\n" \
" a = []\n" \
" o.each do |x|\n" \
" a << x\n" \
" end\n" \
" a\n" \
" end\n" \
" end\n" \
" def _h2o_proc_app_to_fiber()\n" \
" Proc.new do |app|\n" \
" cached = nil\n" \
" Proc.new do |req|\n" \
" fiber = cached\n" \
" cached = nil\n" \
" if !fiber\n" \
" fiber = Fiber.new do\n" \
" self_fiber = Fiber.current\n" \
" req = Fiber.yield\n" \
" while 1\n" \
" begin\n" \
" while 1\n" \
" resp = app.call(req)\n" \
" cached = self_fiber\n" \
" req = Fiber.yield(resp)\n" \
" end\n" \
" rescue => e\n" \
" cached = self_fiber\n" \
" req = Fiber.yield([-1, e])\n" \
" end\n" \
" end\n" \
" end\n" \
" fiber.resume\n" \
" end\n" \
" fiber.resume(req)\n" \
" end\n" \
" end\n" \
" end\n" \
"end\n"
/* lib/handler/mruby/embedded/http_request.rb */
#define H2O_MRUBY_CODE_HTTP_REQUEST \
"module H2O\n" \
" class HttpRequest\n" \
" def join\n" \
" if !@resp\n" \
" @resp = _h2o__http_join_response(self)\n" \
" end\n" \
" @resp\n" \
" end\n" \
" def _set_response(resp)\n" \
" @resp = resp\n" \
" end\n" \
" end\n" \
" class HttpInputStream\n" \
" def each\n" \
" while c = _h2o__http_fetch_chunk(self)\n" \
" yield c\n" \
" end\n" \
" end\n" \
" def join\n" \
" s = \"\"\n" \
" each do |c|\n" \
" s << c\n" \
" end\n" \
" s\n" \
" end\n" \
" class Empty < HttpInputStream\n" \
" def each; end\n" \
" end\n" \
" end\n" \
"end\n"
/* lib/handler/mruby/embedded/chunked.rb */
#define H2O_MRUBY_CODE_CHUNKED \
"module Kernel\n" \
" def _h2o_chunked_proc_each_to_fiber()\n" \
" Proc.new do |src|\n" \
" fiber = Fiber.new do\n" \
" src.each do |chunk|\n" \
" _h2o_send_chunk(chunk)\n" \
" end\n" \
" _h2o_send_chunk_eos()\n" \
" end\n" \
" fiber.resume\n" \
" end\n" \
" end\n" \
"end\n"
|