예제 #1
0
파일: vs_master.c 프로젝트: yeswalrus/song
void vs_master_handle_describe(const char *address, const char *message)
{
	char	desc[1380] = "DESCRIPTION", *put = desc + 11;

	if(desc_has_keyword(message, "DE") && server_info.desc != NULL && keyword_fits(put - desc, sizeof desc, "DE", server_info.desc))
		put = append_desc(put, "DE", server_info.desc);
	if(desc_has_keyword(message, "TA") && server_info.tags != NULL && keyword_fits(put - desc, sizeof desc, "TA", server_info.tags))
		put = append_desc(put, "TA", server_info.tags);
	verse_send_ping(address, desc);
}
예제 #2
0
파일: verse_ext.c 프로젝트: ged/ruby-verse
/*
 * call-seq:
 *     Verse.ping( address, message )
 *
 * General-purpose unconnected "ping" command.
 *  
 * @param [String] address  The address of the server to send the ping to.
 * @param [String] message  The content of the ping, limited to a maximum of
 *                          1399 bytes.
 *
 * @example
 *    Verse.ping( 'verse.acme.com', 'MS:ANNOUNCE' )
 *
 */
static VALUE
rbverse_verse_ping( VALUE module, VALUE address, VALUE message ) {
	const char *addr = RSTRING_PTR( address );
	const char *msg  = RSTRING_PTR( message );

	rbverse_log_with_context( module, "debug", "Pinging '%s' with message '%s'", addr, msg );
	verse_send_ping( addr, msg );

	return Qtrue;
}
예제 #3
0
파일: vs_master.c 프로젝트: yeswalrus/song
void vs_master_update(void)
{
	if(!server_info.enabled || server_info.master == NULL)
		return;

	if(!server_info.started)
	{
		v_timer_start(&server_info.timer);
		v_timer_advance(&server_info.timer, MASTER_SERVER_PERIOD);
		server_info.started = TRUE;
		return;
	}
	if(v_timer_elapsed(&server_info.timer) < MASTER_SERVER_PERIOD)
		return;
	verse_send_ping(server_info.master, "MS:ANNOUNCE");
	v_timer_start(&server_info.timer);
/*	printf("MS:ANNOUNCE sent to %s\n", server_info.master);*/
}