Beispiel #1
0
    void LocalSock::handleAccept(SessionPtr _sessionPtr, const boost::system::error_code& _errorCode) {
        if (0 != _errorCode) {
//            LOG4CXX_ERROR(MiLog4cxx::logger, "handleAccept failed error=" << _errorCode.message());
        }
        else {
            _sessionPtr->start();
        }
        // for new connection (每个 connection 有自己的 Session obj)
        _sessionPtr.reset(new Session(m_ioService));
        m_acceptor.async_accept(_sessionPtr->socket(),
                                boost::bind(&LocalSock::handleAccept, this, _sessionPtr, boost::asio::placeholders::error));
    }
Beispiel #2
0
		void clearAllSessions() {
			SessionPtr myCurrentSession;
			list<SessionPtr> mySessions;
			{
				LockGuard l(syncher);
				myCurrentSession = currentSession;
				mySessions = sessions;
				currentSession.reset();
				sessions.clear();
			}
			myCurrentSession.reset();
			mySessions.clear();
		}
Beispiel #3
0
void Server::handleAccept(SessionPtr session, const boost::system::error_code& error)
{
   std::cout << "Connection accepted." << std::endl;
   if (error)
   {
      std::cerr << error.message() << std::endl;
      return;
   }

   session->start();
   session.reset(new Session(*ios_));
   acceptor_.async_accept(session->getSocket(),
      boost::bind(&Server::handleAccept, this, session,
      boost::asio::placeholders::error));
}
Beispiel #4
0
TEST( NodeDaoTest, CRUD )
{
    mld::SparkseeManager sparkseeManager(mld::kRESOURCES_DIR + L"mysparksee.cfg");
    sparkseeManager.createDatabase(mld::kRESOURCES_DIR + L"MLDTest.sparksee", L"MLDTest");

    SessionPtr sess = sparkseeManager.newSession();
    Graph* g = sess->GetGraph();
    // Create Db scheme
    sparkseeManager.createBaseScheme(g);

    std::unique_ptr<NodeDao> dao( new NodeDao(g) );

    mld::Node a(dao->invalidNode()), b(dao->invalidNode());
    EXPECT_EQ(a, b);

//    mld::Node a2(0, AttrMap());
//    EXPECT_EQ(a, a2);
//    EXPECT_DOUBLE_EQ(kNODE_DEF_VALUE, a2.weight());

    mld::Node n1 = dao->addNode();
    EXPECT_EQ(NODE_DEF_VALUE, n1.weight());

    n1.setWeight(15);
    n1.setLabel(L"test");
    // Update node content
    EXPECT_TRUE(dao->updateNode(n1));
    // Get
    mld::Node n1_update(dao->getNode(n1.id()));

    EXPECT_EQ(n1.id(), n1_update.id());
    EXPECT_EQ(15, n1_update.weight());
    EXPECT_EQ(L"test", n1_update.label());
    EXPECT_EQ(n1, n1_update);

    // Add user property not persist in db
    n1.data()[L"prop"].SetBooleanVoid(true);
    // Not equal in memory
    EXPECT_NE(n1_update, n1);

    EXPECT_TRUE(dao->updateNode(n1));
    mld::Node n1_bis(dao->getNode(n1.id()));
    // Update the db, drop user prop when read back from db
    EXPECT_EQ(n1_bis, n1_update);

    // GET invalid node
    mld::Node u = dao->getNode(Objects::InvalidOID);
    EXPECT_EQ(Objects::InvalidOID, u.id());

    // Invalid get node, exception is catched if MLD_SAFE flag is defined
#ifdef MLD_SAFE
    mld::Node t = dao->getNode(15434);
    EXPECT_EQ(Objects::InvalidOID, t.id());

    // Invalid remove node, exception is catched if MLD_SAFE flag is defined
    dao->removeNode(123123);
#endif
    // Remove n1 node
    dao->removeNode(n1.id());

#ifdef MLD_SAFE
    u = dao->getNode(n1.id());
    EXPECT_EQ(Objects::InvalidOID, u.id());
#endif

    dao->addNode();
    dao->addNode();

    // Get from Objets
    ObjectsPtr all(g->Select(dao->nodeType()));
    EXPECT_EQ(2, all->Count());
    std::vector<mld::Node> allVec = dao->getNode(all);
    EXPECT_EQ(size_t(2), allVec.size());

    // Add arbitrary prop in nodes
    Value v;
    v.SetDouble(42.0);
    EXPECT_TRUE(sparkseeManager.addAttrToNode(g, L"test", Double, Basic, v));
    // To update model
    dao.reset( new NodeDao(g) );
    auto n2( dao->addNode() );
    EXPECT_DOUBLE_EQ(42.0, n2.data().at(L"test").GetDouble());

    all.reset();
    dao.reset();
    sess.reset();
}