[Orxonox-commit 6349] r11006 - in code/branches/cpp11_v2/src/libraries/network: . packet
landauf at orxonox.net
landauf at orxonox.net
Wed Dec 30 23:34:25 CET 2015
Author: landauf
Date: 2015-12-30 23:34:25 +0100 (Wed, 30 Dec 2015)
New Revision: 11006
Modified:
code/branches/cpp11_v2/src/libraries/network/Connection.cc
code/branches/cpp11_v2/src/libraries/network/Connection.h
code/branches/cpp11_v2/src/libraries/network/NetworkPrereqs.h
code/branches/cpp11_v2/src/libraries/network/packet/Acknowledgement.cc
code/branches/cpp11_v2/src/libraries/network/packet/Chat.cc
code/branches/cpp11_v2/src/libraries/network/packet/ClassID.cc
code/branches/cpp11_v2/src/libraries/network/packet/DeleteObjects.cc
code/branches/cpp11_v2/src/libraries/network/packet/FunctionCalls.cc
code/branches/cpp11_v2/src/libraries/network/packet/FunctionIDs.cc
code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.h
code/branches/cpp11_v2/src/libraries/network/packet/Packet.cc
code/branches/cpp11_v2/src/libraries/network/packet/Packet.h
code/branches/cpp11_v2/src/libraries/network/packet/Welcome.cc
Log:
made some enums in network library strongly typed. for most other enums in network this isn't possible because they are often used like flags (converted to int and compared with binary operators).
packet::Type now uses uint8_t as underlying type which reduces the network traffic (by default the type was int)
Modified: code/branches/cpp11_v2/src/libraries/network/Connection.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/Connection.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/Connection.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -80,7 +80,7 @@
void Connection::disconnectPeer(uint32_t peerID)
{
// this->overallMutex_->lock();
- outgoingEvent outEvent = { peerID, outgoingEventType::disconnectPeer, nullptr, 0 };
+ outgoingEvent outEvent = { peerID, OutgoingEventType::disconnectPeer, nullptr, 0 };
this->outgoingEventsMutex_->lock();
this->outgoingEvents_.push_back(outEvent);
@@ -90,7 +90,7 @@
void Connection::disconnectPeers()
{
- outgoingEvent outEvent = { 0, outgoingEventType::disconnectPeers, nullptr, 0 };
+ outgoingEvent outEvent = { 0, OutgoingEventType::disconnectPeers, nullptr, 0 };
this->outgoingEventsMutex_->lock();
this->outgoingEvents_.push_back(outEvent);
@@ -100,7 +100,7 @@
void Connection::addPacket(ENetPacket* packet, uint32_t peerID, uint8_t channelID)
{
// this->overallMutex_->lock();
- outgoingEvent outEvent = { peerID, outgoingEventType::sendPacket, packet, channelID };
+ outgoingEvent outEvent = { peerID, OutgoingEventType::sendPacket, packet, channelID };
this->outgoingEventsMutex_->lock();
this->outgoingEvents_.push_back(outEvent);
@@ -111,7 +111,7 @@
void Connection::broadcastPacket(ENetPacket* packet, uint8_t channelID)
{
// this->overallMutex_->lock();
- outgoingEvent outEvent = { 0, outgoingEventType::broadcastPacket, packet, channelID };
+ outgoingEvent outEvent = { 0, OutgoingEventType::broadcastPacket, packet, channelID };
this->outgoingEventsMutex_->lock();
this->outgoingEvents_.push_back(outEvent);
@@ -196,7 +196,7 @@
ENetPeer* peer;
switch( event.type )
{
- case outgoingEventType::sendPacket:
+ case OutgoingEventType::sendPacket:
// check whether the peer is still/already in the peer list
if( this->peerMap_.find(event.peerID) != this->peerMap_.end() )
{
@@ -210,7 +210,7 @@
enet_packet_destroy(event.packet);
}
break;
- case outgoingEventType::disconnectPeer:
+ case OutgoingEventType::disconnectPeer:
if( this->peerMap_.find(event.peerID) != this->peerMap_.end() )
{
peer = this->peerMap_[event.peerID];
@@ -222,10 +222,10 @@
assert(event.peerID<this->nextPeerID_);
}
break;
- case outgoingEventType::disconnectPeers:
+ case OutgoingEventType::disconnectPeers:
disconnectPeersInternal();
break;
- case outgoingEventType::broadcastPacket:
+ case OutgoingEventType::broadcastPacket:
enet_host_broadcast( this->host_, event.channelID, event.packet );
break;
default:
@@ -270,13 +270,13 @@
// process event
switch( inEvent.type )
{
- case incomingEventType::peerConnect:
+ case IncomingEventType::peerConnect:
addPeer(inEvent.peerID);
break;
- case incomingEventType::peerDisconnect:
+ case IncomingEventType::peerDisconnect:
removePeer(inEvent.peerID);
break;
- case incomingEventType::receivePacket:
+ case IncomingEventType::receivePacket:
processPacket(inEvent.packet);
break;
default:
@@ -321,7 +321,7 @@
this->peerIDMap_[event.peer] = peerID;
// create new peerEvent and return it
- incomingEvent inEvent = { peerID, incomingEventType::peerConnect, nullptr };
+ incomingEvent inEvent = { peerID, IncomingEventType::peerConnect, nullptr };
return inEvent;
}
@@ -336,7 +336,7 @@
this->peerMap_.erase(this->peerMap_.find(peerID));
// create new peerEvent and return it
- incomingEvent inEvent = { peerID, incomingEventType::peerDisconnect, nullptr };
+ incomingEvent inEvent = { peerID, IncomingEventType::peerDisconnect, nullptr };
return inEvent;
}
@@ -350,7 +350,7 @@
packet::Packet* p = packet::Packet::createPacket(event.packet, peerID);
// create new peerEvent and return it
- incomingEvent inEvent = { peerID, incomingEventType::receivePacket, p };
+ incomingEvent inEvent = { peerID, IncomingEventType::receivePacket, p };
return inEvent;
}
Modified: code/branches/cpp11_v2/src/libraries/network/Connection.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/Connection.h 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/Connection.h 2015-12-30 22:34:25 UTC (rev 11006)
@@ -59,42 +59,34 @@
const unsigned int NETWORK_WAIT_TIMEOUT = 1;
const unsigned int NETWORK_MAX_QUEUE_PROCESS_TIME = 5;
- namespace incomingEventType
+ enum class IncomingEventType
{
- enum Value
- {
- receivePacket = 1, // incoming packet
- peerConnect = 2, // incoming connect request
- peerDisconnect = 3 // incoming disconnect request
- };
-
- }
+ receivePacket = 1, // incoming packet
+ peerConnect = 2, // incoming connect request
+ peerDisconnect = 3 // incoming disconnect request
+ };
- namespace outgoingEventType
+ enum class OutgoingEventType
{
- enum Value
- {
- sendPacket = 1, // outgoing packet
- broadcastPacket = 2, // outgoing broadcast packet
- disconnectPeer = 3, // outgoing disconnect request
- disconnectPeers = 4 // outgoing disconnect request
- };
-
- }
+ sendPacket = 1, // outgoing packet
+ broadcastPacket = 2, // outgoing broadcast packet
+ disconnectPeer = 3, // outgoing disconnect request
+ disconnectPeers = 4 // outgoing disconnect request
+ };
struct _NetworkExport incomingEvent
{
- uint32_t peerID;
- incomingEventType::Value type;
- packet::Packet* packet;
+ uint32_t peerID;
+ IncomingEventType type;
+ packet::Packet* packet;
};
struct _NetworkExport outgoingEvent
{
- uint32_t peerID;
- outgoingEventType::Value type;
- ENetPacket* packet;
- ENetChannelID channelID;
+ uint32_t peerID;
+ OutgoingEventType type;
+ ENetPacket* packet;
+ ENetChannelID channelID;
};
class _NetworkExport Connection
Modified: code/branches/cpp11_v2/src/libraries/network/NetworkPrereqs.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/NetworkPrereqs.h 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/NetworkPrereqs.h 2015-12-30 22:34:25 UTC (rev 11006)
@@ -88,19 +88,16 @@
{
namespace PacketFlag
{
- enum Value
- {
- Reliable = 1,
- Unsequenced = 2,
- NoAllocate = 4
- };
+ static constexpr uint32_t Reliable = 1;
+ static constexpr uint32_t Unsequenced = 2;
+ static constexpr uint32_t NoAllocate = 4;
}
}
namespace StaticInitialization
{
typedef int Type;
- static const Type NETWORK_FUNCTION = 6;
+ static constexpr Type NETWORK_FUNCTION = 6;
}
}
Modified: code/branches/cpp11_v2/src/libraries/network/packet/Acknowledgement.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Acknowledgement.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Acknowledgement.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -37,14 +37,14 @@
#define PACKET_FLAGS_ACK 0
#define _PACKETID 0
-#define _ACKID _PACKETID + sizeof(packet::Type::Value)
+#define _ACKID _PACKETID + sizeof(packet::Type)
Acknowledgement::Acknowledgement( unsigned int id, unsigned int peerID )
: Packet()
{
flags_ = flags_ | PACKET_FLAGS_ACK;
data_=new uint8_t[ getSize() ];
- *(Type::Value *)(data_ + _PACKETID ) = Type::Acknowledgement;
+ *(Type *)(data_ + _PACKETID ) = Type::Acknowledgement;
*(uint32_t *)(data_ + _ACKID ) = id;
peerID_=peerID;
}
Modified: code/branches/cpp11_v2/src/libraries/network/packet/Chat.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Chat.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Chat.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -39,7 +39,7 @@
/* Some lengths */
#define _PACKETID 0
-#define _SOURCEID _PACKETID + sizeof(Type::Value)
+#define _SOURCEID _PACKETID + sizeof(Type)
#define _TARGETID _SOURCEID + sizeof(uint32_t)
#define _MESSAGELENGTH _TARGETID + sizeof(uint32_t)
#define _MESSAGE _MESSAGELENGTH + sizeof(uint32_t)
@@ -56,7 +56,7 @@
/* allocate memory for the data */
data_=new unsigned char[ getSize() ];
- *(Type::Value *)(data_ + _PACKETID ) = Type::Chat;
+ *(Type *)(data_ + _PACKETID ) = Type::Chat;
*(unsigned int *)(data_ + _SOURCEID ) = sourceID;
*(unsigned int *)(data_ + _TARGETID ) = targetID;
*(unsigned int *)(data_ + _MESSAGELENGTH ) = messageLength_;
Modified: code/branches/cpp11_v2/src/libraries/network/packet/ClassID.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/ClassID.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/ClassID.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -69,7 +69,7 @@
this->data_=new uint8_t[ packetSize ];
//set the appropriate packet id
assert(this->data_);
- *(Type::Value *)(this->data_ + _PACKETID ) = Type::ClassID;
+ *(Type *)(this->data_ + _PACKETID ) = Type::ClassID;
uint8_t *temp=data_+sizeof(uint32_t);
// save the number of all classes
Modified: code/branches/cpp11_v2/src/libraries/network/packet/DeleteObjects.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/DeleteObjects.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/DeleteObjects.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -38,7 +38,7 @@
#define PACKET_FLAG_DELETE PacketFlag::Reliable
#define _PACKETID 0
-#define _QUANTITY _PACKETID + sizeof(Type::Value)
+#define _QUANTITY _PACKETID + sizeof(Type)
#define _OBJECTIDS _QUANTITY + sizeof(uint32_t)
DeleteObjects::DeleteObjects()
@@ -62,11 +62,11 @@
if(number==0)
return false;
orxout(verbose, context::packets) << "sending DeleteObjects: ";
- unsigned int size = sizeof(Type::Value) + sizeof(uint32_t)*(number+1);
+ unsigned int size = sizeof(Type) + sizeof(uint32_t)*(number+1);
data_ = new uint8_t[size];
uint8_t *tdata = data_;
- *reinterpret_cast<Type::Value*>(tdata) = Type::DeleteObjects;
- tdata += sizeof(Type::Value);
+ *reinterpret_cast<Type*>(tdata) = Type::DeleteObjects;
+ tdata += sizeof(Type);
*(uint32_t *)tdata = number;
tdata += sizeof(uint32_t);
for(unsigned int i=0; i<number; i++){
Modified: code/branches/cpp11_v2/src/libraries/network/packet/FunctionCalls.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/FunctionCalls.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/FunctionCalls.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -95,7 +95,7 @@
this->minGamestateID_ = host->getCurrentGamestateID();
assert(this->functionCalls_.size());
data_=new uint8_t[ currentSize_ ];
- *(Type::Value *)(data_ + _PACKETID ) = Type::FunctionCalls; // Set the Packet ID
+ *(Type *)(data_ + _PACKETID ) = Type::FunctionCalls; // Set the Packet ID
*(uint32_t*)(data_+sizeof(uint32_t)) = this->functionCalls_.size(); // set nrOfCalls
*(uint32_t*)(data_+2*sizeof(uint32_t)) = this->minGamestateID_; // set minGamestateID_
uint8_t* temp = data_+3*sizeof(uint32_t);
Modified: code/branches/cpp11_v2/src/libraries/network/packet/FunctionIDs.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/FunctionIDs.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/FunctionIDs.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -70,7 +70,7 @@
this->data_=new uint8_t[ packetSize ];
//set the appropriate packet id
assert(this->data_);
- *(Type::Value *)(this->data_ + _PACKETID ) = Type::FunctionIDs;
+ *(Type *)(this->data_ + _PACKETID ) = Type::FunctionIDs;
uint8_t *temp=data_+sizeof(uint32_t);
// save the number of all classes
Modified: code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.h 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.h 2015-12-30 22:34:25 UTC (rev 11006)
@@ -55,11 +55,11 @@
public:
GamestateHeader(){ data_=nullptr; }
GamestateHeader(uint8_t* data)
- { assert(data); data_ = data; *(uint32_t*)data_ = Type::Gamestate; }
+ { assert(data); data_ = data; *(Type*)data_ = Type::Gamestate; }
/*GamestateHeader(uint8_t* data, GamestateHeader* h)
{ assert(data); data_=data; memcpy(data_, h->data_, getSize()); }*/
void setData(uint8_t* data)
- { assert(data); data_ = data; *(uint32_t*)data_ = Type::Gamestate; }
+ { assert(data); data_ = data; *(Type*)data_ = Type::Gamestate; }
static inline uint32_t getSize()
{ return 21; }
Modified: code/branches/cpp11_v2/src/libraries/network/packet/Packet.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Packet.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Packet.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -156,7 +156,7 @@
}
}
#ifndef NDEBUG
- switch( *(Type::Value *)(data_ + _PACKETID) )
+ switch( *(Type *)(data_ + _PACKETID) )
{
case Type::Acknowledgement:
case Type::Chat:
@@ -190,8 +190,8 @@
// if( peerID==static_cast<unsigned int>(-2))
// peerID = NETWORK_PEER_ID_SERVER;
Packet *p = nullptr;
-// orxout(verbose_ultra, context::packets) << "packet type: " << *(Type::Value *)&data[_PACKETID] << endl;
- switch( *(Type::Value *)(data + _PACKETID) )
+// orxout(verbose_ultra, context::packets) << "packet type: " << *(Type *)&data[_PACKETID] << endl;
+ switch( *(Type *)(data + _PACKETID) )
{
case Type::Acknowledgement:
// orxout(verbose_more, context::packets) << "ack" << endl;
Modified: code/branches/cpp11_v2/src/libraries/network/packet/Packet.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Packet.h 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Packet.h 2015-12-30 22:34:25 UTC (rev 11006)
@@ -37,29 +37,23 @@
namespace packet
{
-namespace Direction
+enum class Direction
{
- enum Value
- {
- Incoming,
- Outgoing,
- Bidirectional
- };
-}
-namespace Type
+ Incoming,
+ Outgoing,
+ Bidirectional
+};
+enum class Type : uint8_t
{
- enum Value
- {
- Acknowledgement,
- Chat,
- ClassID,
- DeleteObjects,
- FunctionIDs,
- FunctionCalls,
- Gamestate,
- Welcome
- };
-}
+ Acknowledgement,
+ Chat,
+ ClassID,
+ DeleteObjects,
+ FunctionIDs,
+ FunctionCalls,
+ Gamestate,
+ Welcome
+};
/**
@author Oliver Scheuss <scheusso [at] ee.ethz.ch>
@@ -97,7 +91,7 @@
uint32_t flags_;
unsigned int peerID_;
uint32_t requiredGamestateID_;
- Direction::Value packetDirection_;
+ Direction packetDirection_;
/** Pointer to the data. Be careful when deleting it because it might
point to a location that was allocated by ENet.
See bDataENetAllocated_ */
Modified: code/branches/cpp11_v2/src/libraries/network/packet/Welcome.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Welcome.cc 2015-12-30 21:31:43 UTC (rev 11005)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Welcome.cc 2015-12-30 22:34:25 UTC (rev 11006)
@@ -40,7 +40,7 @@
#define PACKET_FLAGS_CLASSID PacketFlag::Reliable
#define _PACKETID 0
-#define _CLIENTID _PACKETID + sizeof(Type::Value)
+#define _CLIENTID _PACKETID + sizeof(Type)
#define _ENDIANTEST _CLIENTID + sizeof(uint32_t)
Welcome::Welcome( uint32_t clientID )
@@ -50,7 +50,7 @@
assert(getSize());
data_=new uint8_t[ getSize() ];
assert(data_);
- *(packet::Type::Value *)(data_ + _PACKETID ) = packet::Type::Welcome;
+ *(packet::Type *)(data_ + _PACKETID ) = packet::Type::Welcome;
*(uint32_t *)(data_ + _CLIENTID ) = static_cast<uint32_t>(clientID);
*(uint32_t *)(data_ + _ENDIANTEST ) = 0xFEDC4321;
}
@@ -69,7 +69,7 @@
}
unsigned int Welcome::getSize() const{
- return sizeof(packet::Type::Value) + 2*sizeof(uint32_t);
+ return sizeof(packet::Type) + 2*sizeof(uint32_t);
}
bool Welcome::process(orxonox::Host* host){
More information about the Orxonox-commit
mailing list