forked from cory/tildefriends
		
	Tracing will continue until performance improves.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4169 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		
							
								
								
									
										44
									
								
								src/ssb.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								src/ssb.c
									
									
									
									
									
								
							| @@ -120,6 +120,7 @@ typedef struct _tf_ssb_rpc_callback_node_t tf_ssb_rpc_callback_node_t; | |||||||
| typedef struct _tf_ssb_rpc_callback_node_t | typedef struct _tf_ssb_rpc_callback_node_t | ||||||
| { | { | ||||||
| 	const char** name; | 	const char** name; | ||||||
|  | 	const char* flattened_name; | ||||||
| 	tf_ssb_rpc_callback_t* callback; | 	tf_ssb_rpc_callback_t* callback; | ||||||
| 	tf_ssb_callback_cleanup_t* cleanup; | 	tf_ssb_callback_cleanup_t* cleanup; | ||||||
| 	void* user_data; | 	void* user_data; | ||||||
| @@ -1040,7 +1041,9 @@ static void _tf_ssb_notify_connections_changed(tf_ssb_t* ssb, tf_ssb_change_t ch | |||||||
| 	for (tf_ssb_connections_changed_callback_node_t* node = ssb->connections_changed; node; node = next) | 	for (tf_ssb_connections_changed_callback_node_t* node = ssb->connections_changed; node; node = next) | ||||||
| 	{ | 	{ | ||||||
| 		next = node->next; | 		next = node->next; | ||||||
|  | 		tf_trace_begin(ssb->trace, "connections_changed"); | ||||||
| 		node->callback(ssb, change, connection, node->user_data); | 		node->callback(ssb, change, connection, node->user_data); | ||||||
|  | 		tf_trace_end(ssb->trace); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -1474,7 +1477,9 @@ static void _tf_ssb_connection_rpc_recv(tf_ssb_connection_t* connection, uint8_t | |||||||
| 				{ | 				{ | ||||||
| 					if (_tf_ssb_name_equals(context, val, it->name)) | 					if (_tf_ssb_name_equals(context, val, it->name)) | ||||||
| 					{ | 					{ | ||||||
|  | 						tf_trace_begin(connection->ssb->trace, it->flattened_name); | ||||||
| 						it->callback(connection, flags, request_number, val, message, size, it->user_data); | 						it->callback(connection, flags, request_number, val, message, size, it->user_data); | ||||||
|  | 						tf_trace_end(connection->ssb->trace); | ||||||
| 						found = true; | 						found = true; | ||||||
| 						break; | 						break; | ||||||
| 					} | 					} | ||||||
| @@ -1488,7 +1493,11 @@ static void _tf_ssb_connection_rpc_recv(tf_ssb_connection_t* connection, uint8_t | |||||||
| 				{ | 				{ | ||||||
| 					if (callback) | 					if (callback) | ||||||
| 					{ | 					{ | ||||||
|  | 						char buffer[64]; | ||||||
|  | 						snprintf(buffer, sizeof(buffer), "request %d", request_number); | ||||||
|  | 						tf_trace_begin(connection->ssb->trace, buffer); | ||||||
| 						callback(connection, flags, request_number, val, message, size, user_data); | 						callback(connection, flags, request_number, val, message, size, user_data); | ||||||
|  | 						tf_trace_end(connection->ssb->trace); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				else if (!_tf_ssb_name_equals(context, val, (const char*[]) { "Error", NULL })) | 				else if (!_tf_ssb_name_equals(context, val, (const char*[]) { "Error", NULL })) | ||||||
| @@ -1516,7 +1525,11 @@ static void _tf_ssb_connection_rpc_recv(tf_ssb_connection_t* connection, uint8_t | |||||||
| 		{ | 		{ | ||||||
| 			if (callback) | 			if (callback) | ||||||
| 			{ | 			{ | ||||||
|  | 				char buffer[64]; | ||||||
|  | 				snprintf(buffer, sizeof(buffer), "request %d", request_number); | ||||||
|  | 				tf_trace_begin(connection->ssb->trace, buffer); | ||||||
| 				callback(connection, flags, request_number, JS_UNDEFINED, message, size, user_data); | 				callback(connection, flags, request_number, JS_UNDEFINED, message, size, user_data); | ||||||
|  | 				tf_trace_end(connection->ssb->trace); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| @@ -1714,7 +1727,9 @@ static void _tf_ssb_connection_dispatch_scheduled(tf_ssb_connection_t* connectio | |||||||
| 		tf_ssb_connection_scheduled_t scheduled = connection->scheduled[0]; | 		tf_ssb_connection_scheduled_t scheduled = connection->scheduled[0]; | ||||||
| 		memmove(connection->scheduled, connection->scheduled + 1, sizeof(tf_ssb_connection_scheduled_t) * (connection->scheduled_count - 1)); | 		memmove(connection->scheduled, connection->scheduled + 1, sizeof(tf_ssb_connection_scheduled_t) * (connection->scheduled_count - 1)); | ||||||
| 		connection->scheduled_count--; | 		connection->scheduled_count--; | ||||||
|  | 		tf_trace_begin(connection->ssb->trace, "scheduled callback"); | ||||||
| 		scheduled.callback(connection, scheduled.user_data); | 		scheduled.callback(connection, scheduled.user_data); | ||||||
|  | 		tf_trace_end(connection->ssb->trace); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2695,7 +2710,9 @@ static void _tf_ssb_notify_broadcasts_changed(tf_ssb_t* ssb) | |||||||
| 		next = node->next; | 		next = node->next; | ||||||
| 		if (node->callback) | 		if (node->callback) | ||||||
| 		{ | 		{ | ||||||
|  | 			tf_trace_begin(ssb->trace, "broadcasts changed"); | ||||||
| 			node->callback(ssb, node->user_data); | 			node->callback(ssb, node->user_data); | ||||||
|  | 			tf_trace_end(ssb->trace); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @@ -2786,7 +2803,9 @@ void tf_ssb_visit_broadcasts(tf_ssb_t* ssb, void (*callback)(const char* host, c | |||||||
| 		next = node->next; | 		next = node->next; | ||||||
| 		if (node->mtime - now < 60) | 		if (node->mtime - now < 60) | ||||||
| 		{ | 		{ | ||||||
|  | 			tf_trace_begin(ssb->trace, "broadcast"); | ||||||
| 			callback(node->host, &node->addr, node->tunnel_connection, node->pub, user_data); | 			callback(node->host, &node->addr, node->tunnel_connection, node->pub, user_data); | ||||||
|  | 			tf_trace_end(ssb->trace); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @@ -3028,10 +3047,15 @@ void tf_ssb_add_rpc_callback(tf_ssb_t* ssb, const char** name, tf_ssb_rpc_callba | |||||||
| 		name_count++; | 		name_count++; | ||||||
| 		name_len += strlen(name[i]) + 1; | 		name_len += strlen(name[i]) + 1; | ||||||
| 	} | 	} | ||||||
| 	tf_ssb_rpc_callback_node_t* node = tf_malloc(sizeof(tf_ssb_rpc_callback_node_t) + (name_count + 1) * sizeof(const char*) + name_len); | 	tf_ssb_rpc_callback_node_t* node = tf_malloc( | ||||||
|  | 		sizeof(tf_ssb_rpc_callback_node_t) + | ||||||
|  | 		(name_count + 1) * sizeof(const char*) + | ||||||
|  | 		name_len + | ||||||
|  | 		name_len + 3); | ||||||
| 	*node = (tf_ssb_rpc_callback_node_t) | 	*node = (tf_ssb_rpc_callback_node_t) | ||||||
| 	{ | 	{ | ||||||
| 		.name = (const char**)(node + 1), | 		.name = (const char**)(node + 1), | ||||||
|  | 		.flattened_name = (const char*)(node + 1) + (name_count + 1) * sizeof(const char*) + name_len, | ||||||
| 		.callback = callback, | 		.callback = callback, | ||||||
| 		.cleanup = cleanup, | 		.cleanup = cleanup, | ||||||
| 		.user_data = user_data, | 		.user_data = user_data, | ||||||
| @@ -3045,6 +3069,20 @@ void tf_ssb_add_rpc_callback(tf_ssb_t* ssb, const char** name, tf_ssb_rpc_callba | |||||||
| 		node->name[i] = p; | 		node->name[i] = p; | ||||||
| 		p += len + 1; | 		p += len + 1; | ||||||
| 	} | 	} | ||||||
|  | 	char* flattened_name = (char*)node->flattened_name; | ||||||
|  | 	for (int i = 0; i < name_count; i++) | ||||||
|  | 	{ | ||||||
|  | 		size_t length = strlen(name[i]); | ||||||
|  | 		memcpy(flattened_name, name[i], length); | ||||||
|  | 		flattened_name += length; | ||||||
|  | 		if (i != name_count - 1) | ||||||
|  | 		{ | ||||||
|  | 			*flattened_name++ = '.'; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	*flattened_name++ = '('; | ||||||
|  | 	*flattened_name++ = ')'; | ||||||
|  | 	*flattened_name++ = '\0'; | ||||||
| 	node->name[name_count] = NULL; | 	node->name[name_count] = NULL; | ||||||
| 	ssb->rpc = node; | 	ssb->rpc = node; | ||||||
| 	ssb->rpc_count++; | 	ssb->rpc_count++; | ||||||
| @@ -3125,7 +3163,9 @@ void tf_ssb_notify_message_added(tf_ssb_t* ssb, const char* id) | |||||||
| 	for (tf_ssb_message_added_callback_node_t* node = ssb->message_added; node; node = next) | 	for (tf_ssb_message_added_callback_node_t* node = ssb->message_added; node; node = next) | ||||||
| 	{ | 	{ | ||||||
| 		next = node->next; | 		next = node->next; | ||||||
|  | 		tf_trace_begin(ssb->trace, "message added callback"); | ||||||
| 		node->callback(ssb, id, node->user_data); | 		node->callback(ssb, id, node->user_data); | ||||||
|  | 		tf_trace_end(ssb->trace); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	JSContext* context = ssb->context; | 	JSContext* context = ssb->context; | ||||||
| @@ -3210,7 +3250,9 @@ void tf_ssb_notify_blob_want_added(tf_ssb_t* ssb, const char* id) | |||||||
| 	for (tf_ssb_blob_want_added_callback_node_t* node = ssb->blob_want_added; node; node = next) | 	for (tf_ssb_blob_want_added_callback_node_t* node = ssb->blob_want_added; node; node = next) | ||||||
| 	{ | 	{ | ||||||
| 		next = node->next; | 		next = node->next; | ||||||
|  | 		tf_trace_begin(ssb->trace, "blob want added callback"); | ||||||
| 		node->callback(ssb, id, node->user_data); | 		node->callback(ssb, id, node->user_data); | ||||||
|  | 		tf_trace_end(ssb->trace); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user