view release on metacpan or search on metacpan
ccv-src/lib/nnc/ccv_nnc_symbolic_graph_compile.c view on Meta::CPAN
int j_hop_i = _ccv_nnc_tensor_block_head_after_tail(exec_dep, tensor_blocks[j], tensor_blocks[i]);
// It cannot be that both i can hop to j can j can hop to i.
assert(!(i_hop_j > 0 && j_hop_i > 0));
if (!i_hop_j && !j_hop_i)
ccv_set_sparse_matrix_cell(tensor_itf, i, j, &one);
}
}
int* oc = (int*)cccalloc(tensor_block_size, sizeof(int));
for (i = 0; i < tensor_block_size; i++)
for (j = 0; j < tensor_block_size; j++)
// If these two tensors are still alive, analyze them.
if (i != j && TENSOR_EXPECT_COMPUTABLE(tensor_blocks[i]) && TENSOR_EXPECT_COMPUTABLE(tensor_blocks[j]))
{
ccv_numeric_data_t cell = ccv_get_sparse_matrix_cell(tensor_itf, ccv_min(i, j), ccv_max(i, j));
// If their life time overlaps, compute how many tensors it overlap.
if (cell.u8 && cell.u8[0] == 1)
++oc[i];
}
int* assigned = (int*)cccalloc(tensor_block_size, sizeof(int));
uint64_t* allocated_offset = (uint64_t*)cccalloc(tensor_block_size, sizeof(uint64_t));
uint64_t* allocated_size = (uint64_t*)cccalloc(tensor_block_size, sizeof(uint64_t));
ccv-src/serve/ebb.c view on Meta::CPAN
connection->data = NULL;
}
void
ebb_connection_schedule_close(ebb_connection *connection)
{
ev_timer_start(connection->server->loop, &connection->goodbye_watcher);
}
/*
* Resets the timeout to stay alive for another connection->timeout seconds
*/
void
ebb_connection_reset_timeout(ebb_connection *connection)
{
ev_timer_again(connection->server->loop, &connection->timeout_watcher);
}
/**
* Writes a string to the socket. This is actually sets a watcher
* which may take multiple iterations to write the entire string.
ccv-src/serve/ebb_request_parser.c view on Meta::CPAN
tr108:
#line 87 "ebb_request_parser.rl"
{
//printf("write_value!\n");
HEADER_CALLBACK(header_value);
parser->header_value_mark = NULL;
}
goto st84;
tr133:
#line 127 "ebb_request_parser.rl"
{ CURRENT->keep_alive = FALSE; }
#line 87 "ebb_request_parser.rl"
{
//printf("write_value!\n");
HEADER_CALLBACK(header_value);
parser->header_value_mark = NULL;
}
goto st84;
tr143:
#line 126 "ebb_request_parser.rl"
{ CURRENT->keep_alive = TRUE; }
#line 87 "ebb_request_parser.rl"
{
//printf("write_value!\n");
HEADER_CALLBACK(header_value);
parser->header_value_mark = NULL;
}
goto st84;
tr221:
#line 138 "ebb_request_parser.rl"
{
ccv-src/serve/ebb_request_parser.c view on Meta::CPAN
request->eating_body = 0;
request->body_read = 0;
request->content_length = 0;
request->version_major = 0;
request->version_minor = 0;
request->number_of_headers = 0;
request->transfer_encoding = EBB_IDENTITY;
request->number_of_multipart_headers = 0;
request->multipart_boundary_len = 0;
request->multipart_boundary[0] = request->multipart_boundary[1] = '-';
request->keep_alive = -1;
request->on_complete = NULL;
request->on_headers_complete = NULL;
request->on_body = NULL;
request->on_multipart_headers_complete = NULL;
request->on_multipart_header_field = NULL;
request->on_multipart_header_value = NULL;
request->on_part_data_complete = NULL;
request->on_part_data = NULL;
request->on_header_field = NULL;
request->on_header_value = NULL;
request->on_uri = NULL;
request->on_fragment = NULL;
request->on_path = NULL;
request->on_query_string = NULL;
}
int ebb_request_should_keep_alive(ebb_request *request)
{
if(request->keep_alive == -1)
if(request->version_major == 1)
return (request->version_minor != 0);
else if(request->version_major == 0)
return FALSE;
else
return TRUE;
else
return request->keep_alive;
}
ccv-src/serve/ebb_request_parser.h view on Meta::CPAN
} transfer_encoding; /* ro */
size_t content_length; /* ro - 0 if unknown */
size_t body_read; /* ro */
int eating_body; /* ro */
int expect_continue; /* ro */
unsigned int version_major; /* ro */
unsigned int version_minor; /* ro */
int number_of_headers; /* ro */
int number_of_multipart_headers; /* ro */
int keep_alive; /* private - use ebb_request_should_keep_alive */
char multipart_boundary[EBB_MAX_MULTIPART_BOUNDARY_LEN]; /* ro */
unsigned int multipart_boundary_len; /* ro */
/* Public - ordered list of callbacks */
ebb_element_cb on_path;
ebb_element_cb on_query_string;
ebb_element_cb on_uri;
ebb_element_cb on_fragment;
ebb_header_cb on_header_field;
ccv-src/serve/ebb_request_parser.h view on Meta::CPAN
/* Public */
ebb_request* (*new_request)(void*);
void *data;
};
void ebb_request_parser_init(ebb_request_parser *parser);
size_t ebb_request_parser_execute(ebb_request_parser *parser, const char *data, size_t len);
int ebb_request_parser_has_error(ebb_request_parser *parser);
int ebb_request_parser_is_finished(ebb_request_parser *parser);
void ebb_request_init(ebb_request *);
int ebb_request_should_keep_alive(ebb_request *request);
#define ebb_request_has_body(request) \
(request->transfer_encoding == EBB_CHUNKED || request->content_length > 0 )
#endif
ccv-src/serve/ebb_request_parser.rl view on Meta::CPAN
action content_length {
//printf("content_length!\n");
CURRENT->content_length *= 10;
CURRENT->content_length += *p - '0';
}
action use_identity_encoding { CURRENT->transfer_encoding = EBB_IDENTITY; }
action use_chunked_encoding { CURRENT->transfer_encoding = EBB_CHUNKED; }
action set_keep_alive { CURRENT->keep_alive = TRUE; }
action set_not_keep_alive { CURRENT->keep_alive = FALSE; }
action multipart_boundary {
if(CURRENT->multipart_boundary_len == EBB_MAX_MULTIPART_BOUNDARY_LEN) {
cs = -1;
fbreak;
}
CURRENT->multipart_boundary[1 + (++CURRENT->multipart_boundary_len)] = *p;
parser->multipart_state = s_start;
}
ccv-src/serve/ebb_request_parser.rl view on Meta::CPAN
field_name = ( token -- ":" )+;
Field_Name = field_name >mark_header_field %write_field;
field_value = ((any - " ") any*)?;
Field_Value = field_value >mark_header_value %write_value;
hsep = ":" " "*;
header = (field_name hsep field_value) :> CRLF;
Header = ( ("Content-Length"i hsep digit+ $content_length)
| ("Connection"i hsep
( "Keep-Alive"i %set_keep_alive
| "close"i %set_not_keep_alive
)
)
| ("Content-Type"i hsep
"multipart/form-data" any*
"boundary=" ( (quote token+ $multipart_boundary quote) | (token+ $multipart_boundary) ) # boundary can be quoted or not quoted
)
| ("Transfer-Encoding"i %use_chunked_encoding hsep "identity" %use_identity_encoding)
| ("Expect"i hsep "100-continue"i %expect_continue)
| ("Trailer"i hsep field_value %trailer)
| (Field_Name hsep Field_Value)
ccv-src/serve/ebb_request_parser.rl view on Meta::CPAN
last_chunk = "0"+ chunk_extension CRLF;
chunk_size = (xdigit* [1-9a-fA-F] xdigit*) $add_to_chunk_size;
chunk_end = CRLF;
chunk_body = any >skip_chunk_data;
chunk_begin = chunk_size chunk_extension CRLF;
chunk = chunk_begin chunk_body chunk_end;
ChunkedBody := chunk* last_chunk trailing_headers CRLF @end_chunked_body;
Request = RequestHeader >start_req @body_logic;
main := Request+; # sequence of requests (for keep-alive)
}%%
%% write data;
#define COPYSTACK(dest, src) for(i = 0; i < EBB_RAGEL_STACK_SIZE; i++) { dest[i] = src[i]; }
enum multipart_state {
s_uninitialized = 1,
s_start,
s_start_boundary,
ccv-src/serve/ebb_request_parser.rl view on Meta::CPAN
request->eating_body = 0;
request->body_read = 0;
request->content_length = 0;
request->version_major = 0;
request->version_minor = 0;
request->number_of_headers = 0;
request->transfer_encoding = EBB_IDENTITY;
request->number_of_multipart_headers = 0;
request->multipart_boundary_len = 0;
request->multipart_boundary[0] = request->multipart_boundary[1] = '-';
request->keep_alive = -1;
request->on_complete = NULL;
request->on_headers_complete = NULL;
request->on_body = NULL;
request->on_multipart_headers_complete = NULL;
request->on_multipart_header_field = NULL;
request->on_multipart_header_value = NULL;
request->on_part_data_complete = NULL;
request->on_part_data = NULL;
request->on_header_field = NULL;
request->on_header_value = NULL;
request->on_uri = NULL;
request->on_fragment = NULL;
request->on_path = NULL;
request->on_query_string = NULL;
}
int ebb_request_should_keep_alive(ebb_request *request)
{
if(request->keep_alive == -1)
if(request->version_major == 1)
return (request->version_minor != 0);
else if(request->version_major == 0)
return FALSE;
else
return TRUE;
else
return request->keep_alive;
}