Skip to content
This repository was archived by the owner on Mar 12, 2021. It is now read-only.

Commit 5dfa11e

Browse files
moozzykPawel Kadluczka
authored andcommitted
Enabling building and running tests on Linux
1 parent 1ad4369 commit 5dfa11e

21 files changed

Lines changed: 189 additions & 64 deletions

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ ipch/
1717
artifacts/
1818
*.aps
1919
src/signalrclientdll/version.h
20-
/.vs/
20+
/.vs/
21+
build.*

CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
cmake_minimum_required (VERSION 2.8.11)
2+
project (signalrclient)
3+
4+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC -L -lcpprest")
5+
6+
set(CPPREST_INCLUDE_DIR "" CACHE FILEPATH "Path to casablanca include dir")
7+
8+
include_directories (
9+
include
10+
"${CPPREST_INCLUDE_DIR}")
11+
12+
find_library(CPPREST_SO NAMES "cpprest" PATHS ${CPPREST_LIB_DIR} REQUIRED)
13+
14+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
15+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
16+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
17+
18+
add_subdirectory(src/signalrclient)
19+
add_subdirectory(test)

include/signalrclient/hub_proxy.h

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,6 @@ namespace signalr
4545
return invoke_json(method_name, web::json::value().array(), on_progress);
4646
}
4747

48-
template<>
49-
pplx::task<void> invoke<void>(const utility::string_t& method_name, const on_progress_handler& on_progress)
50-
{
51-
return invoke_void(method_name, web::json::value().array(), on_progress);
52-
}
53-
5448
template<typename T>
5549
pplx::task<T> invoke(const utility::string_t& method_name, const web::json::value& arguments,
5650
const on_progress_handler& on_progress = [](const web::json::value&){})
@@ -59,13 +53,6 @@ namespace signalr
5953
return invoke_json(method_name, arguments, on_progress);
6054
}
6155

62-
template<>
63-
pplx::task<void> invoke<void>(const utility::string_t& method_name, const web::json::value& arguments,
64-
const on_progress_handler& on_progress)
65-
{
66-
return invoke_void(method_name, arguments, on_progress);
67-
}
68-
6956
private:
7057
std::shared_ptr<internal_hub_proxy> m_pImpl;
7158

@@ -74,4 +61,17 @@ namespace signalr
7461
SIGNALRCLIENT_API pplx::task<void> __cdecl invoke_void(const utility::string_t& method_name, const web::json::value& arguments,
7562
const on_progress_handler& on_progress);
7663
};
64+
65+
template<>
66+
inline pplx::task<void> hub_proxy::invoke<void>(const utility::string_t& method_name, const on_progress_handler& on_progress)
67+
{
68+
return invoke_void(method_name, web::json::value().array(), on_progress);
69+
}
70+
71+
template<>
72+
inline pplx::task<void> hub_proxy::invoke<void>(const utility::string_t& method_name, const web::json::value& arguments,
73+
const on_progress_handler& on_progress)
74+
{
75+
return invoke_void(method_name, arguments, on_progress);
76+
}
7777
}

src/signalrclient/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
3+
set (SOURCES
4+
callback_manager.cpp
5+
connection.cpp
6+
connection_impl.cpp
7+
default_websocket_client.cpp
8+
http_sender.cpp
9+
hub_connection.cpp
10+
hub_connection_impl.cpp
11+
hub_proxy.cpp
12+
internal_hub_proxy.cpp
13+
logger.cpp
14+
request_sender.cpp
15+
stdafx.cpp
16+
trace_log_writer.cpp
17+
transport.cpp
18+
transport_factory.cpp
19+
url_builder.cpp
20+
web_request.cpp
21+
web_request_factory.cpp
22+
websocket_transport.cpp
23+
)
24+
25+
add_library (signalrclient SHARED ${SOURCES})
26+
27+
target_link_libraries(signalrclient ${CPPREST_SO})

src/signalrclient/callback_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace signalr
2626
void clear(const web::json::value& arguments);
2727

