@@ -40,6 +40,7 @@ const BufReadSize = 1024; // 1KB
4040const MaxStdOutSize = 512 ; // ensure debug msg are not too long
4141
4242pub const Cmd = struct {
43+ loop : * public.Loop ,
4344
4445 // internal fields
4546 socket : std.posix.socket_t ,
@@ -63,7 +64,7 @@ pub const Cmd = struct {
6364
6465 if (size == 0 ) {
6566 // continue receving incomming messages asynchronously
66- self .loop () .io .recv (* Cmd , self , cbk , completion , self .socket , self .buf );
67+ self .loop .io .recv (* Cmd , self , cbk , completion , self .socket , self .buf );
6768 return ;
6869 }
6970
@@ -84,7 +85,7 @@ pub const Cmd = struct {
8485 self .msg_buf .read (self .alloc (), input , self , Cmd .do ) catch unreachable ;
8586
8687 // continue receving incomming messages asynchronously
87- self .loop () .io .recv (* Cmd , self , cbk , completion , self .socket , self .buf );
88+ self .loop .io .recv (* Cmd , self , cbk , completion , self .socket , self .buf );
8889 }
8990
9091 // shortcuts
@@ -93,11 +94,6 @@ pub const Cmd = struct {
9394 return self .browser .currentSession ().alloc ;
9495 }
9596
96- inline fn loop (self : * Cmd ) public.Loop {
97- // TODO: pointer instead?
98- return self .browser .currentSession ().loop ;
99- }
100-
10197 inline fn env (self : Cmd ) public.Env {
10298 return self .browser .currentSession ().env ;
10399 }
@@ -193,7 +189,7 @@ const Send = struct {
193189 return ;
194190 };
195191
196- self .cmd .loop () .io .send (* Send , self , Send .asyncCbk , completion , self .cmd .socket , self .buf );
192+ self .cmd .loop .io .send (* Send , self , Send .asyncCbk , completion , self .cmd .socket , self .buf );
197193 }
198194
199195 fn asyncCbk (self : * Send , completion : * Completion , result : SendError ! usize ) void {
@@ -209,12 +205,12 @@ const Send = struct {
209205
210206pub fn sendLater (ctx : * Cmd , msg : []const u8 , ns : u63 ) ! void {
211207 const sd = try Send .init (ctx , msg );
212- ctx .loop () .io .timeout (* Send , sd .ctx , Send .laterCbk , sd .completion , ns );
208+ ctx .loop .io .timeout (* Send , sd .ctx , Send .laterCbk , sd .completion , ns );
213209}
214210
215211pub fn sendAsync (ctx : * Cmd , msg : []const u8 ) ! void {
216212 const sd = try Send .init (ctx , msg );
217- ctx .loop () .io .send (* Send , sd .ctx , Send .asyncCbk , sd .completion , ctx .socket , msg );
213+ ctx .loop .io .send (* Send , sd .ctx , Send .asyncCbk , sd .completion , ctx .socket , msg );
218214}
219215
220216pub fn sendSync (ctx : * Cmd , msg : []const u8 ) ! void {
@@ -237,15 +233,14 @@ const Accept = struct {
237233 };
238234
239235 // receving incomming messages asynchronously
240- self .cmd .loop () .io .recv (* Cmd , self .cmd , Cmd .cbk , completion , self .cmd .socket , self .cmd .buf );
236+ self .cmd .loop .io .recv (* Cmd , self .cmd , Cmd .cbk , completion , self .cmd .socket , self .cmd .buf );
241237 }
242238};
243239
244240// Listen
245241// ------
246242
247- pub fn listen (browser : * Browser , socket : std.posix.socket_t ) anyerror ! void {
248- const loop = browser .currentSession ().loop ;
243+ pub fn listen (browser : * Browser , loop : * public.Loop , socket : std.posix.socket_t ) anyerror ! void {
249244
250245 // MsgBuffer
251246 var msg_buf = try MsgBuffer .init (loop .alloc , BufReadSize * 256 ); // 256KB
@@ -255,6 +250,7 @@ pub fn listen(browser: *Browser, socket: std.posix.socket_t) anyerror!void {
255250 // for accepting connections and receving messages
256251 var ctxInput : [BufReadSize ]u8 = undefined ;
257252 var cmd = Cmd {
253+ .loop = loop ,
258254 .browser = browser ,
259255 .socket = undefined ,
260256 .buf = & ctxInput ,
0 commit comments