Changeset 99 in pacpussensors for trunk/PacpusSocket/PacpusUDPSocket.cpp


Ignore:
Timestamp:
Oct 15, 2015, 2:47:01 PM (9 years ago)
Author:
nguyenhu
Message:

compilation under linux with 0.2.X framework

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/PacpusSocket/PacpusUDPSocket.cpp

    r87 r99  
    55//  author:     Pierre Hudelaine
    66//              Copyright Heudiasyc UMR UTC/CNRS 7253
    7 // 
     7//
    88//  version:    $Id: $
    99//
     
    1212*********************************************************************/
    1313
    14 #include "PacpusUDPSocket.h" 
     14#include "PacpusUDPSocket.h"
    1515
    1616#include <qbuffer.h>
     
    2727// Construct the factory
    2828//////////////////////////////////////////////////////////////////////////
    29 static ComponentFactory <PacpusUDPSocket> sFactory("PacpusUDPSocket"); 
     29static ComponentFactory <PacpusUDPSocket> sFactory("PacpusUDPSocket");
    3030
    3131
     
    3434//////////////////////////////////////////////////////////////////////////
    3535PacpusUDPSocket::PacpusUDPSocket(QString name)
    36     : ComponentBase(name) 
    37 {
    38 } 
     36    : ComponentBase(name)
     37{
     38}
    3939
    4040
     
    4242// Destructor
    4343//////////////////////////////////////////////////////////////////////////
    44 PacpusUDPSocket::~PacpusUDPSocket() 
     44PacpusUDPSocket::~PacpusUDPSocket()
    4545{
    4646}
     
    5252void PacpusUDPSocket::addOutputs()
    5353{
    54         addOutput<QString, PacpusUDPSocket>("udpSocketOutput");
     54        addOutput<QString, PacpusUDPSocket>("string");
    5555}
    5656
     
    6161void PacpusUDPSocket::addInputs()
    6262{
    63         addInput<QString, PacpusUDPSocket>("udpSocketInput", &PacpusUDPSocket::sendDatagrams);
    64 }
    65 
    66 
    67 //////////////////////////////////////////////////////////////////////////
    68 // Called by the ComponentManager to pass the XML parameters to the 
    69 // component 
    70 //////////////////////////////////////////////////////////////////////////
    71 ComponentBase::COMPONENT_CONFIGURATION  PacpusUDPSocket::configureComponent(XmlComponentConfig config) 
    72 { 
     63    addInput<QString, PacpusUDPSocket>("string", &PacpusUDPSocket::sendQString);
     64}
     65
     66
     67//////////////////////////////////////////////////////////////////////////
     68// Called by the ComponentManager to pass the XML parameters to the
     69// component
     70//////////////////////////////////////////////////////////////////////////
     71ComponentBase::COMPONENT_CONFIGURATION  PacpusUDPSocket::configureComponent(XmlComponentConfig config)
     72{
    7373
    7474        socketType_ = config.getProperty("typeSocket");
    75        
     75
    7676        if (socketType_ == "client" || socketType_ == "Client")
    7777        {
    7878            address2send_.setAddress(config.getProperty("address"));
    7979            port2send_ = config.getProperty("port").toUInt();
    80             socketType_ = "client";             
     80            socketType_ = "client";
    8181        }
    8282        else if (socketType_ == "server" || socketType_ == "Server")
     
    9292            socketType_ = "client";
    9393        }
    94        
    95         return ComponentBase::CONFIGURED_OK; 
    96 } 
     94
     95        return ComponentBase::CONFIGURED_OK;
     96}
    9797
    9898
     
    100100// Called by the ComponentManager to start the component
    101101//////////////////////////////////////////////////////////////////////////
    102 void PacpusUDPSocket::startActivity() 
    103 { 
     102void PacpusUDPSocket::startActivity()
     103{
    104104        if (!(udpSocket_ = new QUdpSocket()))
    105105                qFatal("Failed to init UDP socket!");
    106  
     106
    107107        if (socketType_ == "server")
    108108        {
     
    112112                        qWarning() << "Failed to bind socket for server on port" << port2bind_;
    113113        }
    114            
     114
    115115        connect(udpSocket_, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));
    116        
    117         updSocketOutput_ = getTypedOutput<QString, PacpusUDPSocket>("udpSocketOutput");
     116
     117        udpSocketOutput_ = getTypedOutput<QString, PacpusUDPSocket>("string");
    118118}
    119119
     
    122122// Send datagram QString
    123123//////////////////////////////////////////////////////////////////////////
    124 void PacpusUDPSocket::sendDatagrams(QString frame)
    125 { 
     124void PacpusUDPSocket::sendQString(const QString& frame)
     125{
    126126        int sent=0;
    127        
     127
    128128        if (socketType_ == "client")
    129129        {
    130             if ((sent = udpSocket_->writeDatagram(frame.toLocal8Bit(), address2send_, port2send_)) == -1) 
    131                         qDebug() << "Failed to send the frame: " << address2send_ << port2send_ << frame << endl; 
     130            if ((sent = udpSocket_->writeDatagram(frame.toLocal8Bit(), address2send_, port2send_)) == -1)
     131                        qDebug() << "Failed to send the frame: " << address2send_ << port2send_ << frame << endl;
    132132        }
    133133        else if (socketType_ == "server")
     
    135135            for (int i = 0; i < listClients.size(); i++)
    136136            {
    137                         if ((sent = udpSocket_->writeDatagram(frame.toLocal8Bit(), listClients[i]->getAddress(), listClients[i]->getPort())) == -1) 
    138                                 qDebug() << "Failed to send the frame: " << listClients[i]->getAddress() << listClients[i]->getPort() << frame << endl; 
     137                        if ((sent = udpSocket_->writeDatagram(frame.toLocal8Bit(), listClients[i]->getAddress(), listClients[i]->getPort())) == -1)
     138                                qDebug() << "Failed to send the frame: " << listClients[i]->getAddress() << listClients[i]->getPort() << frame << endl;
    139139            }
    140140        }
    141 } 
     141}
    142142
    143143
     
    145145// Send datagram QByteArray
    146146//////////////////////////////////////////////////////////////////////////
    147 void PacpusUDPSocket::sendDatagrams(QByteArray frame) 
    148 { 
     147void PacpusUDPSocket::sendDatagrams(QByteArray frame)
     148{
    149149        int sent=0;
    150        
     150
    151151        if (socketType_ == "client")
    152152        {
    153             if ((sent = udpSocket_->writeDatagram(frame, address2send_, port2send_)) == -1) 
    154                         qDebug() << "Failed to send the frame: " << address2send_ << port2send_ << frame << endl; 
     153            if ((sent = udpSocket_->writeDatagram(frame, address2send_, port2send_)) == -1)
     154                        qDebug() << "Failed to send the frame: " << address2send_ << port2send_ << frame << endl;
    155155        }
    156156        else if (socketType_ == "server")
     
    158158            for (int i = 0; i < listClients.size(); i++)
    159159            {
    160                         if ((sent = udpSocket_->writeDatagram(frame, listClients[i]->getAddress(), listClients[i]->getPort())) == -1) 
    161                                 qDebug() << "Failed to send the frame: " << listClients[i]->getAddress() << listClients[i]->getPort() << frame << endl; 
     160                        if ((sent = udpSocket_->writeDatagram(frame, listClients[i]->getAddress(), listClients[i]->getPort())) == -1)
     161                                qDebug() << "Failed to send the frame: " << listClients[i]->getAddress() << listClients[i]->getPort() << frame << endl;
    162162            }
    163163        }
    164 } 
    165 
    166 
    167 //////////////////////////////////////////////////////////////////////////
    168 // Called when the socket receive a new datagram 
     164}
     165
     166
     167//////////////////////////////////////////////////////////////////////////
     168// Called when the socket receive a new datagram
    169169//////////////////////////////////////////////////////////////////////////
    170170void PacpusUDPSocket::readPendingDatagrams()
    171171{
    172         while (udpSocket_->hasPendingDatagrams()) 
    173         {
    174                 QByteArray datagram; 
    175                 datagram.resize(udpSocket_->pendingDatagramSize()); 
    176                 QHostAddress sender; 
     172        while (udpSocket_->hasPendingDatagrams())
     173        {
     174                QByteArray datagram;
     175                datagram.resize(udpSocket_->pendingDatagramSize());
     176                QHostAddress sender;
    177177                quint16 senderPort;
    178    
     178
    179179                if(udpSocket_->readDatagram(datagram.data(), datagram.size(),  &sender, &senderPort) != -1)
    180                 {                   
     180                {
    181181                    if (socketType_ == "server")
    182182                    {
    183183                                bool flag = false;
    184                
    185                                 for (int i = 0; i < listClients.size(); i++) 
    186                                 { 
     184
     185                                for (int i = 0; i < listClients.size(); i++)
     186                                {
    187187                                        if (listClients[i]->getAddress() == sender && listClients[i]->getPort() == senderPort)
    188188                                                flag = true;
    189189                                }
    190                        
     190
    191191                                if (flag == false)
    192192                                        listClients << new Client(sender, senderPort);
    193193                        }
    194                        
    195                         if (updSocketOutput_ && updSocketOutput_->hasConnection())
    196                                 updSocketOutput_->send(QString(datagram.data()));
     194
     195                        if (udpSocketOutput_ && udpSocketOutput_->hasConnection())
     196                                udpSocketOutput_->send(QString(datagram.data()));
    197197                }
    198198                else
Note: See TracChangeset for help on using the changeset viewer.