/*
* call-seq:
* join(string) -> nil
* join(array) -> nil
*
* Join the specified group or Array of groups. If an error occurs
* while attempting to join multiple groups, an exception will
* immediately be raised, but joins that were processed prior to the
* error will still take effect.
*/
static VALUE
spconn_join(VALUE obj, VALUE group)
{
int i, n;
struct SpreadConnection *sp;
Data_Get_Struct(obj, struct SpreadConnection, sp);
if (TYPE(group) == T_ARRAY)
{
for (i = 0; i < RARRAY(group)->len; i++)
{
VALUE tmp = RARRAY(group)->ptr[i];
if ((n = SP_join(sp->mbox, StringValuePtr(tmp))) < 0)
raise_sp_error(n);
}
}
else
{
/* Assume it's a string, raise type error if not */
if ((n = SP_join(sp->mbox, StringValuePtr(group))) < 0)
raise_sp_error(n);
}
return Qnil;
}