blob: bb1566989bf6d7677bd36cc1686b5419ff2cefd4 [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* xmpl_perf_remote_client.c
*/
#include "apr_time.h" /* some apr must be included first */
#include "xmpl_perf_remote_client.h"
#include "etch_global.h"
#include "etch_url.h"
#include "etchlog.h"
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
char* ETCHREMC = "REMC";
/* generated signatures */
int destroy_perf_remote_client (perf_remote_client*);
/* - - - - - - - -
* instantiation
* - - - - - - - -
*/
/**
* new_remote_client()
* perf_remote_client constructor.
*/
perf_remote_client* new_remote_client (void* thisx, etch_session* session, etch_value_factory* vf)
{
perf_remote* remote = NULL;
perf_remote_client* rc = NULL;
rc = (perf_remote_client*) new_object (sizeof(perf_remote_client),
ETCHTYPEB_REMOTECLIENT, get_dynamic_classid_unique(&CLASSID_PERFREMOTECLIENT));
rc->destroy = destroy_perf_remote_client;
/* we "implement" the service interface here since it may contain client-directed
* items, in which case those methods and data are exposed in this object. we do
* not expose the service's server-directed methods in the remote client object.
*/
remote = new_perf_remote (thisx, session->ds, vf, NULL);
remote->remote_type = ETCH_REMOTETYPE_CLIENT;
rc->perf_remote_base = remote;
rc->perf_client_base = new_perf_client_base (thisx, remote->iperf);
rc->session_id = session->session_id;
/* override client-directed virtuals with implementations here */
/* no toward-client items are declared by this service */
return rc;
}
/**
* destroy_perf_remote_client()
* perf_remote_client destructor.
*/
int destroy_perf_remote_client (perf_remote_client* thisx)
{
if (NULL == thisx) return -1;
if (thisx->refcount > 0 && --thisx->refcount > 0) return -1;
if (!is_etchobj_static_content(thisx))
{
ETCHOBJ_DESTROY(thisx->perf_remote_base);
ETCHOBJ_DESTROY(thisx->perf_client_base);
}
return destroy_objectex((objmask*)thisx);
}