Subversion Repository Public Repository

Divide-Framework

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "Headers/ASIOImpl.h"
#include <boost/archive/text_iarchive.hpp>
#include "Core/Headers/ParamHandler.h"
#include "Core/Math/Headers/MathHelper.h"
#include "Core/Headers/ApplicationTimer.h"
#include "Managers/Headers/SceneManager.h"

namespace Divide {

void ASIOImpl::handlePacket(WorldPacket& p) {
    switch (p.getOpcode()) {
        case MSG_HEARTBEAT:
            HandleHeartBeatOpCode(p);
            break;
        case SMSG_PONG:
            HandlePongOpCode(p);
            break;
        case SMSG_DISCONNECT:
            HandleDisconnectOpCode(p);
            break;
        case SMSG_GEOMETRY_APPEND:
            HandleGeometryAppendOpCode(p);
            break;
        default:
            ParamHandler::getInstance().setParam(
                "serverResponse",
                "Unknown OpCode: [ 0x" + Util::toString(p.getOpcode()) + " ]");
            break;
    };
}

void ASIOImpl::HandlePongOpCode(WorldPacket& p) {
    F32 time = 0;
    p >> time;
    D32 result = Time::ElapsedMilliseconds() - time;
    ParamHandler::getInstance().setParam(
        "serverResponse", "Server says: Pinged with : " +
                              Util::toString(floor(result + 0.5f)) +
                              " ms latency");
}

void ASIOImpl::HandleDisconnectOpCode(WorldPacket& p) {
    U8 code;
    p >> code;
    Console::printfn(Locale::get("ASIO_CLOSE"));
    if (code == 0) close();
    // else handleError(code);
}

void ASIOImpl::HandleGeometryAppendOpCode(WorldPacket& p) {
    Console::printfn(Locale::get("ASIO_PAK_REC_GEOM_APPEND"));
    U8 size;
    p >> size;
    vectorImpl<FileData> patch;
    for (U8 i = 0; i < size; i++) {
        FileData d;
        I8 type = -1;
        p >> d.ItemName;
        p >> d.ModelName;
        p >> d.orientation.x;
        p >> d.orientation.y;
        p >> d.orientation.z;
        p >> d.position.x;
        p >> d.position.y;
        p >> d.position.z;
        p >> d.scale.x;
        p >> d.scale.y;
        p >> d.scale.z;
        p >> type;
        if (type == 0)
            d.type = GEOMETRY;
        else if (type == 1)
            d.type = VEGETATION;
        else
            d.type = PRIMITIVE;
        p >> d.version;
        patch.push_back(d);
    }
    GET_ACTIVE_SCENE()->addPatch(patch);
}

void ASIOImpl::HandleHeartBeatOpCode(WorldPacket& p) {
    /// nothing. Heartbeats keep us alive \:D/
}
};

Commits for Divide-Framework/trunk/Source Code/Scenes/NetworkScene/Network/ASIOImpl.cpp

Diff revisions: vs.
Revision Author Commited Message
350 Diff Diff IonutCava picture IonutCava Tue 10 Feb, 2015 16:25:39 +0000

[Ionut]
- Simplified some Util-namespace level functions by using STL algorithms where possible
- Formatted the entire codebase using clang-format with the following style: "{BasedOnStyle: Google, IndentWidth: 4}"
- Attempted to make ProfileTimer thread-safe (temp fix until std::chrono works properly in Visual Studio)

343 Diff Diff IonutCava picture IonutCava Thu 15 Jan, 2015 17:30:12 +0000

[Ionut]
- Refactored 2 singletons into static classes (Console and TerrainLoader)
- Changed some C-casts to static_casts
- Updated copyright notices

338 Diff Diff IonutCava picture IonutCava Thu 08 Jan, 2015 14:17:33 +0000

[Ionut]
- Added Metric, Time and Angle namespaces and moved all related functions to the appropriate one.
- Reworked most dynamic_cast calls to static_cast (with static_assert where possible)
- Moved ProfileTimer and ApplicationTimer to Time namespace
- More .h/.cpp/.inl splitting in core files (mostly Math files)

337 Diff Diff IonutCava picture IonutCava Wed 17 Dec, 2014 17:25:16 +0000

[Ionut]
- Replaced all tabs with 4 spaces (some spacing may be off now. no way to check all the files.)
- Moved implementation details for ParamHandler, BoundingBox, BoundingSphere and ProfileTimer to proper .inl and .cpp files. (more to follow)
- Update all forward declared enums with the required storage type (as requested by the C++11 standard)

334 IonutCava picture IonutCava Wed 10 Dec, 2014 17:21:22 +0000

[Ionut]
- Reorganized the Hardware project and renamed to "Platform"
- Reorganized the Server project