예제 #1
0
파일: agent.cpp 프로젝트: Tushar-Naik/hpcl
 void
 handle_server_request( const MemInfo &in_msg ) {
    const MessageHeader *header
                         = reinterpret_cast<const MessageHeader *>(
                                         in_msg.get_data() );
     switch( header->m_type ) {
         case MessageType::MESSAGE_DATA:
         {
             const MessageData *data
                         = reinterpret_cast<const MessageData *>(
                                         in_msg.get_data());
             std::ostringstream sout;
             sout<<"AGENT("<<getpid()<<"): "<<data->msg;
             m_logger->log(sout.str());
             m_logger->disconnect();
             MessageCompleted completed;
             m_client->send_message( completed );
             std::lock_guard<std::mutex> l(g_mutex);
             g_stop = true;
             g_event.notify_one();
             break;
         }
         default:
         {
         }
     }
     return;
 }
예제 #2
0
void
NameServiceClient::on_data_received( const SocketPtr &in_socket,
                            const MemInfo &in_msg ) {
    std::unique_lock<std::mutex> l( m_mutex );
    const DataServiceMessage *pMsg
                = reinterpret_cast<const DataServiceMessage *>(
                                                    in_msg.get_data());
    m_status = pMsg->m_status;
    switch( pMsg->m_header.m_type ) {
        case DataMessageType::DATA_SERVICE_INFO_REPLY:
        {
            std::string data(pMsg->m_data);
            std::istringstream sin( data );
            boost::archive::text_iarchive ia( sin );
            ia & m_info;
            break;
        }
        default:
        {
        }
    }
    m_response_ready = true;
    m_response_ready_cond.notify_one();
    return;
} 
예제 #3
0
void
RemoteLogServer::on_log_received(
                    const SocketPtr &in_socket, const MemInfo &in_info ) {
    std::string message( in_info.get_data() );
    m_signal_log_message_received( message );
    return;
}
예제 #4
0
파일: logd.cpp 프로젝트: Tushar-Naik/hpcl
 void
 handle_server_commands( const MemInfo &in_msg ) {
     const MessageHeader *header
                             = reinterpret_cast<const MessageHeader *>(
                                                 in_msg.get_data() );
     switch( header->m_type ) {
         case MESSAGE_LOGD_SHUTDOWN:
         {
             std::lock_guard<std::mutex> l( m_log_mutex );
             m_stop = true;
             m_log_event.notify_one();
             break;
         }
         default:
         {
         }
     }
 }
예제 #5
0
void
DataServer::on_data_received(
            const SocketPtr &in_socket, const MemInfo &in_msg ) {
    const DataServiceMessage *pMsg
            = reinterpret_cast<const DataServiceMessage *>(
                                    in_msg.get_data());
    DataServiceMessage reply( DATA_SERVICE_GENERAL_REPLY );
    bool status = false;
    switch( pMsg->m_header.m_type ) {
        case DataMessageType::DATA_SERVICE_REGISTER:
        {
            std::string buf = pMsg->m_data;
            std::istringstream ifs( buf );
            boost::archive::text_iarchive ia( ifs );
            ServiceRequestData data;
            ia & data;
            status = on_service_register_request(
                                        data.m_service_name,
                                        data.m_hostname, data.m_port );
            break;
        }
        case DataMessageType::DATA_SERVICE_UNREGISTER:
        {
            std::string buf = pMsg->m_data;
            std::istringstream ifs( buf );
            boost::archive::text_iarchive ia( ifs );
            ServiceRequestData data;
            ia & data;
            status = on_service_unregister_request(
                                        data.m_service_name,
                                        data.m_hostname, data.m_port );
            break;
        }
        case DataMessageType::DATA_SERVICE_INFO_REQUEST:
        {
            std::string buf = pMsg->m_data;
            std::istringstream ifs( buf );
            boost::archive::text_iarchive ia( ifs );
            ServiceRequestData data;
            ia & data;
            ServiceInfoPtr info;
            status = on_service_info_request( data.m_service_name, info );
            if( info ) {
                std::ostringstream sout;
                boost::archive::text_oarchive oa(sout);
                oa & info;
                std::strncpy( reply.m_data,
                                sout.str().c_str(), sout.str().size());
            }
            reply.m_header.m_type =  DATA_SERVICE_INFO_REPLY;
            break;
        }
        default:
        {
        }
    }
    reply.m_status = status;
    MemInfo replyMsg( reinterpret_cast<char *>( &reply ),
                        sizeof( DataServiceMessage ) );
    in_socket->send_data( replyMsg );
}
예제 #6
0
파일: client.cpp 프로젝트: Tushar-Naik/hpcl
void
handle_data( const SocketPtr &in_socket, const MemInfo &in_data ) {
    std::string msg = in_data.get_data();
    std::cout<<"From server: "<<msg<<std::endl;
    return;
}