git-svn-id: svn://db.shs.com.ru/pip@457 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "pipeer.h"
|
#include "pipeer.h"
|
||||||
#include "piconfig.h"
|
#include "piconfig.h"
|
||||||
|
#include "pidatatransfer.h"
|
||||||
|
|
||||||
#define _PIPEER_MSG_SIZE 4000
|
#define _PIPEER_MSG_SIZE 4000
|
||||||
#define _PIPEER_MSG_TTL 100
|
#define _PIPEER_MSG_TTL 100
|
||||||
@@ -33,6 +34,26 @@
|
|||||||
#define _PIPEER_TRAFFIC_PORT_E 14000
|
#define _PIPEER_TRAFFIC_PORT_E 14000
|
||||||
#define _PIPEER_PING_TIMEOUT 5.0
|
#define _PIPEER_PING_TIMEOUT 5.0
|
||||||
|
|
||||||
|
class PIPeer::PeerData: public PIObject {
|
||||||
|
PIOBJECT_SUBCLASS(PeerData, PIObject)
|
||||||
|
public:
|
||||||
|
PeerData(const PIString & n);
|
||||||
|
~PeerData();
|
||||||
|
EVENT_HANDLER1(void, dtSendRequestIn, PIByteArray &, data) {data.push_front(uchar(2)); sendRequest(name(), data);}
|
||||||
|
EVENT_HANDLER1(void, dtSendRequestOut, PIByteArray &, data) {data.push_front(uchar(3)); sendRequest(name(), data);}
|
||||||
|
EVENT_HANDLER1(void, dtReceiveFinishedIn, bool, ok) {if (ok) received(name(), dt_in.data());}
|
||||||
|
EVENT_HANDLER1(void, dtReceiveFinishedOut, bool, ok) {if (ok) received(name(), dt_out.data());}
|
||||||
|
EVENT_HANDLER(void, dtThread);
|
||||||
|
EVENT2(received, const PIString &, from, const PIByteArray &, data)
|
||||||
|
EVENT2(sendRequest, const PIString &, to, const PIByteArray &, data)
|
||||||
|
bool send(const PIByteArray & d);
|
||||||
|
void receivedPacket(uchar type, const PIByteArray & d);
|
||||||
|
void setDist(int dist);
|
||||||
|
PIByteArray data;
|
||||||
|
PIThread t;
|
||||||
|
PIDataTransfer dt_in, dt_out;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
PIPeer::PeerData::PeerData(const PIString & n): PIObject(n) {
|
PIPeer::PeerData::PeerData(const PIString & n): PIObject(n) {
|
||||||
dt_in.setPacketSize(_PIPEER_MSG_SIZE);
|
dt_in.setPacketSize(_PIPEER_MSG_SIZE);
|
||||||
|
|||||||
@@ -25,32 +25,12 @@
|
|||||||
|
|
||||||
#include "piethernet.h"
|
#include "piethernet.h"
|
||||||
#include "pidiagnostics.h"
|
#include "pidiagnostics.h"
|
||||||
#include "pidatatransfer.h"
|
|
||||||
|
|
||||||
class PIP_EXPORT PIPeer: public PIIODevice
|
class PIP_EXPORT PIPeer: public PIIODevice
|
||||||
{
|
{
|
||||||
PIIODEVICE(PIPeer)
|
PIIODEVICE(PIPeer)
|
||||||
private:
|
private:
|
||||||
|
class PeerData;
|
||||||
class PeerData: public PIObject {
|
|
||||||
PIOBJECT_SUBCLASS(PeerData, PIObject)
|
|
||||||
public:
|
|
||||||
PeerData(const PIString & n);
|
|
||||||
~PeerData();
|
|
||||||
EVENT_HANDLER1(void, dtSendRequestIn, PIByteArray &, data) {data.push_front(uchar(2)); sendRequest(name(), data);}
|
|
||||||
EVENT_HANDLER1(void, dtSendRequestOut, PIByteArray &, data) {data.push_front(uchar(3)); sendRequest(name(), data);}
|
|
||||||
EVENT_HANDLER1(void, dtReceiveFinishedIn, bool, ok) {if (ok) received(name(), dt_in.data());}
|
|
||||||
EVENT_HANDLER1(void, dtReceiveFinishedOut, bool, ok) {if (ok) received(name(), dt_out.data());}
|
|
||||||
EVENT_HANDLER(void, dtThread);
|
|
||||||
EVENT2(received, const PIString &, from, const PIByteArray &, data)
|
|
||||||
EVENT2(sendRequest, const PIString &, to, const PIByteArray &, data)
|
|
||||||
bool send(const PIByteArray & d);
|
|
||||||
void receivedPacket(uchar type, const PIByteArray & d);
|
|
||||||
void setDist(int dist);
|
|
||||||
PIByteArray data;
|
|
||||||
PIThread t;
|
|
||||||
PIDataTransfer dt_in, dt_out;
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit PIPeer(const PIString & name = PIString());
|
explicit PIPeer(const PIString & name = PIString());
|
||||||
|
|||||||
Reference in New Issue
Block a user