Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
/*-----------------------------------------------------------------------*
 * 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);
}
Example #4
0
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)))));
}