Example #1
0
std::ostream& writeCAF(std::ostream& out, Contig& c)
{
    std::vector<std::string> fields;
        
    // ID
    fields.push_back(makeKeyValue(IDFIELD, c.m_id));
    fields.push_back(makeKeyValue(LENFIELD, c.m_length));
    fields.push_back(makeKeyValue(COVFIELD, c.m_coverage));
    fields.push_back(makeKeyValue(SEQFIELD, c.m_seq));
    fields.push_back(makeKeyValue(UNQFIELD, c.m_uniqueFlag));
    std::copy(fields.begin(), fields.end(), std::ostream_iterator<std::string>(out, "\t"));
    return out;
}
Example #2
0
    // return MHD_NO or MHD_YES
    virtual int handleRequest(  struct MHD_Connection *connection,
                                const char */*url*/, const char *method, const char */*version*/,
                                const char *upload_data, size_t *upload_data_size)
    {
        // new request
        if(mState == BEGIN)
        {
            if(strcmp(method, "POST") == 0)
            {
                mState = WAITING_DATA;
                // first time there is no data, do nothing and return
                return MHD_YES;
            }
        }
        if(mState == WAITING_DATA)
        {
            if(upload_data && *upload_data_size)
            {
                mRequesString += std::string(upload_data, *upload_data_size);
                *upload_data_size = 0;
                return MHD_YES;
            }
        }

        std::vector<uint8_t> bytes(mRequesString.begin(), mRequesString.end());

        int id = mApiServer->getTmpBlobStore()->storeBlob(bytes);

        resource_api::JsonStream responseStream;
        if(id)
            responseStream << makeKeyValue("ok", true);
        else
            responseStream << makeKeyValue("ok", false);

        responseStream << makeKeyValueReference("id", id);

        std::string result = responseStream.getJsonString();

        struct MHD_Response* resp = MHD_create_response_from_data(result.size(), (void*)result.data(), 0, 1);

        MHD_add_response_header(resp, "Content-Type", "application/json");

        secure_queue_response(connection, MHD_HTTP_OK, resp);
        MHD_destroy_response(resp);
        return MHD_YES;
    }
Example #3
0
StreamBase& operator << (StreamBase& left, ChatHandler::Lobby& l)
{
    ChatId chatId(l.id);
    if (l.is_broadcast)
        chatId = ChatId::makeBroadcastId();
    left << makeKeyValueReference("id", l.id)
         << makeKeyValue("chat_id", chatId.toStdString())
         << makeKeyValueReference("name",l.name)
         << makeKeyValueReference("topic", l.topic)
         << makeKeyValueReference("subscribed", l.subscribed)
         << makeKeyValueReference("auto_subscribe", l.auto_subscribe)
         << makeKeyValueReference("is_private", l.is_private)
         << makeKeyValueReference("is_broadcast", l.is_broadcast)
         << makeKeyValueReference("gxs_id", l.gxs_id);
    return left;
}
Example #4
0
StreamBase& operator <<(StreamBase& left, KeyValueReference<ChatLobbyId> kv)
{
    if(left.serialise())
    {
        std::stringstream ss;
        ss << kv.value;
        left << makeKeyValue(kv.key, ss.str());
    }
    else
    {
        std::string val;
        left << makeKeyValueReference(kv.key, val);
        std::stringstream ss(val);
        ss >> kv.value;
    }
    return left;
}
Example #5
0
void ChatHandler::handleUnreadMsgs(Request &/*req*/, Response &resp)
{
    RS_STACK_MUTEX(mMtx); /********** LOCKED **********/

    resp.mDataStream.getStreamToMember();
    for(std::map<ChatId, std::list<Msg> >::const_iterator mit = mMsgs.begin(); mit != mMsgs.end(); ++mit)
    {
        uint32_t count = 0;
        for(std::list<Msg>::const_iterator lit = mit->second.begin(); lit != mit->second.end(); ++lit)
            if(!lit->read)
                count++;
        std::map<ChatId, ChatInfo>::iterator mit2 = mChatInfo.find(mit->first);
        if(mit2 == mChatInfo.end())
            std::cerr << "Error in ChatHandler::handleUnreadMsgs(): ChatInfo not found. It is weird if this happens. Normally it should not happen." << std::endl;
        if(count && (mit2 != mChatInfo.end()))
        {
            resp.mDataStream.getStreamToMember()
                    << makeKeyValue("id", mit->first.toStdString())
                    << makeKeyValueReference("unread_count", count)
                    << mit2->second;
        }
    }
    resp.mStateToken = mUnreadMsgsStateToken;
}
Example #6
0
void StatsHandler::handleStatsRequest(Request &/*req*/, Response &resp)
{
	StreamBase& itemStream = resp.mDataStream.getStreamToMember();

	// location info
	itemStream << makeKeyValue("name", rsPeers->getGPGName(rsPeers->getGPGOwnId()));
	itemStream << makeKeyValue("location", AuthSSL::getAuthSSL()->getOwnLocation());

	// peer info
	unsigned int all, online;
	rsPeers->getPeerCount(&all, &online, false);
	itemStream << makeKeyValue("peers_all", all);
	itemStream << makeKeyValue("peers_connected", online);

	// bandwidth info
	float downKb, upKb;
	rsConfig->GetCurrentDataRates(downKb, upKb);
	itemStream << makeKeyValue("bandwidth_up_kb", (double)upKb);
	itemStream << makeKeyValue("bandwidth_down_kb", (double)downKb);

	// DHT/NAT info
	RsConfigNetStatus config;
	rsConfig->getConfigNetStatus(config);
	itemStream << makeKeyValue("dht_active",	config.DHTActive);
	itemStream << makeKeyValue("dht_ok",		config.netDhtOk);
	itemStream << makeKeyValue("dht_size_all",	config.netDhtNetSize);
	itemStream << makeKeyValue("dht_size_rs",	config.netDhtRsNetSize);
	uint32_t netState = rsConfig -> getNetState();
	itemStream << makeKeyValue("nat_state", netState);

	// ok
	resp.setOk();
}