[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[opensoap-users-ja:0025] サーバ 側での他のプログラムの include



こんにちわ,以前お世話になった松本です.

しばらくSOAPからも離れていたのですが,
実際にSOAPを使ってシステム構築をすることになりました.

以前にサンプルとして書いていただいた
サーバ側のプログラム(ramdomService.c)を少しいじって,
他のプログラムをincludeし,
その中の関数をmain関数の中で用いようとしたところ,
うまくSOAPによって呼び出すことができませんでした.

matching()という関数を呼び出しているのですが,
記述する場所によって様々です.
コンパイルが通らなかったり,
コンパイルは通っても実行ファイルが実行できなかったり,
実行ファイルは実行できてもSOAPでクライアントから
呼び出そうとすると「Object」と返ってくるだけだったり.

何かまずい点があれば教えてください.
お願いいたします.

///////////////////////////////////////////////////////

#include <OpenSOAP/OpenSOAP.h>
#include <OpenSOAP/Service.h>

#include <stdio.h>
#include <stdlib.h>

#include "all-number.c"			//新たにincludeしたプログラム

#if !defined(CONNECT_TYPE)
# define CONNECT_TYPE "cgi"
#endif /* CONNECT_TYPE */

static
int
ServiceFunc(OpenSOAPEnvelopePtr request,
			OpenSOAPEnvelopePtr *response,
			void *opt) {
	OpenSOAPBlockPtr body = NULL;
	
	OpenSOAPStringPtr reply = NULL;
	
	/* parse request message */
	
	/*OpenSOAPEnvelopeGetBodyBlockMB(request, "ramdom", &body);*/ 
	
	/* make response */
	
	OpenSOAPEnvelopeCreateMB(NULL, NULL, response);
	OpenSOAPEnvelopeAddBodyBlockMB(*response, "ramdomResponse", &body);
	OpenSOAPBlockSetNamespaceMB(body, "urn:SOAP_Example_Server", "m");

	OpenSOAPStringCreate(&reply);

	srand((unsigned long)time(NULL));
	OpenSOAPStringFormatMB(reply,
				 "item%d",
				 (int)(10.0 / ((double)RAND_MAX + 1.0) * rand())
				);
	OpenSOAPBlockSetChildValueMB(body, "return", "string", &reply);

	OpenSOAPStringRelease(reply);
	
	return 0;
}

int
main(void) {
	
	OpenSOAPServicePtr service = NULL;
	
	OpenSOAPInitialize(NULL);
	
	OpenSOAPServiceCreateMB(&service, "ramdomService", CONNECT_TYPE, 0);
	
	OpenSOAPServiceRegisterMB(service, "ramdom", ServiceFunc, NULL);
	
	OpenSOAPServiceRun(service);
	
	OpenSOAPServiceRelease(service);
	
	OpenSOAPUltimate();
	
	matching();		//includeしたプログラム内の関数

	return 0;
}


/////////////////////////////////////////////////////////////////


-- 
知的システムデザイン研究室
松本義秀 <gisyu@mikilab.doshisha.ac.jp>