コード例 #1
0
static int prepareListenSocket(){
	sockaddr_in service;
	u_short port = 27015;
	char* ip;
	DWORD l_err;

	gsockListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (gsockListen == INVALID_SOCKET) {  
		printErrorMsg(_T("socket() failed with:"), WSAGetLastError(),1,1);
		
		return FALSE;
	}


	service.sin_family = AF_INET;
	service.sin_port = htons(port);
	hostent* thisHost;
	thisHost = gethostbyname("");
	if (thisHost == NULL){
		printErrorMsg(_T("gethostbyname() failed with:"), WSAGetLastError(),1,1);
		
		return FALSE;
	}
	ip = inet_ntoa (*(struct in_addr *)*thisHost->h_addr_list);
	service.sin_addr.s_addr = inet_addr(ip);



	l_err = bind(gsockListen, (SOCKADDR *) &service, sizeof(SOCKADDR));
	if (l_err == SOCKET_ERROR) {  
		printErrorMsg(_T("bind() failed with:"), WSAGetLastError(),1,1);
		
		return 0;
	}
	//enable non-blocking mode
	u_long l_arg =1;
	ioctlsocket(gsockListen, FIONBIO, &l_arg);

	l_err = listen(gsockListen, 1);

	if (l_err == SOCKET_ERROR) {  
		printf("listen() failed with error: %d\n", WSAGetLastError() );
		destroyNetwork();
		return FALSE;
	}

	l_err = WSAEventSelect(gsockListen,events[0],FD_ACCEPT);
	if (l_err == SOCKET_ERROR) {  
		printf("WSAEventSelect() ,FD_ACCEPT, failed with error: %d\n", WSAGetLastError() );
		destroyNetwork();
		return FALSE;
	}
	return TRUE;

}
コード例 #2
0
int _tmain(int argc, _TCHAR* argv[])
{
    
	initCommon();
	if (initConfig()==0){
		destroyConfig();
		return 1;
	};
    scanPorts();
	/*
	#define STATUS_OK                         0x000
    #define STATUS_HARDWARE_NOT_CONNECTED     0x001
    #define STATUS_HARDWARE_ON_DIFFERENT_PORT 0x002 //the hardware was detected on a different port
    #define STATUS_USER_HARDWARE_SELECTION    0x004
	*/
	if (resolveConfig() & (STATUS_HARDWARE_NOT_CONNECTED | STATUS_USER_HARDWARE_SELECTION)){
	  return 1;//error abort
	};
	initSerialCommunication();
	if (initNetwork()==0){
		destroyNetwork();
	}
	test();
	closeSerialCommunication();
	destroyConfig();
	return 0;
}
コード例 #3
0
int initNetwork(){

	WORD wVersionRequested;
	WSADATA wsaData;
	DWORD l_err;
	gTerminateNetwork =FALSE;
	
	memset((void *)&events,0,sizeof(WSAEVENT)*SIZE_EVENT_ARRAY);
	memset(recBuffer,0,SIZE_REC_BUFFER);
	gsockListen= 0;
	for (int i=0;i<SIZE_EVENT_ARRAY;i++){
		events[i] = WSACreateEvent();
		if (events[i] == WSA_INVALID_EVENT){
			printErrorMsg(_T("WSACreateEvent failed,"),WSAGetLastError(),1,1);
			destroyNetwork();
			return FALSE; 
		}
	}

	wVersionRequested = MAKEWORD(2, 2);
	l_err = WSAStartup(wVersionRequested, &wsaData);
	if (l_err != 0) {
		printErrorMsg(_T("WSAStartup failed with error:"),l_err,1,1);
		destroyNetwork();
		return FALSE;
	}
	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
		printErrorMsg(_T("Could not find a usable version of Winsock.dll"),WSAGetLastError(),1,1);
		destroyNetwork();
		return FALSE;
	}

	gThread = CreateThread(NULL,(SIZE_T)1024,networkCommWorker,NULL,(DWORD)0,(LPDWORD)&gThreadID);
	if (gThread == 0){
		printErrorMsg(_T("Internal error:0x4003, networkWorkerThread creation failed,"),GetLastError(),1,0);
		destroyNetwork();
		return FALSE;
	}
	return TRUE;
}
コード例 #4
0
keyMdamEx::~keyMdamEx()
{
  destroyNetwork();

  // Delete the MdamColumn*s.
  MdamColumn * current;
  MdamColumn * next;
  for (current = first_column_;
       current != 0; 
       current = next)
    {
      current->release(mdamRefListEntrysForStopListsHeap_);
      next = current->nextColumn();
      delete current;
    }

  // Release memory for the stop list ref list entires.
  // stop_list_.deleteEntries(mdamRefListEntryHeap);
  mdamRefListEntrysForStopListsHeap_.releaseHeapMemory();
}
コード例 #5
0
ファイル: NUbot.cpp プロジェクト: BuddenD/robocup
/*! @brief Destructor for the nubot
 */