2828
private:
29-
std::atomic<int> m_id = 0;
29+
std::atomic<int> m_id { 0 };
3030
std::unordered_map<utility::string_t, std::function<void(const web::json::value&)>> m_callbacks;
3131
std::mutex m_map_lock;
3232
const web::json::value m_dtor_clear_arguments;

src/signalrclient/connection_impl.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "request_sender.h"
1111
#include "url_builder.h"
1212
#include "trace_log_writer.h"
13+
#include "make_unique.h"
1314

1415
namespace signalr
1516
{
@@ -372,7 +373,7 @@ namespace signalr
372373
auto transport = m_transport;
373374

374375
auto connection_state = get_connection_state();
375-
if (connection_state != connection_state::connected || !transport)
376+
if (connection_state != signalr::connection_state::connected || !transport)
376377
{
377378
return pplx::task_from_exception<void>(std::runtime_error(
378379
std::string{ "cannot send data when the connection is not in the connected state. current connection state: " }
@@ -779,11 +780,11 @@ namespace signalr
779780

780781
void connection_impl::ensure_disconnected(const std::string& error_message)
781782
{
782-
auto connection_state = get_connection_state();
783-
if (connection_state != connection_state::disconnected)
783+
auto state = get_connection_state();
784+
if (state != connection_state::disconnected)
784785
{
785786
throw std::runtime_error(error_message + std::string{"current connection state: "}
786-
.append(utility::conversions::to_utf8string(translate_connection_state(connection_state))));
787+
.append(utility::conversions::to_utf8string(translate_connection_state(state))));
787788
}
788789
}
789790

@@ -851,4 +852,4 @@ namespace signalr
851852
const_cast<signalr::logger &>(logger).log(level, entry);
852853
}
853854
}
854-
}
855+
}

src/signalrclient/event.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#pragma once
55

6+
#include <assert.h>
7+
#include <condition_variable>
68
#include <mutex>
79

810
namespace signalr
@@ -47,7 +49,7 @@ namespace signalr
4749
{
4850
std::chrono::milliseconds period(timeout);
4951
auto status = m_condition.wait_for(lock, period, [this]() { return m_signaled; });
50-
_ASSERTE(status == m_signaled);
52+
assert(status == m_signaled);
5153
// Return 0 if the wait completed as a result of signaling the event. Otherwise, return timeout_infinite
5254
return status ? 0 : event::timeout_infinite;
5355
}
@@ -58,4 +60,4 @@ namespace signalr
5860
return wait(event::timeout_infinite);
5961
}
6062
};
61-
}
63+
}

src/signalrclient/hub_connection_impl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "hub_connection_impl.h"
66
#include "signalrclient/hub_exception.h"
77
#include "trace_log_writer.h"
8+
#include "make_unique.h"
89

910
namespace signalr
1011
{

src/signalrclient/logger.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ namespace signalr
3939
{
4040
switch (trace_level)
4141
{
42-
case trace_level::messages:
42+
case signalr::trace_level::messages:
4343
return _XPLATSTR("message");
44-
case trace_level::state_changes:
44+
case signalr::trace_level::state_changes:
4545
return _XPLATSTR("state change");
46-
case trace_level::events:
46+
case signalr::trace_level::events:
4747
return _XPLATSTR("event");
48-
case trace_level::errors:
48+
case signalr::trace_level::errors:
4949
return _XPLATSTR("error");
50-
case trace_level::info:
50+
case signalr::trace_level::info:
5151
return _XPLATSTR("info");
5252
default:
5353
_ASSERTE(false);

src/signalrclient/make_unique.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
#pragma once
5+
6+
#if defined (__GNUC__)
7+
8+
#include <memory>
9+
10+
namespace std
11+
{
12+
template<typename T, typename... Args>
13+
std::unique_ptr<T> make_unique(Args&&... args)
14+
{
15+
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
16+
}
17+
}
18+
#endif

0 commit comments

Comments
 (0)