programmer400
Programmer
Dear Friends
I am giving the following command to build the server executableon HP-UX
/opt/aCC/bin/aCC -o SOAPServer SOAPServer.o WFWuListService.o WFWuListImpl.o WFWuListStructs.o WFWuList.o -I/opt/systinet/server_cpp65/include/ -I../.. +DD64 /opt/systinet/server_cpp65/lib/libwasp.sl /opt/systinet/server_cpp65/lib/libwasp_stl.sl -ldcekt -lpthread
and Im getting the following error
ld: Unsatisfied symbol "WF_ListWuClnt" in file WFWuListService.o
1 errors.
Which means WFWuListService.cpp, especially the spelling and definition of WF_ListWuClnt needs to be checked .
My header file WFWuMYList1.h has the prototype declaration of WF_ListWuClnt function which is
long WF_ListWuClnt (
unsigned char *process_id,
unsigned char *process_step_id,
unsigned char *cluster_id,
WF_STRUCT_SEARCH *search_params,
char incl_active_wu,
int nbr_requested,
WF_LIST_WORKUNIT_P_FE *workunit_array
);
and in WFWuListService.cpp
I have
------------------------------------------------------------------------------------------------------------------------------------------
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/time.h>
#include "WFWuListService.h" // WFWuList Systinet service declarations
#include "WFWuMYList1.h"
WFWuStructFe WFWuStructDceToSoap(WF_STRUCT_WORKUNIT_FE dceStruct) {
// define WFWuStructFe
WFWuStructFe wuStructFe;
WFWuHandle wuHandle;
wuHandle->workunit_id = 5;
wuHandle->workunit_seq = 10;
wuHandle->updateSerial_num = 12;
wuStructFe->wf_workunit_handle = wuHandle;
wuStructFe->ap_batch_id = "12";
wuStructFe->ap_bene_base_num = "12";
wuStructFe->ap_customer_name = "Amit" ;
wuStructFe->ap_customer_num = "0400034";
return wuStructFe;
}
ArrayOfWFWuStructFe WFWuListService::WfListWuClnt:WFWuHandle & handle, const WASP_STD_NS::string & process_id, const WASP_STD_NS::string & process_step_id, const WASP_STD_NS::string & cluster_id, ::WFStructSearch & search_params, const WASP_STD_NS::string & incl_active_wu, int nbr_requested) {
// Array of workunit structures to return
ArrayOfWFWuStructFe wuList;
// time structures to capture the lapsed time for RPC call
struct timeval first,
second,
lapsed;
struct timezone tzp;
long tResult = 0;
char process_id_[7];
char process_step_id_[7];
char cluster_id_[4];
char incl_active_wu_ = 'Y' ;
int nbr_requested_;
strcpy((char*)process_id_, (char*)process_id.c_str() );
process_id_[6]='\0';
strcpy((char*)process_step_id_, (char*)process_step_id.c_str());
process_step_id_[6]='\0';
strcpy((char*)cluster_id_, (char*)cluster_id.c_str());
cluster_id_[3]='\0';
nbr_requested_ = nbr_requested;
WF_STRUCT_SEARCH wf_struct_search_d ;
memset((void*)&wf_struct_search_d, '\0', sizeof(WF_STRUCT_SEARCH));
//***** Populate the WF_STRUCT_SEARCH ******
wf_struct_search_d.workunit_handle.workunit_id = search_params->workunit_handle->workunit_id;
wf_struct_search_d.workunit_handle.workunit_seq = search_params->workunit_handle->workunit_seq;
wf_struct_search_d.workunit_handle.update_serial_num = search_params->workunit_handle->updateSerial_num;
strcpy((char*)wf_struct_search_d.prod_type,(char*)search_params->prod_type.c_str());
strcpy((char*)wf_struct_search_d.prod_sub_type,(char*)search_params->prod_sub_type.c_str());
strcpy((char*)wf_struct_search_d.opn_type,(char*)search_params->opn_type.c_str());
strcpy((char*)wf_struct_search_d.customer_num,(char*)search_params->customer_num.c_str());
strcpy((char*)wf_struct_search_d.bene_base_num,(char*)search_params->bene_base_num.c_str());
strcpy((char*)wf_struct_search_d.customer_ref_num,(char*)search_params->customer_ref_num.c_str());
WF_STRUCT_WORKUNIT_FE *pWufe = NULL;
WF_LIST_WORKUNIT_FE listWU;
memset((void*)&listWU, '\0' , sizeof(WF_LIST_WORKUNIT_FE));
WF_LIST_WORKUNIT_P_FE ptrlistWU ;
ptrlistWU = &listWU;
gettimeofday(&first, &tzp);
tResult = WF_ListWuClnt(
wfm_binding_h,
(unsigned char*) (const char*) process_id_,
(unsigned char*) (const char*) process_step_id_,
(unsigned char*) (const char*) cluster_id_,
&wf_struct_search_d,
incl_active_wu_,
nbr_requested_,
&ptrlistWU);
gettimeofday(&second, &tzp);
if (first.tv_usec > second.tv_usec) {
second.tv_usec += 1000000;
second.tv_sec--;
}
lapsed.tv_usec = second.tv_usec - first.tv_usec;
lapsed.tv_sec = second.tv_sec - first.tv_sec;
// cout << "Lapsed time for DCE RPC call = " << lapsed.tv_sec*1000 + lapsed.tv_usec/1000 << " msec." << endl;
int i = 0;
for (i = 0; i < ptrlistWU->nbr_Workunits_fe; i++) {
wuList->wFWuStructFe.push_back(WFWuStructDceToSoap(ptrlistWU->lst_Workunit_fe));
}
free(ptrlistWU);
cout << "WFWuListService: Number of records = " << wuList->wFWuStructFe.size() << ", lapsed time = " << lapsed.tv_sec*1000 + lapsed.tv_usec/1000 << " msec." << endl;
return wuList;
}
}
------------------------------------------------------------------------------------------------------------------------------------------
Am Missing something yet
Thanks
Ronan
I am giving the following command to build the server executableon HP-UX
/opt/aCC/bin/aCC -o SOAPServer SOAPServer.o WFWuListService.o WFWuListImpl.o WFWuListStructs.o WFWuList.o -I/opt/systinet/server_cpp65/include/ -I../.. +DD64 /opt/systinet/server_cpp65/lib/libwasp.sl /opt/systinet/server_cpp65/lib/libwasp_stl.sl -ldcekt -lpthread
and Im getting the following error
ld: Unsatisfied symbol "WF_ListWuClnt" in file WFWuListService.o
1 errors.
Which means WFWuListService.cpp, especially the spelling and definition of WF_ListWuClnt needs to be checked .
My header file WFWuMYList1.h has the prototype declaration of WF_ListWuClnt function which is
long WF_ListWuClnt (
unsigned char *process_id,
unsigned char *process_step_id,
unsigned char *cluster_id,
WF_STRUCT_SEARCH *search_params,
char incl_active_wu,
int nbr_requested,
WF_LIST_WORKUNIT_P_FE *workunit_array
);
and in WFWuListService.cpp
I have
------------------------------------------------------------------------------------------------------------------------------------------
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/time.h>
#include "WFWuListService.h" // WFWuList Systinet service declarations
#include "WFWuMYList1.h"
WFWuStructFe WFWuStructDceToSoap(WF_STRUCT_WORKUNIT_FE dceStruct) {
// define WFWuStructFe
WFWuStructFe wuStructFe;
WFWuHandle wuHandle;
wuHandle->workunit_id = 5;
wuHandle->workunit_seq = 10;
wuHandle->updateSerial_num = 12;
wuStructFe->wf_workunit_handle = wuHandle;
wuStructFe->ap_batch_id = "12";
wuStructFe->ap_bene_base_num = "12";
wuStructFe->ap_customer_name = "Amit" ;
wuStructFe->ap_customer_num = "0400034";
return wuStructFe;
}
ArrayOfWFWuStructFe WFWuListService::WfListWuClnt:WFWuHandle & handle, const WASP_STD_NS::string & process_id, const WASP_STD_NS::string & process_step_id, const WASP_STD_NS::string & cluster_id, ::WFStructSearch & search_params, const WASP_STD_NS::string & incl_active_wu, int nbr_requested) {
// Array of workunit structures to return
ArrayOfWFWuStructFe wuList;
// time structures to capture the lapsed time for RPC call
struct timeval first,
second,
lapsed;
struct timezone tzp;
long tResult = 0;
char process_id_[7];
char process_step_id_[7];
char cluster_id_[4];
char incl_active_wu_ = 'Y' ;
int nbr_requested_;
strcpy((char*)process_id_, (char*)process_id.c_str() );
process_id_[6]='\0';
strcpy((char*)process_step_id_, (char*)process_step_id.c_str());
process_step_id_[6]='\0';
strcpy((char*)cluster_id_, (char*)cluster_id.c_str());
cluster_id_[3]='\0';
nbr_requested_ = nbr_requested;
WF_STRUCT_SEARCH wf_struct_search_d ;
memset((void*)&wf_struct_search_d, '\0', sizeof(WF_STRUCT_SEARCH));
//***** Populate the WF_STRUCT_SEARCH ******
wf_struct_search_d.workunit_handle.workunit_id = search_params->workunit_handle->workunit_id;
wf_struct_search_d.workunit_handle.workunit_seq = search_params->workunit_handle->workunit_seq;
wf_struct_search_d.workunit_handle.update_serial_num = search_params->workunit_handle->updateSerial_num;
strcpy((char*)wf_struct_search_d.prod_type,(char*)search_params->prod_type.c_str());
strcpy((char*)wf_struct_search_d.prod_sub_type,(char*)search_params->prod_sub_type.c_str());
strcpy((char*)wf_struct_search_d.opn_type,(char*)search_params->opn_type.c_str());
strcpy((char*)wf_struct_search_d.customer_num,(char*)search_params->customer_num.c_str());
strcpy((char*)wf_struct_search_d.bene_base_num,(char*)search_params->bene_base_num.c_str());
strcpy((char*)wf_struct_search_d.customer_ref_num,(char*)search_params->customer_ref_num.c_str());
WF_STRUCT_WORKUNIT_FE *pWufe = NULL;
WF_LIST_WORKUNIT_FE listWU;
memset((void*)&listWU, '\0' , sizeof(WF_LIST_WORKUNIT_FE));
WF_LIST_WORKUNIT_P_FE ptrlistWU ;
ptrlistWU = &listWU;
gettimeofday(&first, &tzp);
tResult = WF_ListWuClnt(
wfm_binding_h,
(unsigned char*) (const char*) process_id_,
(unsigned char*) (const char*) process_step_id_,
(unsigned char*) (const char*) cluster_id_,
&wf_struct_search_d,
incl_active_wu_,
nbr_requested_,
&ptrlistWU);
gettimeofday(&second, &tzp);
if (first.tv_usec > second.tv_usec) {
second.tv_usec += 1000000;
second.tv_sec--;
}
lapsed.tv_usec = second.tv_usec - first.tv_usec;
lapsed.tv_sec = second.tv_sec - first.tv_sec;
// cout << "Lapsed time for DCE RPC call = " << lapsed.tv_sec*1000 + lapsed.tv_usec/1000 << " msec." << endl;
int i = 0;
for (i = 0; i < ptrlistWU->nbr_Workunits_fe; i++) {
wuList->wFWuStructFe.push_back(WFWuStructDceToSoap(ptrlistWU->lst_Workunit_fe));
}
free(ptrlistWU);
cout << "WFWuListService: Number of records = " << wuList->wFWuStructFe.size() << ", lapsed time = " << lapsed.tv_sec*1000 + lapsed.tv_usec/1000 << " msec." << endl;
return wuList;
}
}
------------------------------------------------------------------------------------------------------------------------------------------
Am Missing something yet
Thanks
Ronan