[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | |
|
Moderator: | IRNBRU::MACKENZIE |
|
Created: | Wed Jul 10 1991 |
Last Modified: | Tue May 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 289 |
Total number of notes: | 1527 |
287.0. "Strange behaviour with nested requests" by OZROCK::HUNTER (Ma Renault est un citron) Tue Mar 25 1997 02:05
I am having some trouble with the transaction import code
of the RI. I have isolated the problem in the following
programme. The nub of it is that when I create a request
within the context of handling an incoming request the
incoming request is no longer valid.
The obvious question is: Is what I (and the RI) doing valid?
Warwick.
Brief Output
------------8<--------------
pkdots.ozy.dec.com> dce_login hunter hunter -e foo1
Put: [Elt;1]
get: IMS error 136020018 SL_NOREQUEST, Request not found
Code
------------8<--------------
#include <stdio.h>
#include <ims_defs.h>
typedef long (*Callback)();
long int foo(char *object_name, unsigned long *hReq, unsigned long *hResp,
void *userData);
SL_T_SERVICE services[] = { "foo", "", (Callback)foo, "foo service" };
main()
{
unsigned long status;
status = sl_connect_as_process("wasa", 0, 0);
if (status != SL_C_NORMAL)
{
fprintf(stderr, "connect: IMS error %ld\n", status);
return status;
}
status = sl_main_loop(0, services);
if (status != SL_C_NORMAL)
{
fprintf(stderr, "mainLoop: IMS error %ld\n", status);
}
status = sl_disconnect();
if (status != SL_C_NORMAL)
{
fprintf(stderr, "disconnect: IMS error %ld\n", status);
return status;
}
}
long int foo(char *object_name,
unsigned long *hReq,
unsigned long *hResp,
void *userData)
{
unsigned long status;
char eltType[32];
char eltValue[32];
unsigned long eltTypeLen;
unsigned long eltValueLen;
unsigned long hReq1;
int i;
/*
** Create a request and put an element into it before reading
** the data from the request passed in.
*/
status = sl_create_req(&hReq1);
if (status != SL_C_NORMAL)
{
fprintf(stderr, "create: IMS error %ld\n", status);
return status;
}
status = sl_put_req_elt(&hReq1, "Elt", 0, "1", 0);
if (status != SL_C_NORMAL)
{
fprintf(stderr, "put: IMS error %ld\n", status);
return status;
}
printf("Put: [Elt;1]\n");
/*
** Now try and read the data from the original request.
*/
while (status == SL_C_NORMAL)
{
eltType[0] = '\0';
eltTypeLen = 0;
eltValue[0] = '\0';
eltValueLen = 0;
status = sl_get_req_elt(&hReq, eltType, 0, eltValue, 0);
if (status != SL_C_NORMAL)
{
char text[128];
unsigned long textLen;
sl_get_error_text(&status, text, &textLen);
fprintf(stderr, "get: IMS error %ld %s\n", status, text);
return status;
}
else
{
printf("Get: [%s;%s]\n", eltType, eltValue);
}
}
return SL_C_NORMAL;
}
Full Output
------------8<--------------
Script started on Tue 25 Mar 12:03:31 1997
csh> dce_login hunter hunter -e foo1
SL-I-VERSINFO : IMS Version Information V1.32-UDIG/MNS
SL-I-IPTOLERANCE: = 32000000
SL-I-OPTOLERANCE: = 32000000
SL-I-MSGSENDSIZE: = 32000
SL-I-RESENDTIME: = 1
SL-I-RESENDTRIES: = 10
SL-I-RECOVERYSTYLE: = 1
SL-I-TAGTRANSLATION = 0
SL-I-TIMESTAMPREQD = 1
SL-I-MSGCPOMPRESS = 0
SL-I-AUDITSTATUS: = 0
SL-I-PRIORITYSTYLE: = 0
SL-I-ACKSTYLE: = 1
SL-I-TYPE: = 0
SL-I-WAITSTYLE: = 1
SL-I-ACK_TIMEOUT: = 300
SL-I-NAMESPACE: = M
SL-I-ORGANICSEC =
SL-I-AUTOPURGE: = N
SL-I-LOCNOTFND:- Local translation file not found
SL-I-CONNECT: connected as temporary Q 2967.610
SL-I-CONNECT: checking group cache for name
SL-I-CONNECT: checking name service for name already in use
SL-I-COMMAND: sl_create_msg
SL-I-FINDMSG: look for message handle = 1
SL-I-FINDMSG: message found handle = 1
SL-I-EXITHNDLR: submitting exit handler
SL-I-COMMAND: sl_main_loop
SL-I-COMMAND: sl_wait_req
SL-I-COMMAND: sl_count_pending_req
***********************
*Wait for next Message*
***********************
SL-I-MSGSIZE: Incoming Message Size = 518
SL-I-DECODE_MESSAGE: decode_msg
IMS-I-DECODE_MESSAGE: decode incoming v11 message
IMS-I-ENDOFMSG: successful end of envelope reached
IMS-I-READ_HEADER_INFO: read message header information
IMS-I-READ_HEADER_INFO: End of header reached
IMS-I-READ_BODY_INFO: start of Body init Body linked list
IMS-I-READ_BODY_PART_INFO: new request
IMS-I-READ_BODY_PART_INFO: read msg info, cont req = false
IMS-I-DECODE: SERVICE_NAME found in Body=[INQUIRE]
IMS-I-READ_BODY_INFO: linkflag = 1
IMS-I-READ_BODY_ITEM_INFO: End of body Item reached
IMS-I-READ_BODY_INFO: End of body reached
IMS-I-REQCONTFLG:request cont flag=[0]
IMS-I-MSGCONTFLG: message cont flag = [0]
IMS-I-ENDOFMSG: successful end of message reached
IMS-I-READ_MESSAGE_INFO: End of message reached
SL-I-MSGHANDLE: message_handle = 3
SL-I-WAITREQ: Organic request received by main loop processing....
SL-I-WAITREQ: Set server_status=0
SL-I-ORGNCHDNLR: organic security file_name = wasa_organic.sec
SL-I-READREQ: msg_item_ptr->seen = 0
SL-I-READREQ: found request seen,handle = [0,1]
SL-I-READREQ: service_name_length = [7]
SL-I-COMMAND: sl_get_req_elt
SL-I-COMMAND: sl_get_req_elt
SL-I-GETREQINT: sl_get_req_elt_internal service_name_LENGTH=[7]
SL-I-GETREQINT: sl_get_req_elt_internal service_name=[INQUIRE]
SL-I-ORGNCHDNLR: compare [ABORT] to [INQUIRE,7]
SL-I-ORGNCHDNLR: compare [EXIT] to [INQUIRE,7]
SL-I-ORGNCHDNLR: compare [INQUIRE] to [INQUIRE,7]
SL-I-ORGNCHDNLR: request_SERVICE = 3
SL-I-ORGNCHDNLR: inquire called
SL-I-COMMAND: sl_create_msg
SL-I-COMMAND: sl_put_msg_elt
SL-I-FINDMSG: look for message handle = 4
SL-I-FINDMSG: message found handle = 4
SL-I-COMMAND: sl_put_msg_elt
SL-I-FINDMSG: look for message handle = 4
SL-I-INQUIRE_SEND :send response to [2967,181]
SL-I-COMMAND: sl_put_msg_elt
SL-I-FINDMSG: look for message handle = 4
SL-I-COMMAND: sl_put_msg_elt
SL-I-FINDMSG: look for message handle = 4
SL-I-COMMAND: sl_put_msg_elt
SL-I-FINDMSG: look for message handle = 4
SL-I-COMMAND: sl_create_req
SL-I-SAVERTSADR: Create request use SOURCE = 0.0 for RTS
SL-I-USEREQID: USE requests last_requestid=1 as RESPONSEID
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_put_req
SL-I-FINDMSG: look for message handle = 4
SL-I-USEMSGID: USE requests last_messageid=5509 as RESPONSEID
SL-I-COMMAND: sl_send_msg
MESSAGE
ENVELOPE
ORIGINATOR = ,,2967.610
SENDER = ,,0.0
ADDRESSEE = ,,2967.181
PRIORITYSTYLE = 0
ACKSTYLE = 1
RECOVERYSTYLE = 1
AUTHSTYLE = 0
DEFERREDTIME = 0
END of ENVELOPE
HEADER
DAYANDTIME = <DEFAULT>
CLASS = 51
TYPE = 0
WAITSTYLE = 1
TRANSACTIONID = 0
RESPONSEID = 5509
MESSAGEID = 2
REQUESTCONTINUATIONFLAG = 0
MESSAGECONTINUATIONFLAG = 0
PRECEEDINGMESSAGEID = 0
NODEPLUSACCOUNT = PKDOTS.OZY.DEC.COM::HUNTER
END of HEADER
BODY
BODYITEM - TYPE = 0,LINKFLAG = 0,SERVICE_NAME = [INQUIRE]
ELEMENT = [PROCESS_NAME,wasa]
ELEMENT = [VERSION,V1.32-UDIG/FNS]
ELEMENT = [CLASS,0]
ELEMENT = [SERVER_STATUS,0]
ELEMENT = [QUEUE_TYPE,T]
ELEMENT = [OPERATING_SYSTEM,F]
ELEMENT = [SERVICE,wasa]
ELEMENT = [SERVICE_STATUS,0]
ELEMENT = [AUDIT_STATUS,0]
ELEMENT = [ELAPSED_TIME,1]
ELEMENT = [CPU_USAGE,1111]
ELEMENT = [REQUEST_COUNT,2]
END of BODY
TRAILER
END of TRAILER
END of MESSAGE
SL-I-FINDMSG: look for message handle = 4
SL-I-FINDMSG: look for message handle = 4
IMS-I-ENCODESVCNAME:put service name in Body=[INQUIRE]
MEM-ENCODE_MSG freeing memory for service_name
MEM-ENCODE_MSG freeing memory chunks for body_item_ptr
SL-I-SENDMSG: RecoveryStyle [1] - WaitStyle [1]
SL-I-MSGSIZE: Outgoing Message Size = 835
SL-I-SENDMSG: address name length = 0
SL-I-SENDTOADDRESS = [2967.181]
SL-I-DELIVERYMODE = 39
****************************************
*SL-I-MSGSENT: message sent STAT1 = 1 *
*SL-I-MSGSENT: psb_status = 1 *
****************************************
SL-I-COMMAND: sl_cancel_msg
SL-I-FINDMSG: look for message handle = 4
SL-I-FINREQINT: No more req in message,free space
***********************
*Wait for next Message*
***********************
SL-I-MSGSIZE: Incoming Message Size = 458
SL-I-DECODE_MESSAGE: decode_msg
IMS-I-DECODE_MESSAGE: decode incoming v11 message
IMS-I-ENDOFMSG: successful end of envelope reached
IMS-I-READ_HEADER_INFO: read message header information
IMS-I-READ_HEADER_INFO: End of header reached
IMS-I-READ_BODY_INFO: start of Body init Body linked list
IMS-I-READ_BODY_PART_INFO: new request
IMS-I-READ_BODY_PART_INFO: read msg info, cont req = false
IMS-I-DECODE: SERVICE_NAME found in Body=[foo]
IMS-I-READ_BODY_INFO: linkflag = 0
IMS-I-READ_BODY_ITEM_INFO: End of body Item reached
IMS-I-READ_BODY_INFO: End of body reached
IMS-I-REQCONTFLG:request cont flag=[0]
IMS-I-MSGCONTFLG: message cont flag = [0]
IMS-I-ENDOFMSG: successful end of message reached
IMS-I-READ_MESSAGE_INFO: End of message reached
SL-I-MSGHANDLE: message_handle = 4
MESSAGE
ENVELOPE
ORIGINATOR = ,,2967.611
SENDER = ,,0.0
ADDRESSEE = wasa,0.0
PRIORITYSTYLE = 0
ACKSTYLE = 1
RECOVERYSTYLE = 1
AUTHSTYLE = 0
DEFERREDTIME = 0
END of ENVELOPE
HEADER
DAYANDTIME = 1997032512040250
CLASS = 1
TYPE = 0
WAITSTYLE = 2
TRANSACTIONID = 0
RESPONSEID = 0
MESSAGEID = 1
REQUESTCONTINUATIONFLAG = 0
MESSAGECONTINUATIONFLAG = 0
PRECEEDINGMESSAGEID = 0
NODEPLUSACCOUNT = PKDOTS.OZY.DEC.COM::HUNTER
END of HEADER
BODY
BODYITEM - TYPE = 0,LINKFLAG = 0,SERVICE_NAME = [foo]
ELEMENT = [Element1,a]
ELEMENT = [Element2,a]
END of BODY
TRAILER
TRAILER = ,/.:/ims/,2967.611,1997032512040250
END of TRAILER
END of MESSAGE
SL-I-WAITREQ: Exiting wait. 2 messages received
SL-I-SAVERTSADR: SL_WAIT_REQ: use ORIGINATOR = 2967.611 for RTS
SL-I-COMMAND: sl_get_msg_elt
SL-I-COMMAND: sl_read_req
SL-I-READREQ: rcv_msg_ptr->seen = 0
SL-I-READREQ: found request seen,type = [0,0]
SL-I-COMMAND: sl_create_req
SL-I-SAVERTSADR: Create request use SOURCE = 2967.611 for RTS
SL-I-USEREQID: USE requests last_requestid=3 as RESPONSEID
SL-I-COMMAND: sl_get_req_elt
SL-I-GETREQINT: sl_get_req_elt_internal service_name_LENGTH=[3]
SL-I-GETREQINT: sl_get_req_elt_internal service_name=[foo]
SL-I-COMMAND: sl_create_req
SL-I-SAVERTSADR: Create request use SOURCE = 2967.611 for RTS
SL-I-USEREQID: USE requests last_requestid=3 as RESPONSEID
SL-I-COMMAND: sl_put_req_elt
Put: [Elt;1]
SL-I-COMMAND: sl_get_req_elt
SL-I-COMMAND: sl_get_error_text
get: IMS error 136020018 SL_NOREQUEST, Request not found
SL-I-COMMAND: sl_put_req_elt
SL-I-COMMAND: sl_send_req
SL-I-SENDREQ: called looking for addressee in request
SL-I-ADDRESSNOTFND: Address not found return to sender
SL-I-FINDMSG: look for message handle = 1
SL-I-FINDMSG: message found handle = 4
SL-I-FINDMSG: message found handle = 1
SL-I-FINDMSG: look for message handle = 1
SL-I-COMMAND: sl_put_req
SL-I-FINDMSG: look for message handle = 1
SL-I-USEMSGID: USE requests last_messageid=1 as RESPONSEID
MESSAGE
ENVELOPE
ORIGINATOR = ,,2967.610
SENDER = ,,0.0
ADDRESSEE = ,,2967.611
PRIORITYSTYLE = 0
ACKSTYLE = 1
RECOVERYSTYLE = 1
AUTHSTYLE = 0
DEFERREDTIME = 0
END of ENVELOPE
HEADER
DAYANDTIME = <DEFAULT>
CLASS = 0
TYPE = 0
WAITSTYLE = 1
TRANSACTIONID = 0
RESPONSEID = 1
MESSAGEID = 4
REQUESTCONTINUATIONFLAG = 0
MESSAGECONTINUATIONFLAG = 0
PRECEEDINGMESSAGEID = 0
NODEPLUSACCOUNT = PKDOTS.OZY.DEC.COM::HUNTER
END of HEADER
BODY
BODYITEM - TYPE = 0,LINKFLAG = 0
ELEMENT = [ERROR_TEXT,Error number 136020018 performing
service foo.]
END of BODY
TRAILER
END of TRAILER
END of MESSAGE
SL-I-FINDMSG: look for message handle = 1
SL-I-FINDMSG: look for message handle = 1
MEM-ENCODE_MSG freeing memory chunks for body_item_ptr
SL-I-SENDMSG: RecoveryStyle [1] - WaitStyle [1]
SL-I-MSGSIZE: Outgoing Message Size = 467
SL-I-SENDMSG: address name length = 0
SL-I-SENDTOADDRESS = [2967.611]
SL-I-DELIVERYMODE = 39
****************************************
*SL-I-MSGSENT: message sent STAT1 = 1 *
*SL-I-MSGSENT: psb_status = 1 *
****************************************
SL-I-COMMAND: sl_finish_req
SL-I-FINREQ:-No more requests in message, free space
SL-I-COMMAND: sl_wait_req
SL-I-COMMAND: sl_count_pending_req
***********************
*Wait for next Message*
***********************
SL-I-ERRORHNDLR: error handler called
SL-I-UNSENTREQ: unsent request found, handle = [0]
SL-I-ERRORHNDLR: finished error handler
SL-I-EXITHNDLR: exit handler called
SL-I-CLRDNSMAM: clearing address for name [wasa]
SL-I-UNSENTREQ: unsent request found, handle = [5]
csh> ^Dexit
script done on Tue 25 Mar 12:04:08 1997
script done on Tue 25 Mar 12:04:08 1997
T.R | Title | User | Personal Name | Date | Lines |
---|
287.1 | try and take the & off of the handle.. | BEAVER::MCKEATING | | Tue Mar 25 1997 13:11 | 18 |
| Warwick, what you are trying to do should have no problems, i.e. nested
requests.
just change the call to the sl_get_req_elt in foo and remove the &
status = sl_get_req_elt(&hReq, eltType, 0, eltValue, 0);
if (status != SL_C_NORMAL)
then becomes
status = sl_get_req_elt(hReq, eltType, 0, eltValue, 0);
if (status != SL_C_NORMAL)
this should solve the problem.
let us know how you get on.
Bob
|
287.2 | | OZROCK::HUNTER | This is my last Renault | Tue Mar 25 1997 23:27 | 14 |
| Thanks Bob,
Can you fix the web page documentation please. The call
to sl_get_req_elt is listed as:
long int sl_get_req_elt(unsigned long *request_handle,
char *type,
[unsigned long *type_length],
char *value,
[unsigned long *value_length]);
Thanks,
Warwick.
|