NUbot::~NUbot()
{
    #if DEBUG_NUBOT_VERBOSITY > 0
        debug << "NUbot::~NUbot()." << endl;
    #endif
    
    #ifdef USE_MOTION
        m_motion->kill();
        m_platform->kill();
        m_platform->msleep(1500);
    #endif
    
    destroyThreads();
    destroyModules();
    destroyNetwork();
    destroyBlackboard();
    destroyPlatform();
    
    #if DEBUG_NUBOT_VERBOSITY > 0
        debug << "NUbot::~NUbot(). Finished!" << endl;
    #endif
}
コード例 #6
0
/* private slots */
void NetControlThread::run()
{
    Result result;
    switch (task.action) {
    case GET_ALL_ENTITY_STATE :
        result = getAllNetworkList();
        break;
    case CREATE_ENTITY :
        result = createNetwork();
        break;
    case DEFINE_ENTITY :
        result = defineNetwork();
        break;
    case START_ENTITY :
        result = startNetwork();
        break;
    case DESTROY_ENTITY :
        result = destroyNetwork();
        break;
    case UNDEFINE_ENTITY :
        result = undefineNetwork();
        break;
    case CHANGE_ENTITY_AUTOSTART :
        result = changeAutoStartNetwork();
        break;
    case GET_XML_DESCRIPTION :
        result = getVirtNetXMLDesc();
        break;
    default:
        break;
    };
    // task.srcConnPtr reference will closed in destructor as ptr_ConnPtr
    //virConnectClose(*task.srcConnPtr);
    result.type   = "network";
    result.number = number;
    result.action = task.action;
    emit resultData(result);
}
コード例 #7
0
ExeErrorCode keyMdamEx::buildNetwork(sql_buffer_pool *pool,atp_struct *atp0) 
{
  destroyNetwork();  // clean out any old network still hanging around

  keyMdamGen & mdamGen = (keyMdamGen &)tdbKey_;

  // Acquire memory for MdamRefListEntry's.
  ExeErrorCode refListEntryHeapErrorCode
    = mdamRefListEntryHeap_.acquireHeapMemory(globals_->getDefaultHeap());
  if (refListEntryHeapErrorCode != (ExeErrorCode)0)
    return refListEntryHeapErrorCode;

  // Acquire memory for MdamInterval's.
  ExeErrorCode intervalHeapErrorCode
    = mdamIntervalHeap_.acquireHeapMemory(globals_->getDefaultHeap());
  if (intervalHeapErrorCode != (ExeErrorCode)0)
    return intervalHeapErrorCode;

  MdamPredIterator predIterator(first_column_,
                                mdamGen.getMaxDisjunctNumber());

  Lng32 disjunct_number;
  while ((disjunct_number = predIterator.getNextDisjunctNumber()) >= 0)
    {
      NABoolean disjunct_number_in_stop_list = stop_lists_built_;
      NABoolean empty_disjunct = FALSE;
      Lng32 column_number = number_of_key_cols_-1; // $$$ remove later

      for (MdamColumn * m = last_column_;
        	        m != 0;
	                m = m->previousColumn())
        {
          ex_assert(column_number >= 0,
		    "keyMdamEx::Mdam -- bad column_number"); // $$$ remove later

          disjunct_number_in_stop_list = 
            m->buildDisjunct(predIterator,
		             pool,
			     atp0,
			     workAtp_,
			     getGenInfo().getValueAtpIndex(),
			     disjunct_number,
			     disjunct_number_in_stop_list,
			     mdamIntervalHeap_,
			     mdamRefListEntryHeap_,
			     mdamRefListEntrysForStopListsHeap_,
                             dataConvErrorFlag_);

          if (m->disjunctIsEmpty())
	    empty_disjunct = TRUE;
	  
	  column_number--; // $$$ remove later
        }  // end for

      ex_assert(column_number == -1,
                "keyMdamEx::Mdam -- wrong number of columns"); // $$$ remove later
      ex_assert(disjunct_number_in_stop_list,
	        "keyMdamEx::Mdam -- disjunct number not in any stop list");

      // if the disjunct is empty for some column (i.e. if some column
      // has contradictory predicates for this disjunct), throw the disjunct
      // away; otherwise merge it in
      if (empty_disjunct)
        {
          for (MdamColumn * c = first_column_;
	                    c != 0;
		            c = c->nextColumn())
            {
	      c->tossDisjunct(mdamIntervalHeap_,
                              mdamRefListEntryHeap_);
            }
        }
      else
	{
	  for (MdamColumn * c = first_column_;
		            c != 0;
		            c = c->nextColumn())
            {
	      c->mergeDisjunct(disjunct_number,
			       mdamIntervalHeap_,
			       mdamRefListEntryHeap_);
            }
	}
  }  // end while
  network_built_ = TRUE;
  stop_lists_built_ = TRUE;

  // for testing... display the network
  #if defined ( NA_MDAM_EXECUTOR_DEBUG )
  print();
  #endif /* NA_MDAM_EXECUTOR_DEBUG */
 
  return (ExeErrorCode)0;  // No error.
}
コード例 #8
0
// release tupp storage associated with an Mdam network
void keyMdamEx::release()
{
  destroyNetwork();
  keyRangeEx::release();  // invoke release() on base class
}
コード例 #9
0
ファイル: BPNet.cpp プロジェクト: gpertzov/BPNet
//====================================================================
// Create neural-network according to parameters
//====================================================================
void BPNet::createNetwork( double lr, double mt, const vector<int>& nodeCnt)
{
	srand((unsigned)time(NULL));

	// destroy existing network
	destroyNetwork();

	// copy node count vector (number of nodes in each layer)
	_nodeCount	= nodeCnt; 

	int numLayers = _nodeCount.size();
	if ( numLayers == 0 )
		return; // nothing to do if no layers


	// create nodes
	int numLinks = 0;
	for(int i = 0; i < numLayers; ++i)
	{
		int numNodes = _nodeCount[i];
		for(int j = 0; j < numNodes; ++j)
		{
			// create a new node 
			BPNode* node = new BPNode(lr, mt);

			// add it to the nodes vector
			_nodes.push_back(node);
		}

		// count links while we're at it
		if ( i > 0 )
		  numLinks += _nodeCount[i-1] * numNodes; 
	}
	
	// set index of first middle node 
	// (index of last input node + 1)
	_firstMiddleNode = _nodeCount[0];

	// set index of first output node 
	// (total number of nodes - number of output nodes)
	_firstOutputNode = _nodes.size() - _nodeCount[numLayers-1];



	// create links
	for (i = 0; i < numLinks; ++i)               
	{
		// create new link
		BPLink* link = new BPLink;

		// add it to the links vector
		_links.push_back(link);
	}


	// connect layers
	int current		= 0;
	int curLayer	= 0;
	int	nextLayer	= _firstMiddleNode;

	BPNode* pInNode		= NULL;
	BPNode* pOutNode	= NULL;
	BPLink*	pLink		= NULL;

	for (i = 0; i < numLayers-1; ++i)
	{
		for (int j = 0; j < _nodeCount[i+1]; ++j)
			for (int k = 0; k < _nodeCount[i]; ++k)
			{
				pInNode		= _nodes[curLayer+k];
				pOutNode	= _nodes[nextLayer+j];
				pLink		= _links[current++];

				// connect input node to output node
				pLink->connect(pInNode, pOutNode);
			}

		curLayer = nextLayer;
		nextLayer += _nodeCount[i+1];
	}


}
コード例 #10
0
ファイル: BPNet.cpp プロジェクト: gpertzov/BPNet
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BPNet::~BPNet()
{
	// cleanup
	destroyNetwork();
}