blob: 1bf9432b79def929b9a070833a308308910ec7b8 [file]
/* $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.c
*/
#include "apr_time.h" /* some apr must be included first */
#include "xmpl_perf.h"
#include "etch_global.h"
#include "etch_url.h"
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
etch_int32* perf_def_add (void* perfserver, etch_int32*, etch_int32*);
etch_int32* perf_def_sum (void* perfserver, etch_arraytype*);
void* perf_def_report (void* perfserver, etch_int32*, etch_string*);
perf_point* perf_def_dist (void* p, perf_point*, perf_point*);
etch_date* perf_def_add2 (void* p, etch_date*, etch_int64*);
void* perf_def_report2(void* p, etch_date*, etch_int32*, etch_string*);
int destroy_perf_service_interface (i_perf*);
/* - - - - - - - - - - - - - -
* constructors
* - - - - - - - - - - - - - -
*/
/**
* new_perf_point()
* point object constructor.
*/
perf_point* new_perf_point (const int x, const int y)
{
perf_point* point = (perf_point*) new_object (sizeof(perf_point),
ETCHTYPEB_USER, get_dynamic_classid_unique(&CLASSID_PERF_POINT));
point->x = x;
point->y = y;
return point;
}
/**
* is_perf_point()
*/
int is_perf_point(void* x)
{ return x && ((objmask*)x)->class_id == CLASSID_PERF_POINT;
}
/**
* new_perf_service_interface
*/
i_perf* new_perf_service_interface ()
{
i_perf* isvc = (i_perf*) new_object (sizeof(i_perf), ETCHTYPEB_SVCINTERFACE,
get_dynamic_classid_unique(&CLASSID_PERF_SERVICE_INTERFACE));
isvc->destroy = destroy_perf_service_interface;
isvc->add = perf_def_add;
isvc->sum = perf_def_sum;
isvc->report = perf_def_report;
isvc->dist = perf_def_dist;
isvc->add2 = perf_def_add2;
isvc->report2 = perf_def_report2;
isvc->point = new_perf_point(0,0);
return isvc;
}
/**
* destroy_perf_service_interface()
* i_perf destructor.
*/
int destroy_perf_service_interface (i_perf* isvc)
{
if (NULL == isvc) return -1;
if (isvc->refcount > 0 && --isvc->refcount > 0) return -1;
if (!is_etchobj_static_content(isvc))
{
etch_free(isvc->point);
}
return destroy_objectex((objmask*)isvc);
}
/* - - - - - - - - - - - - - -
* service method stubs
* - - - - - - - - - - - - - -
*/
etch_int32* perf_def_add (void* p, etch_int32* x, etch_int32* y)
{
ETCHOBJ_DESTROY(x);
ETCHOBJ_DESTROY(y);
return NULL;
}
etch_int32* perf_def_sum (void* perfserver, etch_arraytype* x)
{
ETCHOBJ_DESTROY(x);
return NULL;
}
void* perf_def_report (void* perfserver, etch_int32* code, etch_string* x)
{
ETCHOBJ_DESTROY(code);
ETCHOBJ_DESTROY(x);
return NULL;
}
perf_point* perf_def_dist (void* p, perf_point* p1, perf_point* p2)
{
etch_free(p1);
etch_free(p2);
return NULL;
}
etch_date* perf_def_add2 (void* p, etch_date* x, etch_int64* y)
{
ETCHOBJ_DESTROY(x);
ETCHOBJ_DESTROY(y);
return NULL;
}
void* perf_def_report2 (void* p, etch_date* ts, etch_int32* n, etch_string* x)
{
ETCHOBJ_DESTROY(ts);
ETCHOBJ_DESTROY(n);
ETCHOBJ_DESTROY(x);
return NULL;
}