blob: 85420def5ca61486652c61a21393310408d92035 [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_client_implx.c
* perf_client_impl functions which would ordinarily not be subject to edit.
*/
#include "apr_time.h" /* some apr must be included first */
#include "xmpl_perf_client_impl.h"
#include "xmpl_perf_remote_server.h"
#include "etch_global.h"
#include "etch_url.h"
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
int destroy_perf_client_impl (perf_client_impl*);
/* - - - - - - - - - - - - - - - - - - - - - - - -
* client_impl private construction / destruction
* - - - - - - - - - - - - - - - - - - - - - - - -
*/
/**
* init_perf_client_impl()
* called by perf_client_impl constructor to instantiate client implementation
* object and initialize with default virtuals.
* @param server the remote server, not owned.
* @param usermem_dtor destructor for any custom memory allocations.
*/
perf_client_impl* init_perf_client_impl (perf_remote_server* server,
etch_destructor usermem_dtor)
{
perf_client_impl* pc = (perf_client_impl*) new_object (sizeof(perf_client_impl),
ETCHTYPEB_EXECLIENTIMPL, get_dynamic_classid_unique(&CLASSID_PERFCLIENTBASE_IMPL));
pc->server = server; /* not owned */
pc->destroy = destroy_perf_client_impl; /* private destructor */
pc->destroyex = usermem_dtor; /* user memory destructor */
/* instantiate base and copy virtuals, if any, to this object */
pc->perf_client_base = new_perf_client_base (pc); /* owned */
// pc->iobjsession = pc->perf_client_base->iobjsession; /* ORIGINALLY THIS LINE */
pc->iobjsession = server->server_base->iobjsession; /* TRYING THIS REPLACING ABOVE */
pc->iobjsession->thisx = pc; /* set implementor reference */
pc->_session_control = pc->perf_client_base->_session_control;
pc->_session_notify = pc->perf_client_base->_session_notify;
pc->_session_query = pc->perf_client_base->_session_query;
return pc;
}
/**
* destroy_perf_client_impl()
* perf_client_impl private destructor.
* calls back to user destructor to effect cleanup of any perf_client_impl
* memory which may have been allocated in custom code added by user.
*/
int destroy_perf_client_impl (perf_client_impl* thisx)
{
if (NULL == thisx) return -1;
if (thisx->refcount > 0 && --thisx->refcount > 0) return -1;
if (!is_etchobj_static_content(thisx))
{
if (thisx->destroyex) /* call back to user memory destructor */
thisx->destroyex(thisx);
}
return destroy_objectex((objmask*)thisx);
}