X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fsac-a-push.phh;h=fe8ec42270f381713d77e398821eb63d3d71262d;hb=3ebedb90c5d41ce34cf4dd9dba00f12fb78d024a;hp=b931340b629509d865c78d620dc58286cd0f7215;hpb=44fb43fc14cc20e55dbc214f5e533b054e5b159c;p=brisk.git diff --git a/web/Obj/sac-a-push.phh b/web/Obj/sac-a-push.phh index b931340..fe8ec42 100644 --- a/web/Obj/sac-a-push.phh +++ b/web/Obj/sac-a-push.phh @@ -121,7 +121,7 @@ function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cook } // GET params management $get_vars = explode('?', $req[1], 2); - $path = $get_vars[0]; + $path = $get_vars[0]; if (count($get_vars) > 1) { $a = explode('&', $get_vars[1]); printf("A COUNT: [%s] %d\n", $a[0], count($a)); @@ -132,11 +132,15 @@ function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cook } // POST params management if ($req[0] == 'POST') { + $conttype_all = explode(";", $header['Content-Type']); + $header['Content-Type'] = $conttype_all[0]; + // $path_all[1-] other things like charset and so on + if ($header['Content-Type'] != 'application/x-www-form-urlencoded' || !isset($header['Content-Length'])) { return FALSE; } - $post_len = mb_strlen($line, "latin1"); + $post_len = mb_strlen($line, "ASCII"); $a = explode('&', $line); for ($i = 0 ; $i < count($a) ; $i++) { $b = explode('=', $a[$i]); @@ -372,7 +376,7 @@ class Sac_a_push { var $unix_socket; var $socks; var $s2u; - var $pages_flush; + var $pending_pages; var $list; var $in; @@ -425,7 +429,7 @@ class Sac_a_push { $thiz->debug = $debug; $thiz->socks = array(); $thiz->s2u = array(); - $thiz->pages_flush = array(); + $thiz->pending_pages = array(); // create a couple of sockets for control management if (($sockpair = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, @@ -485,9 +489,9 @@ class Sac_a_push { unset($this->socks[$id]); } - function pgflush_try_add($enc, &$new_socket, $tout, $header_out, $content) + function pendpage_try_addflush($enc, &$new_socket, $tout, $header_out, $content) { - $pgflush = new PageFlush($new_socket, $enc, $this->curtime, $tout, $header_out, $content); + $pgflush = PendingPage::pendingpage_flushing($new_socket, $enc, $this->curtime, $tout, $header_out, $content); if ($pgflush->try_flush($this->curtime) == FALSE) { // Add $pgflush to the pgflush array @@ -497,7 +501,7 @@ class Sac_a_push { function pgflush_add($pgflush) { - array_push($this->pages_flush, $pgflush); + array_push($this->pending_pages, $pgflush); } function garbage_manager($force) @@ -539,7 +543,7 @@ class Sac_a_push { while ($this->main_loop) { $this->curtime = time(); - printf("IN LOOP: Current opened: %d pages_flush: %d - ", count($this->socks), count($this->pages_flush)); + printf("IN LOOP: Current opened: %d pending_pages: %d - ", count($this->socks), count($this->pending_pages)); /* Prepare the read array */ /* // when we manage it ... */ @@ -589,8 +593,18 @@ class Sac_a_push { stream_set_blocking($new_socket, $this->blocking_mode); // Set the stream to non-blocking printf("RECEIVED HEADER:\n%s", $stream_info); $path = spu_process_info($stream_info, $method, $header, $get, $post, $cookie); + $addr = stream_socket_get_name($new_socket, TRUE); printf("PATH: [%s]\n", $path); printf("M: %s\nHEADER:\n", $method); + if ($method == "POST") { + // ADD PUSH INTO FD ARRAY AS WAITING DATA + // Passing all infos from spu_process_info as arguments: + // + // MAYBE: $stream_info, + // $method, $header, $get, $post, $cookie + // $s_a_p (this), $new_socket, substr($path, SITE_PREFIX_LEN), + // $addr + } print_r($header); printf("GET:\n"); print_r($get); @@ -598,11 +612,9 @@ class Sac_a_push { print_r($post); printf("COOKIE:\n"); print_r($cookie); - $addr = stream_socket_get_name($new_socket, TRUE); $header_out = array(); - $subs = SITE_PREFIX."briskin5/"; - $subs_l = strlen($subs); + // TODO: MOVE DOWN request_mgr to factorize new_sockets and POST closed $rret = FALSE; if (!strncmp($path, SITE_PREFIX, SITE_PREFIX_LEN)) { $rret = $this->app->request_mgr($this, $header, $header_out, $new_socket, substr($path, SITE_PREFIX_LEN), $addr, $get, $post, $cookie); @@ -621,6 +633,7 @@ class Sac_a_push { $buf = fread($sock, 512); // if socket is closed if ($buf == FALSE || strlen($buf) == 0) { + // close socket case if ($buf == FALSE) { printf("ERROR READING\n"); } @@ -678,15 +691,18 @@ class Sac_a_push { } } } + // TODO: MOVE HERE request_mgr to factorize new_sockets and POST closed + // $rret = $this->app->request_mgr } } $this->garbage_manager(FALSE); /* manage unfinished pages */ - foreach ($this->pages_flush as $k => $pgflush) { + foreach ($this->pending_pages as $k => $pgflush) { + // TODO: try_flush if exists in the class if ($pgflush->try_flush($this->curtime) == TRUE) { - unset($this->pages_flush[$k]); + unset($this->pending_pages[$k]); } }