[[Tutorial]]

#contents

''※準備中です''


*メッセージ送受信 [#zc25bba0]
前回のサンプルでは
サービスプロバイダからコントローラへメッセージを送信しました。
ここではコントローラからサービスプロバイダへメッセージを送信し、サービスプロバイダが返事をするサンプルを紹介します。

***コントローラサンプル [#z5f5cfa5]
#highlight(cpp){{
#include <string>
#include "Controller.h"
#include "Logger.h"
#include "ControllerEvent.h"

#define PI 3.141592
#define DEG2RAD(DEG) ( (PI) * (DEG) / 180.0 )

using namespace std;

class AgentController : public Controller
{
public:
  double onAction(ActionEvent &evt);
  void onRecvMsg(RecvMsgEvent &evt);
  void onInit(InitEvent &evt);


private:
  BaseService *m_srv;
};

void AgentController::onInit(InitEvent &evt)
{

  m_srv = NULL;
  m_srv = connectToService("MyService");
}

double AgentController::onAction(ActionEvent &evt)
{
  if(m_srv != NULL){
    m_srv->sendMsgToSrv("Hello");
  }
  return 1.0;
}

void AgentController::onRecvMsg(RecvMsgEvent &evt)
{
  std::string sender = evt.getSender();
  std::string msg = evt.getMsg();
  LOG_MSG(("[%s] %s", sender.c_str(), msg.c_str()));
}

extern "C"  Controller * createController ()
{
  return new AgentController;
}
}}



***サービスサンプル [#d1d0956b]


#highlight(cpp){{
#include "stdafx.h"
#include "SIGService.h"
#include <tchar.h>
#include <string>

class MyService : public sigverse::SIGService
{

public:
	MyService(std::string name) : SIGService(name){};
	~MyService();
	void onRecvMsg(sigverse::RecvMsgEvent &evt);
	double onAction();
};

MyService::~MyService()
{
	this->disconnect();
}

double MyService::onAction()
{
	return 1.0;
}

void MyService::onRecvMsg(sigverse::RecvMsgEvent &evt)
{
	std::string sender = evt.getSender();
	std::string msg = evt.getMsg();
	if(msg == "Hello") {
		this->sendMsgToCtr(sender, "Hello! this is MyService");
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	MyService srv("MyService");
//	unsigned short port = (unsigned short)(atoi(argv[3]));
//	srv.connect(argv[2], port);

	srv.connect("hostname", <portnum>);
	srv.startLoop();
	return 0;
}

}}



#highlight(end)

Front page   New List of pages Search Recent changes   Help   RSS of recent changes