static
int
globus_l_gram_streamer_open_destination(
    globus_gram_streamer_monitor_t *    monitor,
    globus_gram_stream_t *              stream)
{
    globus_gass_transfer_requestattr_t  attr;
    char                                scheme[16];
    int                                 i;
    int                                 rc;

    for (i = 0; i < sizeof(scheme); i++)
    {
        if (stream->destination[i] == ':')
        {
            scheme[i] = 0;
            break;
        }
        else
        {
            scheme[i] = stream->destination[i];
        }
    }
    scheme[15] = 0;

    rc = globus_gass_transfer_requestattr_init(
            &attr,
            scheme);
    if (rc != GLOBUS_SUCCESS)
    {
        return rc;
    }

    rc = globus_gass_transfer_register_append(
            &stream->handle,
            &attr,
            (char *) stream->destination,
            GLOBUS_GASS_TRANSFER_LENGTH_UNKNOWN,
            globus_l_gram_streamer_request_ready,
            monitor);

    if (rc == GLOBUS_SUCCESS)
    {
        (void) globus_gass_transfer_request_set_user_pointer(
                stream->handle,
                stream);
    }

    (void) globus_gass_transfer_requestattr_destroy(&attr);

    return rc;
}
void
test_l_new_listener_callback(
    void *                              callback_arg,
    globus_gass_transfer_listener_t     listener)
{
    int                                 rc;
    globus_gass_transfer_request_t      request;
    globus_gass_transfer_requestattr_t  attr;

    globus_gass_transfer_requestattr_init(&attr, "https");
    globus_gass_transfer_secure_requestattr_set_authorization(
            &attr,
            GLOBUS_GASS_TRANSFER_AUTHORIZE_SELF,
            "https");

    rc = globus_gass_transfer_register_accept(
            &request,
            &attr,
            listener,
            test_l_new_accept_callback,
            callback_arg);
    globus_gass_transfer_requestattr_destroy(&attr);
}
/******************************************************************************
Function: globus_gass_server_ez_init()

Description: 

Parameters: 

Returns: 
******************************************************************************/
int
globus_gass_server_ez_init(globus_gass_transfer_listener_t * listener,
			   globus_gass_transfer_listenerattr_t * attr,
			   char * scheme,
			   globus_gass_transfer_requestattr_t * reqattr,
			   unsigned long options,
			   globus_gass_server_ez_client_shutdown_t callback,
               int fd)
{
    int rc;
    globus_l_gass_server_ez_t *server;
    globus_bool_t free_scheme=GLOBUS_FALSE;
    
    if(scheme==GLOBUS_NULL)
    {
	scheme=globus_malloc(6);  /* https/0 is the default */
	if(scheme == GLOBUS_NULL)
        {
            rc = GLOBUS_GASS_TRANSFER_ERROR_MALLOC_FAILED;
            goto error_exit;
        }
        free_scheme=GLOBUS_TRUE;
	globus_libc_lock();
        sprintf(scheme, "https");
        globus_libc_unlock();
    }

    if(reqattr==GLOBUS_NULL)
    {
	reqattr=(globus_gass_transfer_requestattr_t *)globus_malloc(sizeof(globus_gass_transfer_requestattr_t));

        globus_gass_transfer_requestattr_init(reqattr,
    					      scheme);
        globus_gass_transfer_secure_requestattr_set_authorization(reqattr,
							   GLOBUS_GASS_TRANSFER_AUTHORIZE_SELF,
							   scheme);
    }
    rc=globus_gass_transfer_create_listener(listener,
					    attr,
					    scheme);


    if(rc!=GLOBUS_SUCCESS)
    {
	goto error_exit;
    }

    server=(globus_l_gass_server_ez_t *)globus_malloc(
					sizeof (globus_l_gass_server_ez_t));
    if(server==GLOBUS_NULL)
    {
        rc = GLOBUS_GASS_TRANSFER_ERROR_MALLOC_FAILED;
	goto error_exit;
    }

    server->options=options;
    server->listener=*listener;
    server->reqattr=reqattr;
    server->callback=callback;
    server->fd=fd;

    globus_hashtable_insert(&globus_l_gass_server_ez_listeners,
			    (void *)*listener,
			    server);

    rc=globus_gass_transfer_register_listen(*listener,
				globus_l_gass_server_ez_listen_callback,
					(void *)reqattr);
/* insert error handling here*/

    error_exit:

    if (free_scheme) globus_free(scheme);

    return rc;
} /* globus_gass_server_ez_init() */