Skip to content

Commit

Permalink
Message handler's now accept a packet instead of having to create a p…
Browse files Browse the repository at this point in the history
…acket instance themselves.
  • Loading branch information
apathyboy committed Aug 3, 2011
1 parent 581d85b commit 9b5c9ca
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/anh/network/soe/mock_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class MockServer : public ServerInterface {
MOCK_METHOD0(Update, void());
MOCK_METHOD0(Shutdown, void());
MOCK_METHOD2(SendMessage, void(std::shared_ptr<Session> session, std::shared_ptr<anh::ByteBuffer> message));
MOCK_METHOD2(HandleMessage, void(std::shared_ptr<Session> session, std::shared_ptr<anh::ByteBuffer> message));
MOCK_METHOD1(HandleMessage, void(std::shared_ptr<Packet> packet));
MOCK_METHOD0(event_dispatcher, std::shared_ptr<anh::event_dispatcher::EventDispatcherInterface>());

MOCK_METHOD1(AddSession, bool(std::shared_ptr<Session> session));
Expand Down
4 changes: 2 additions & 2 deletions src/anh/network/soe/server.cc
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ void Server::SendMessage(shared_ptr<Session> session, shared_ptr<ByteBuffer> mes
outgoing_messages_.push(make_shared<Packet>(session, message));
}

void Server::HandleMessage(shared_ptr<Session> session, shared_ptr<ByteBuffer> message) {
message_handler_(session, message);
void Server::HandleMessage(shared_ptr<Packet> packet) {
message_handler_(packet);
}

void Server::OnSocketRecv_(boost::asio::ip::udp::endpoint remote_endpoint, std::shared_ptr<anh::ByteBuffer> message) {
Expand Down
6 changes: 3 additions & 3 deletions src/anh/network/soe/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class Packet;
class Session;
class Socket;

typedef std::function<void (std::shared_ptr<Session>, std::shared_ptr<anh::ByteBuffer>)> MessageHandler;
typedef std::function<void (std::shared_ptr<Packet>)> MessageHandler;

/**
* @brief An SOE Protocol Service.
Expand Down Expand Up @@ -85,7 +85,7 @@ class Server : public std::enable_shared_from_this<Server>, public ServerInterfa

void SendMessage(std::shared_ptr<Session> session, std::shared_ptr<anh::ByteBuffer> message);

void HandleMessage(std::shared_ptr<Session> session, std::shared_ptr<anh::ByteBuffer> message);
void HandleMessage(std::shared_ptr<Packet> packet);

bool AddSession(std::shared_ptr<Session> session);

Expand All @@ -108,7 +108,7 @@ class Server : public std::enable_shared_from_this<Server>, public ServerInterfa
void OnSocketRecv_(boost::asio::ip::udp::endpoint remote_endpoint, std::shared_ptr<anh::ByteBuffer> message);

std::shared_ptr<Socket> socket_;
boost::asio::io_service& io_service_;
boost::asio::io_service& io_service_;

SessionManager session_manager_;
std::shared_ptr<anh::event_dispatcher::EventDispatcherInterface> event_dispatcher_;
Expand Down
3 changes: 2 additions & 1 deletion src/anh/network/soe/server_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ namespace anh {
namespace network {
namespace soe {

class Packet;
class Session;
class SessionManager;
class Socket;
Expand All @@ -36,7 +37,7 @@ class ServerInterface {

virtual std::shared_ptr<anh::ByteBuffer> AllocateBuffer() = 0;

virtual void HandleMessage(std::shared_ptr<Session> session, std::shared_ptr<anh::ByteBuffer> message) = 0;
virtual void HandleMessage(std::shared_ptr<Packet> packet) = 0;

virtual std::shared_ptr<anh::event_dispatcher::EventDispatcherInterface> event_dispatcher() = 0;

Expand Down
4 changes: 3 additions & 1 deletion src/anh/network/soe/session.cc
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,9 @@ void Session::handleChildDataA_(ChildDataA& packet)
AcknowledgeSequence_(packet.sequence);

std::for_each(packet.messages.begin(), packet.messages.end(), [this] (shared_ptr<ByteBuffer> message) {
this->server_->HandleMessage(shared_from_this(), message);
auto packet = make_shared<Packet>(shared_from_this(), message);

this->server_->HandleMessage(packet);
});
}

Expand Down
7 changes: 4 additions & 3 deletions src/swganh/base/swg_message_handler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include "anh/event_dispatcher/basic_event.h"
#include "anh/event_dispatcher/event_dispatcher_interface.h"
#include "anh/network/soe/packet.h"
#include "anh/network/soe/session.h"

using namespace anh;
using namespace anh::event_dispatcher;
Expand All @@ -35,12 +34,14 @@ using namespace swganh::base;
SwgMessageHandler::SwgMessageHandler(shared_ptr<EventDispatcherInterface> event_dispatcher)
: event_dispatcher_(event_dispatcher) {}

void SwgMessageHandler::operator() (shared_ptr<Session> session, shared_ptr<ByteBuffer> message) const {
void SwgMessageHandler::operator() (shared_ptr<Packet> packet) const {
auto message = packet->message();

uint16_t priority = message->peekAt<uint16_t>(message->read_position());
uint32_t message_type = message->peekAt<uint32_t>(message->read_position() + sizeof(priority));

event_dispatcher_->triggerAsync(anh::event_dispatcher::make_shared_event(
message_type,
Packet(session, message)
*packet
));
}
4 changes: 2 additions & 2 deletions src/swganh/base/swg_message_handler.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class EventDispatcherInterface;
namespace anh {
namespace network {
namespace soe {
class Session;
class Packet;
}}} // namespace anh::network::soe


Expand All @@ -45,7 +45,7 @@ class SwgMessageHandler {
public:
explicit SwgMessageHandler(std::shared_ptr<anh::event_dispatcher::EventDispatcherInterface> event_dispatcher);

void operator() (std::shared_ptr<anh::network::soe::Session> session, std::shared_ptr<anh::ByteBuffer> message) const;
void operator() (std::shared_ptr<anh::network::soe::Packet> packet) const;

private:
SwgMessageHandler();
Expand Down

0 comments on commit 9b5c9ca

Please sign in to comment.