Gal_Frame Play(Gal_Frame f, void *server_data) { GalSS_Environment *env = (GalSS_Environment *) server_data; GalIO_CommStruct *gcomm = GalSS_EnvComm(env); AudioPkg *p = (AudioPkg *) GalIO_GetCommServerData(gcomm); GalSS_BrokerProxy *proxy = Gal_GetProxy(f, ":proxy"); int sample_rate = Gal_GetInt(f, ":sample_rate"); char *encoding_format = Gal_GetString(f, ":encoding_format"); int enable_input = Gal_GetInt(f, ":enable_input"); if (proxy && (sample_rate > 0)) { if (p->in_proxy) { GalUtil_Warn("In proxy already exists"); } else { EnableAudioOutput(p->device, encoding_format, sample_rate); p->in_proxy = GalSS_CopyBrokerProxy(proxy); if (enable_input) p->enable_input_pending = 1; GalSS_Unproxify(env, p->in_proxy, __AudioOutputCallback, __AudioOutputFinalizer, NULL, 1, 0, (void *) p, NULL); } } return (Gal_Frame) NULL; }
Gal_Frame reinitialize(Gal_Frame f, void *server_data) { char *audiofile = Gal_GetString(f, ":audiofile"); Gal_Frame fr; char *broker_method = Gal_GetString(f, ":broker_method"); int use_stream = Gal_GetInt(f, ":use_stream"); if ((!broker_method) || !strcmp(broker_method, "original_env")) { BrokerMethod = BROKER_ORIGINAL_ENV; } else if (!strcmp(broker_method, "original_comm")) { BrokerMethod = BROKER_ORIGINAL_GCOMM; } else if (!strcmp(broker_method, "proxy_obj")) { BrokerMethod = BROKER_PROXY_OBJ; } else if (!strcmp(broker_method, "proxy_stream")) { BrokerMethod = BROKER_PROXY_STREAM; } else if (!strcmp(broker_method, "proxy_original")) { BrokerMethod = BROKER_PROXY_ORIGINAL; } if (audiofile) { /* Send a brokering message. */ fr = prepare_audio_frame((GalSS_Environment *) server_data, audiofile, use_stream); GalSS_EnvWriteFrame((GalSS_Environment *) server_data, fr, 0); Gal_FreeFrame(fr); } return (Gal_Frame) NULL; }
/*-----------------------------------------------------------------------* * Main routine which takes a string as input and returns a parse string * *-----------------------------------------------------------------------*/ Gal_Frame send_to_parse(Gal_Frame f, void *server_data) { int i, path_score; char *in_string, *out_string, *sysid; Gal_Frame f_new = Gal_MakeFrame("main", GAL_CLAUSE); /* get the input string to parse from the key's value */ in_string = Gal_GetString(f, ":input_string"); sysid = Gal_GetString(f, ":sysid"); path_score = Gal_GetInt(f, ":path_score"); if (in_string == NULL) in_string = Gal_GetString(f, ":parse_input"); /* strip out punctuation, comments, etc, to uppercase */ strip_line(in_string); /* Call Phoenix Parse function */ parse(in_string, gram); /* print parses to buffer */ if( num_parses > MaxParses ) num_parses= MaxParses; if( num_parses < 1 ) { strcpy(outbuf, "No Parse"); } else { out_string= outbuf; for(i= 0; i < num_parses; i++ ) { sprintf(out_string, "PARSE_%d:\n", i); out_string += strlen(out_string); print_parse(i, out_string, extract, gram); out_string += strlen(out_string); sprintf(out_string, "END_PARSE\n"); out_string += strlen(out_string); } sprintf(out_string, "\n"); out_string= outbuf; } /* clear parser temps */ reset(num_nets); /* create a new frame containing the parse */ Gal_SetProp(f_new, ":parse_input", Gal_StringObject(in_string)); Gal_SetProp(f_new, ":parse_output", Gal_StringObject(outbuf)); if (sysid != NULL) Gal_SetProp(f_new, ":sysid", Gal_StringObject(sysid)); if (path_score != 0) Gal_SetProp(f_new, ":path_score", Gal_IntObject(path_score)); /* write parse output frame to HUB */ GalSS_EnvWriteFrame((GalSS_Environment *) server_data, f_new, 0); return(f); }
static int __GalIO_MsgIsReply(GalIO_MsgType msg_type, void *decoded_data, int decoded_size, Gal_ObjectType decoded_type, void *client_data) { int server_tidx = (int) client_data; Gal_Frame f = (Gal_Frame) decoded_data; Gal_Frame admin_info; return ((decoded_type == GAL_FRAME) && ((msg_type == GAL_REPLY_MSG_TYPE) || (msg_type == GAL_DESTROY_MSG_TYPE) || (msg_type == GAL_ERROR_MSG_TYPE)) && ((server_tidx == -1) || ((admin_info = Gal_GetFrame(f, GAL_HUB_OPAQUE_DATA_FRAME_KEY)) && (server_tidx == Gal_GetInt(admin_info, GAL_SERVER_TOKEN_INDEX_FRAME_KEY))))); }