Beispiel #1
0
int CGMP::UDTsend(const char* ip, const int& port, CGMPMessage* msg)
{
   Transport t;
   if (t.open(m_iUDTReusePort, false, true) < 0)
      return -1;

   if (t.connect(ip, port) < 0)
   {
      t.close();
      return -1;
   }

   if ((t.send((char*)(&m_iPort), 4) < 0) || (t.send((char*)(msg->m_piHeader), 16) < 0) || (t.send((char*)&(msg->m_iLength), 4) < 0))
   {
      t.close();
      return -1;
   }

   if (t.send(msg->m_pcData, msg->m_iLength) < 0)
   {
      t.close();
      return -1;
   }

   t.close();
   return 16 + msg->m_iLength;
}
void run(){
	server.send(Json::Value::null,ACTION_GET_GAMES,true);
	Json::Value games = server.get_response(ACTION_GAME_LIST);
	cout << games.toStyledString();
	cout << "enter session_key: ";
	string key;
	cin >> key;
	if(key == "-1")
		server.send(Json::Value::null,ACTION_NEW_GAME,false,true);
	else{
		SESSION_KEY = key;
		Json::Value select_query;
		select_query["game"] = key;
		server.send(select_query,ACTION_SELECT_GAME,false,true,true);
	}
	string session_key = server.get_response(ACTION_GAME_SESSION)["session_key"].asString();
	SESSION_KEY = session_key;
	server.subscribe(SESSION_KEY);
	// TODO put the stuffs here
	Json::Value data;
	data["x"] = 10;
	data["y"] = 20;
	data["gold"] = 200;
	server.send(data,ACTION_EVENT,false,true,true,true);
}
  // onInterest.
  void operator()
     (const shared_ptr<const Name>& prefix, const shared_ptr<const Interest>& interest, Transport& transport,
      uint64_t registeredPrefixId) 
  {
    ++responseCount_;
    
    // Make and sign a Data packet.
    Data data(interest->getName());
    string content(string("Echo ") + interest->getName().toUri());
    data.setContent((const uint8_t *)&content[0], content.size());
    data.getMetaInfo().setTimestampMilliseconds(time(NULL) * 1000.0);
    keyChain_.sign(data, certificateName_);
    Blob encodedData = data.wireEncode();

    cout << "Sent content " << content << endl;
    transport.send(*encodedData);
  }