void BHSequenceObject::ConnectorConnected(IConnector* conn,IConnector* other) { BHConnector*c=(BHConnector*)conn; bool createConn=true; for(int i=0;i<m_output.size();++i) { BHConnector*cc=(BHConnector*)m_output[i]; if(cc!=c && cc->GetConnections().size()==0) { createConn=false; break; } } c->ClearConnections(); if(c->GetType()==BHConnector::EOutput) { if(createConn) AddConnector(new BHConnector(BHConnector::EOutput)); IBHCanvasObject*o=(IBHCanvasObject*)other->GetOwner(); m_node->AddNode( o->GetNode()); } }
bool ACEClientEngine::Start(char* szIP, unsigned short port) { return AddConnector(1, szIP, port) >= 0; }
void IBHCanvasObject::_BuildConnectors() { m_input=new BHConnector(BHConnector::EInput); AddConnector(m_input); }
IBHCanvasObject::~IBHCanvasObject() { AddConnector(new BHConnector(BHConnector::EOutput)); }
bool ConnectorManager_Client::ConnectToServer(const char* ip, uint16_t port, ConnectorID_t &ConnectorID) { int ret = 0; int step = 0; bool bRemove = false; Connector *pConnector = m_pConnectorPool->NewConnector(); if (pConnector == NULL) return false; Socket* pSocket = pConnector->GetSocket(); _NET_TRY { ret = pSocket->create_socket(); if(!ret) { step = 1; goto EXCEPTION; } ret = pSocket->connect_socket(ip, port); if(!ret) { step = 2; goto EXCEPTION; } ret = pSocket->setNonBlocking(); if(!ret) { step = 3; goto EXCEPTION; } ret = pSocket->setLinger(0); if(!ret) { step = 4; goto EXCEPTION; } ret = AddConnector(pConnector); if(!ret) { step = 6; goto EXCEPTION; } bRemove = true; NET::ConnecterState(pConnector->GetConnectorID(), NET::ConnecterConnect); } _NET_CATCH { step = 5; goto EXCEPTION; } WriteLog(KERN_INFO "ServerConnectorManager::ConnectToServer(): Success ! IP:%s Port:%d", ip, port ); ConnectorID = pConnector->GetConnectorID(); return true; EXCEPTION: WriteLog(KERN_ERR "ClientConnectorManager::ConnectToServer(): Fail ! IP:%s Port:%d,Step:%d", ip, port, step ); if( bRemove ) { RemoveConnector(pConnector); } else { m_pConnectorPool->DelConnector(pConnector->GetConnectorID()); } return false; }
Connector* ConnectorManager_Client::AcceptNewConnection() { if(m_bServerMode == false) return NULL; int32_t step = 0; bool ret = false; bool bRemove = false; Connector* pConnector = NULL; _NET_TRY { pConnector = m_pConnectorPool->NewConnector(); if( pConnector == NULL ) { WriteLog(KERN_ERR "ConnectorManager::AcceptNewConnection(): Fail ! New Connector Fail" ); return NULL; } ret = m_pServerSocket->accept_socket(pConnector->GetSocket()); if(!ret) { m_pConnectorPool->DelConnector(pConnector->GetConnectorID()); return NULL; } } _NET_CATCH { step += 1000; goto EXCEPTION; } _NET_TRY { Socket* pSocket = pConnector->GetSocket(); if(pSocket->getFD() == INVALID_SOCKET ) { step = 2; goto EXCEPTION; } ret = pSocket->setNonBlocking(); if(!ret) { step = 3; goto EXCEPTION; } ret = pSocket->setLinger(0); if(!ret) { step = 4; goto EXCEPTION; } step = 5; ret = AddConnector(pConnector); if(!ret) { goto EXCEPTION; } bRemove = true; NET::ConnecterState(pConnector->GetConnectorID(), NET::ConnecterConnect); } _NET_CATCH { step += 10000; goto EXCEPTION; } WriteLog(KERN_INFO "ServerConnectorManager::ConnectToServer(): Success ! sock=%d,pid=%d,ip=%s", pConnector->GetSocket()->getSOCKET(), pConnector->GetConnectorID(), pConnector->GetSocket()->getIP() ); return pConnector; EXCEPTION: WriteLog(KERN_ERR "ClientConnectorManager::ConnectToServer(): Fail ! IP:%s Port:%d,Step:%d", pConnector->GetSocket()->getSOCKET(), pConnector->GetConnectorID(), pConnector->GetSocket()->getIP() ); if( pConnector != NULL ) { if( bRemove ) RemoveConnector(pConnector); else m_pConnectorPool->DelConnector(pConnector->GetConnectorID()); } return NULL; }
void BHSequenceObject::_BuildConnectors() { IBHCanvasObject::_BuildConnectors(); AddConnector(new BHConnector(BHConnector::EOutput)); }