Toggle navigation
Toggle navigation
This project
Loading...
Sign in
arcs
/
ARCS2-Components
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jean-Yves Didier
2013-09-03 10:58:53 +0000
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a0b0df03c61b7bf2822615eda44cb9dbfefe90a2
a0b0df03
1 parent
f0c9f838
Correction bug synchronisation serveur.
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
45 additions
and
29 deletions
network/Makefile
network/arcsnetworkcomponent.cpp
network/arcsnetworkcomponent.h
network/arcsnetworkframes.cpp
network/arcsnetworkframes.h
network/arcsnetworkserver.cpp
network/arcsnetworkserver.h
network/Makefile
View file @
a0b0df0
#############################################################################
# Makefile for building: libnetwork.so.1.0.0
# Generated by qmake (2.01a) (Qt 4.8.4) on: T
hu Aug 29 21:40:54
2013
# Generated by qmake (2.01a) (Qt 4.8.4) on: T
ue Sep 3 10:32:45
2013
# Project: network.pro
# Template: lib
# Command: /usr/bin/qmake -
spec /usr/lib/qt/mkspecs/linux-g++ -
o Makefile network.pro
# Command: /usr/bin/qmake -o Makefile network.pro
#############################################################################
####### Compiler, tools and options
...
...
@@ -13,10 +13,10 @@ CXX = g++
DEFINES
=
-DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
CFLAGS
=
-pipe -g -Wall -W -D_REENTRANT -fPIC
$(DEFINES)
CXXFLAGS
=
-pipe -g -Wall -W -D_REENTRANT -fPIC
$(DEFINES)
INCPATH
=
-I/usr/lib/qt/mkspecs/linux-g++ -I. -I/usr/lib/qt/include/QtCore -I/usr/lib/qt/include/QtNetwork -I/usr/lib/qt/include -I../../ARCS2/include -I. -I.
INCPATH
=
-I/usr/lib/qt/mkspecs/linux-g++ -I. -I/usr/lib/qt/include/QtCore -I/usr/lib/qt/include/QtNetwork -I/usr/lib/qt/include -I../../ARCS2/
trunk/
include -I. -I.
LINK
=
g++
LFLAGS
=
-Wl,-rpath,/usr/lib/qt/lib -shared -Wl,-soname,libnetwork.so.1
LIBS
=
$(SUBLIBS)
-L/usr/lib/qt/lib -L/home/
vortex/sources/ARCS2
/lib -larcs -lQtNetwork -L/usr/lib/qt/lib -lQtCore -lpthread
LIBS
=
$(SUBLIBS)
-L/usr/lib/qt/lib -L/home/
didier/sources/ARCS2/trunk
/lib -larcs -lQtNetwork -L/usr/lib/qt/lib -lQtCore -lpthread
AR
=
ar cqs
RANLIB
=
QMAKE
=
/usr/bin/qmake
...
...
@@ -170,7 +170,7 @@ Makefile: network.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/lib/qt/mksp
/usr/lib/qt/mkspecs/features/include_source_dir.prf
\
/usr/lib/qt/lib/libQtNetwork.prl
\
/usr/lib/qt/lib/libQtCore.prl
$(QMAKE)
-
spec /usr/lib/qt/mkspecs/linux-g++ -
o Makefile network.pro
$(QMAKE)
-o Makefile network.pro
/usr/lib/qt/mkspecs/common/unix.conf
:
/usr/lib/qt/mkspecs/common/linux.conf
:
/usr/lib/qt/mkspecs/common/gcc-base.conf
:
...
...
@@ -201,7 +201,7 @@ Makefile: network.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/lib/qt/mksp
/usr/lib/qt/lib/libQtNetwork.prl
:
/usr/lib/qt/lib/libQtCore.prl
:
qmake
:
FORCE
@
$(QMAKE)
-
spec /usr/lib/qt/mkspecs/linux-g++ -
o Makefile network.pro
@
$(QMAKE)
-o Makefile network.pro
dist
:
@
$(CHK_DIR_EXISTS)
.tmp/network1.0.0
||
$(MKDIR)
.tmp/network1.0.0
...
...
network/arcsnetworkcomponent.cpp
View file @
a0b0df0
...
...
@@ -3,6 +3,7 @@
#include "arcsnetworkproxyslot.h"
#include "arcsnetworkproxysignal.h"
#include "arcsnetworkframes.h"
#include <iostream>
#include <QTcpSocket>
...
...
@@ -62,7 +63,7 @@ QStringList ARCSNetworkComponent::getSignals()
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
405
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
405
,
socket
->
errorString
());
return
res
;
}
...
...
@@ -76,12 +77,12 @@ QStringList ARCSNetworkComponent::getSignals()
// response maybe an error. It should then be a good idea to
// write down such response.
//! \todo handle other response (error)
ARCS
::
Network
::
log
(
467
);
ARCS
::
Network
::
log
Error
(
467
);
else
res
=
((
ARCSNetworkInterfaceResponse
*
)
response
->
getData
())
->
getSignals
();
}
else
ARCS
::
Network
::
log
(
468
);
ARCS
::
Network
::
log
Error
(
468
);
socket
->
disconnectFromHost
();
if
(
response
)
...
...
@@ -98,7 +99,7 @@ QStringList ARCSNetworkComponent::getSlots()
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
405
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
405
,
socket
->
errorString
());
return
res
;
}
...
...
@@ -110,12 +111,12 @@ QStringList ARCSNetworkComponent::getSlots()
{
if
(
response
->
getType
()
!=
ARCSNetworkFrame
::
IFACE_RESPONSE
)
//! \todo handle returned error frames
ARCS
::
Network
::
log
(
467
);
ARCS
::
Network
::
log
Error
(
467
);
else
res
=
((
ARCSNetworkInterfaceResponse
*
)
response
->
getData
())
->
getSlots
();
}
else
ARCS
::
Network
::
log
(
468
);
ARCS
::
Network
::
log
Error
(
468
);
socket
->
disconnectFromHost
();
if
(
response
)
...
...
@@ -150,7 +151,7 @@ void ARCSNetworkComponent::requestSlotConnect(ARCSNetworkProxySlot* anps)
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
439
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
439
,
socket
->
errorString
());
return
;
}
...
...
@@ -163,14 +164,14 @@ void ARCSNetworkComponent::requestSlotConnect(ARCSNetworkProxySlot* anps)
{
if
(
response
->
getType
()
!=
ARCSNetworkFrame
::
CONNECT_RESPONSE
)
//! \todo insérer traitement approprié
ARCS
::
Network
::
log
(
416
);
ARCS
::
Network
::
log
Error
(
416
);
else
{
anps
->
setSlotId
(((
ARCSNetworkConnectResponse
*
)
response
->
getData
())
->
getId
());
}
}
else
ARCS
::
Network
::
log
(
417
);
ARCS
::
Network
::
log
Error
(
417
);
socket
->
disconnectFromHost
();
if
(
response
)
...
...
@@ -184,7 +185,7 @@ void ARCSNetworkComponent::requestSignalConnect(ARCSNetworkProxySignal* anps)
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
449
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
449
,
socket
->
errorString
());
return
;
}
...
...
@@ -211,7 +212,7 @@ void ARCSNetworkComponent::requestSignalDisconnect(ARCSNetworkProxySignal* anps)
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
449
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
449
,
socket
->
errorString
());
return
;
}
...
...
@@ -246,7 +247,7 @@ bool ARCSNetworkComponent::genuineConnect (QString sig, ARCSAbstractComponent *d
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
419
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
419
,
socket
->
errorString
());
return
false
;
}
...
...
@@ -273,7 +274,7 @@ bool ARCSNetworkComponent::genuineDisconnect(QString sig, ARCSAbstractComponent*
socket
->
connectToHost
(
hostName
,
port
);
if
(
!
socket
->
waitForConnected
(
ARCSNetworkFrame
::
TimeOut
))
{
ARCS
::
Network
::
log
(
429
,
socket
->
errorString
());
ARCS
::
Network
::
log
Error
(
429
,
socket
->
errorString
());
return
false
;
}
...
...
network/arcsnetworkcomponent.h
View file @
a0b0df0
...
...
@@ -48,7 +48,7 @@ class ARCSNetworkProxySlot;
virtual
bool
genuineInstanciate
()
{
if
(
!
ARCSNetworkServer
::
getInstance
()
->
isListening
())
ARCSNetworkServer
::
getInstance
()
->
start
();
ARCSNetworkServer
::
getInstance
()
->
start
Server
();
return
true
;
}
...
...
network/arcsnetworkframes.cpp
View file @
a0b0df0
...
...
@@ -11,7 +11,7 @@ namespace ARCS {
}
void
ARCS
::
Network
::
log
(
int
errorCode
,
QString
moreInfo
)
void
ARCS
::
Network
::
log
Error
(
int
errorCode
,
QString
moreInfo
)
{
if
(
moreInfo
.
isEmpty
())
ARCSLog
::
getInstance
()
->
logError
(
"Net:"
+
QString
::
number
(
errorCode
),
...
...
@@ -38,6 +38,7 @@ QHash<int,QString> ARCS::Network::initErrors()
res
[
415
]
=
"CONNECT_REQUEST: wrong slot name (%1)"
;
res
[
416
]
=
"CONNECT_REQUEST: received invalid response"
;
res
[
417
]
=
"CONNECT_REQUEST: received null response"
;
res
[
418
]
=
"CONNECT_REQUEST: network error '%1'"
;
res
[
419
]
=
"CONNECT_REQUEST: network error '%1'"
;
res
[
424
]
=
"DISCONNECT_REQUEST: wrong source name (%1)"
;
...
...
network/arcsnetworkframes.h
View file @
a0b0df0
...
...
@@ -9,7 +9,7 @@
namespace
ARCS
{
namespace
Network
{
extern
const
QHash
<
int
,
QString
>
errors
;
void
log
(
int
errorCode
,
QString
moreInfo
=
QString
::
null
);
void
log
Error
(
int
errorCode
,
QString
moreInfo
=
QString
::
null
);
}
}
...
...
@@ -250,7 +250,7 @@ class ARCSNetworkAckResponse : public ARCSNetworkData
void
setId
(
int
i
)
{
id
=
i
;}
virtual
void
serialize
(
QDataStream
&
stream
)
{
stream
<<
id
;}
virtual
void
deserialize
(
QDataStream
&
stream
)
{
stream
>>
id
;
}
virtual
void
deserialize
(
QDataStream
&
stream
)
{
stream
>>
id
;
}
private
:
...
...
network/arcsnetworkserver.cpp
View file @
a0b0df0
...
...
@@ -106,7 +106,7 @@ void ARCSNetworkServerThread::handleConnectRequest(ARCSNetworkConnectRequest* an
// 3 : ack : c'est fini !
ARCSNetworkFrame
frame
(
ARCSNetworkFrame
::
ACK_RESPONSE
);
((
ARCSNetworkAckResponse
*
)
frame
.
getData
())
->
setId
(
id
);
((
ARCSNetworkAckResponse
*
)
frame
.
getData
())
->
setId
(
id
);
// utilit du id ?
frame
.
writeFrame
(
socket
);
/*if ((QString*)ARCSNetworkServer::getInstance()->getSignals()!=ancr->getSignal())
{
...
...
@@ -173,7 +173,6 @@ void ARCSNetworkServerThread::handleSignalRequest(ARCSNetworkSignalRequest* ansr
{
//std::cout << "[Server] Recieved a signal connect on "<<
ARCSNetworkServer
::
getInstance
()
->
createSlotStub
(
ansr
->
getSignal
(),
ansr
->
getId
(),
ansr
->
getPort
(),
...
...
@@ -182,11 +181,12 @@ void ARCSNetworkServerThread::handleSignalRequest(ARCSNetworkSignalRequest* ansr
((
ARCSNetworkConnectResponse
*
)
frame
.
getData
())
->
setId
(
0
);
frame
.
writeFrame
(
socket
);
/** pourrissage en rgle de code.
if ((ARCSNetworkServer::getInstance()->getPort())!=ansr->getPort())
{
std::cerr <<"Erreur 441: SIGNAL _REQUEST error : port number is false"<< std::endl;
}
/*
if ((ARCSNetworkServer::getInstance()->getSignals())!=ansr->getSignal())
if ((ARCSNetworkServer::getInstance()->getSignals())!=ansr->getSignal())
{
std ::cerr <<"Erreur 444 :SIGNAL_REQUEST error : signal name not found"<< std::endl;
}*/
...
...
@@ -199,7 +199,7 @@ void ARCSNetworkServerThread::handleCallRequest(ARCSNetworkCallRequest* ancr, QT
//std::cout << "[Server] Recieved a call request." << std::endl;
ARCSNetworkServer
::
getInstance
()
->
call
(
ancr
->
getId
(),
ancr
->
getParams
());
ARCSNetworkFrame
frame
(
ARCSNetworkFrame
::
ACK_RESPONSE
);
((
ARCSNetworkAckResponse
*
)
frame
.
getData
())
->
setId
(
0
);
((
ARCSNetworkAckResponse
*
)
frame
.
getData
())
->
setId
(
0
);
// utilit du id ?
//std::cout<< "Acquittement: paquets reus !" << std::endl;
frame
.
writeFrame
(
socket
);
}
...
...
@@ -250,6 +250,7 @@ void ARCSNetworkServer::run()
port
=
0
;
}
}
portDetermination
.
wakeAll
();
exec
();
}
...
...
@@ -274,6 +275,15 @@ void ARCSNetworkServer::getInterface(QStringList & slotList, QStringList & signa
}
void
ARCSNetworkServer
::
startServer
()
{
start
();
mutex
.
lock
();
portDetermination
.
wait
(
&
mutex
);
mutex
.
unlock
();
}
void
ARCSNetworkServer
::
call
(
int
id
,
QStringList
params
)
{
...
...
network/arcsnetworkserver.h
View file @
a0b0df0
...
...
@@ -5,6 +5,8 @@
#include <QObject>
#include <arcs/arcsabstractcomponent.h>
#include <QThread>
#include <QMutex>
#include <QWaitCondition>
#include <iostream>
...
...
@@ -89,7 +91,7 @@ public:
static
ARCSNetworkServer
*
getInstance
();
//!< Singleton design pattern: mainly for lazy instanciation
int
getPort
()
{
return
port
;
}
//!< Returns the port which is listened by the server
void
setInterface
(
QString
name
);
//!< Sets the interface, i.e. the name of the component to which we want to apply distributed properties.
void
setPort
(
int
i
)
{
port
=
(
quint16
)
i
;
start
();
}
//!< Sets the port, the server will listen to.
void
setPort
(
int
i
)
{
port
=
(
quint16
)
i
;
start
Server
();
}
//!< Sets the port, the server will listen to.
bool
isListening
()
{
return
server
?
server
->
isListening
()
:
false
;
}
//!< Tells wether the server is active or not.
/*! Construct and return a proxy for a given signal
...
...
@@ -126,6 +128,7 @@ public:
void
destroySlotStub
(
QString
s
);
void
getInterface
(
QStringList
&
slotList
,
QStringList
&
signalList
);
void
startServer
();
// importé de ARCSNetworkStub
...
...
@@ -167,7 +170,8 @@ private:
QHash
<
QString
,
ARCSNetworkProxySlot
*>
proxySlots
;
QMutex
mutex
;
QWaitCondition
portDetermination
;
};
...
...
Please
register
or
login
to post a comment