blob: 623073200c885a37da0daf25884a08ca72bdcb51 [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_main.c
* implements a client session connection to the etch service server.
*/
#include "xmpl_perf_client_main.h"
/**
* main
*/
int _tmain (int argc, _TCHAR* argv[])
{
int result = -1, is_waitkey = TRUE, waitms = 0;
wchar_t* uri = argc > 1? argv[1]: L"tcp://127.0.0.1:4004";
do
{ perf_remote_server* remote = 0;
if (0 != etch_init()) break;
#if(1)
/* ensure server is functional */
remote = start_perf_client (uri, new_perf_client, waitms);
if (NULL == remote) break;
result = perf_xmpl_verify_server (remote);
/* stop and dispose of remote server */
stop_perf_client (remote, waitms);
ETCHOBJ_DESTROY(remote);
if (0 != result) break;
#endif
#if(1) /* execute perf test suite */
result = perf_xmpl_test_server (uri, new_perf_client, waitms);
#endif
} while(0);
etch_exit ();
return waitkey(is_waitkey, result);
}
/**
* new_perf_client() (java binding's newPerfClient()).
* callback constructor for client implementation object.
* this callback address is passed to start_perf_client() in [main].
* @param server the remote server.
* @remarks this callback must be supplied, i.e. its functionality cannot be
* defaulted, since the client implementation constructor new_perf_client_impl()
* is not known to start_perf_client().
*/
i_perf_client* new_perf_client (perf_remote_server* server)
{
perf_client_impl* client = new_perf_client_impl (server);
return client? client->perf_client_base: NULL;
}