diff --git a/.gitignore b/.gitignore
index 09c9e31..7144853 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,8 @@
**.vcxproj
**.vcxproj.filters
**.vcxproj.user
-**.csproj
\ No newline at end of file
+**.csproj
+
+# Generated build files
+Makefile
+**.make
\ No newline at end of file
diff --git a/NetworkLibrary/src/metrics/bandwidth_metric.cpp b/NetworkLibrary/src/metrics/bandwidth_metric.cpp
new file mode 100644
index 0000000..ce94613
--- /dev/null
+++ b/NetworkLibrary/src/metrics/bandwidth_metric.cpp
@@ -0,0 +1,79 @@
+#include "bandwidth_metric.h"
+
+#include "logger.h"
+
+namespace NetLib
+{
+ namespace Metrics
+ {
+ BandwidthMetric::BandwidthMetric()
+ : _updateRate( 1.0f )
+ , _timeUntilNextUpdate( 1.0f )
+ , _inProgressValue( 0 )
+ , _currentValue( 0 )
+ , _maxValue( 0 )
+ {
+ }
+
+ uint32 BandwidthMetric::GetValue( const std::string& value_type ) const
+ {
+ uint32 result = 0;
+
+ if ( value_type == "MAX" )
+ {
+ result = _maxValue;
+ }
+ else if ( value_type == "CURRENT" )
+ {
+ result = _currentValue;
+ }
+ else
+ {
+ LOG_WARNING( "Unknown value type '%s' for BandwidthMetric", value_type.c_str() );
+ }
+
+ return result;
+ }
+
+ void BandwidthMetric::SetUpdateRate( float32 update_rate )
+ {
+ _updateRate = update_rate;
+ _timeUntilNextUpdate = _updateRate;
+ }
+
+ void BandwidthMetric::Update( float32 elapsed_time )
+ {
+ if ( _timeUntilNextUpdate <= elapsed_time )
+ {
+ // Update current
+ _currentValue = _inProgressValue;
+ _inProgressValue = 0;
+
+ // Update max
+ if ( _currentValue > _maxValue )
+ {
+ _maxValue = _currentValue;
+ }
+
+ _timeUntilNextUpdate = _updateRate;
+ }
+ else
+ {
+ _timeUntilNextUpdate -= elapsed_time;
+ }
+ }
+
+ void BandwidthMetric::AddValueSample( uint32 value, const std::string& sample_type )
+ {
+ _inProgressValue += value;
+ }
+
+ void BandwidthMetric::Reset()
+ {
+ _inProgressValue = 0;
+ _currentValue = 0;
+ _maxValue = 0;
+ _timeUntilNextUpdate = _updateRate;
+ }
+ } // namespace Metrics
+} // namespace NetLib
diff --git a/NetworkLibrary/src/metrics/bandwidth_metric.h b/NetworkLibrary/src/metrics/bandwidth_metric.h
new file mode 100644
index 0000000..c9b732c
--- /dev/null
+++ b/NetworkLibrary/src/metrics/bandwidth_metric.h
@@ -0,0 +1,32 @@
+#pragma once
+#include "metrics/i_metric.h"
+
+namespace NetLib
+{
+ namespace Metrics
+ {
+ ///
+ /// Base class for bandwidth metrics (upload and download).
+ /// Tracks current bandwidth usage and maximum bandwidth over time.
+ ///
+ class BandwidthMetric : public IMetric
+ {
+ public:
+ BandwidthMetric();
+
+ uint32 GetValue( const std::string& value_type ) const override;
+ void SetUpdateRate( float32 update_rate ) override;
+ void Update( float32 elapsed_time ) override;
+ void AddValueSample( uint32 value, const std::string& sample_type = "NONE" ) override;
+ void Reset() override;
+
+ protected:
+ float32 _timeUntilNextUpdate;
+ float32 _updateRate;
+
+ uint32 _inProgressValue;
+ uint32 _currentValue;
+ uint32 _maxValue;
+ };
+ }
+}
diff --git a/NetworkLibrary/src/metrics/download_bandwidth_metric.cpp b/NetworkLibrary/src/metrics/download_bandwidth_metric.cpp
index c581345..e3ee2c5 100644
--- a/NetworkLibrary/src/metrics/download_bandwidth_metric.cpp
+++ b/NetworkLibrary/src/metrics/download_bandwidth_metric.cpp
@@ -1,86 +1,14 @@
#include "download_bandwidth_metric.h"
-#include "logger.h"
-
#include "metrics/metric_names.h"
namespace NetLib
{
namespace Metrics
{
- DownloadBandwidthMetric::DownloadBandwidthMetric()
- : _updateRate( 1.0f )
- , _timeUntilNextUpdate( 1.0f )
- , _inProgressValue( 0 )
- , _currentValue( 0 )
- , _maxValue( 0 )
- {
- }
-
void DownloadBandwidthMetric::GetName( std::string& out_name_buffer ) const
{
out_name_buffer.assign( DOWNLOAD_BANDWIDTH_METRIC );
}
-
- uint32 DownloadBandwidthMetric::GetValue( const std::string& value_type ) const
- {
- uint32 result = 0;
-
- if ( value_type == "MAX" )
- {
- result = _maxValue;
- }
- else if ( value_type == "CURRENT" )
- {
- result = _currentValue;
- }
- else
- {
- LOG_WARNING( "Unknown value type '%s' for UploadBandwidthMetric", value_type.c_str() );
- }
-
- return result;
- }
-
- void DownloadBandwidthMetric::SetUpdateRate( float32 update_rate )
- {
- _updateRate = update_rate;
- _timeUntilNextUpdate = _updateRate;
- }
-
- void DownloadBandwidthMetric::Update( float32 elapsed_time )
- {
- if ( _timeUntilNextUpdate <= elapsed_time )
- {
- // Update current
- _currentValue = _inProgressValue;
- _inProgressValue = 0;
-
- // Update max
- if ( _currentValue > _maxValue )
- {
- _maxValue = _currentValue;
- }
-
- _timeUntilNextUpdate = _updateRate;
- }
- else
- {
- _timeUntilNextUpdate -= elapsed_time;
- }
- }
-
- void DownloadBandwidthMetric::AddValueSample( uint32 value, const std::string& sample_type )
- {
- _inProgressValue += value;
- }
-
- void DownloadBandwidthMetric::Reset()
- {
- _inProgressValue = 0;
- _currentValue = 0;
- _maxValue = 0;
- _timeUntilNextUpdate = _updateRate;
- }
} // namespace Metrics
} // namespace NetLib
diff --git a/NetworkLibrary/src/metrics/download_bandwidth_metric.h b/NetworkLibrary/src/metrics/download_bandwidth_metric.h
index 24820ca..0049f0f 100644
--- a/NetworkLibrary/src/metrics/download_bandwidth_metric.h
+++ b/NetworkLibrary/src/metrics/download_bandwidth_metric.h
@@ -1,29 +1,14 @@
#pragma once
-#include "metrics/i_metric.h"
+#include "metrics/bandwidth_metric.h"
namespace NetLib
{
namespace Metrics
{
- class DownloadBandwidthMetric : public IMetric
+ class DownloadBandwidthMetric : public BandwidthMetric
{
public:
- DownloadBandwidthMetric();
-
void GetName( std::string& out_name_buffer ) const override;
- uint32 GetValue( const std::string& value_type ) const override;
- void SetUpdateRate( float32 update_rate ) override;
- void Update( float32 elapsed_time ) override;
- void AddValueSample( uint32 value, const std::string& sample_type = "NONE" ) override;
- void Reset() override;
-
- private:
- float32 _timeUntilNextUpdate;
- float32 _updateRate;
-
- uint32 _inProgressValue;
- uint32 _currentValue;
- uint32 _maxValue;
};
}
}
diff --git a/NetworkLibrary/src/metrics/upload_bandwidth_metric.cpp b/NetworkLibrary/src/metrics/upload_bandwidth_metric.cpp
index 65b9289..a4cb1e0 100644
--- a/NetworkLibrary/src/metrics/upload_bandwidth_metric.cpp
+++ b/NetworkLibrary/src/metrics/upload_bandwidth_metric.cpp
@@ -1,86 +1,14 @@
#include "upload_bandwidth_metric.h"
-#include "logger.h"
-
#include "metrics/metric_names.h"
namespace NetLib
{
namespace Metrics
{
- UploadBandwidthMetric::UploadBandwidthMetric()
- : _updateRate( 1.0f )
- , _timeUntilNextUpdate( 1.0f )
- , _inProgressValue( 0 )
- , _currentValue( 0 )
- , _maxValue( 0 )
- {
- }
-
void UploadBandwidthMetric::GetName( std::string& out_name_buffer ) const
{
out_name_buffer.assign( UPLOAD_BANDWIDTH_METRIC );
}
-
- uint32 UploadBandwidthMetric::GetValue( const std::string& value_type ) const
- {
- uint32 result = 0;
-
- if ( value_type == "MAX" )
- {
- result = _maxValue;
- }
- else if ( value_type == "CURRENT" )
- {
- result = _currentValue;
- }
- else
- {
- LOG_WARNING( "Unknown value type '%s' for UploadBandwidthMetric", value_type.c_str() );
- }
-
- return result;
- }
-
- void UploadBandwidthMetric::SetUpdateRate( float32 update_rate )
- {
- _updateRate = update_rate;
- _timeUntilNextUpdate = _updateRate;
- }
-
- void UploadBandwidthMetric::Update( float32 elapsed_time )
- {
- if ( _timeUntilNextUpdate <= elapsed_time )
- {
- // Update current
- _currentValue = _inProgressValue;
- _inProgressValue = 0;
-
- // Update max
- if ( _currentValue > _maxValue )
- {
- _maxValue = _currentValue;
- }
-
- _timeUntilNextUpdate = _updateRate;
- }
- else
- {
- _timeUntilNextUpdate -= elapsed_time;
- }
- }
-
- void UploadBandwidthMetric::AddValueSample( uint32 value, const std::string& sample_type )
- {
- _inProgressValue += value;
- }
-
- void UploadBandwidthMetric::Reset()
- {
- _inProgressValue = 0;
- _currentValue = 0;
- _maxValue = 0;
- _timeUntilNextUpdate = _updateRate;
- }
} // namespace Metrics
} // namespace NetLib
diff --git a/NetworkLibrary/src/metrics/upload_bandwidth_metric.h b/NetworkLibrary/src/metrics/upload_bandwidth_metric.h
index c0e9d90..df3a35d 100644
--- a/NetworkLibrary/src/metrics/upload_bandwidth_metric.h
+++ b/NetworkLibrary/src/metrics/upload_bandwidth_metric.h
@@ -1,29 +1,14 @@
#pragma once
-#include "metrics/i_metric.h"
+#include "metrics/bandwidth_metric.h"
namespace NetLib
{
namespace Metrics
{
- class UploadBandwidthMetric : public IMetric
+ class UploadBandwidthMetric : public BandwidthMetric
{
public:
- UploadBandwidthMetric();
-
void GetName( std::string& out_name_buffer ) const override;
- uint32 GetValue( const std::string& value_type ) const override;
- void SetUpdateRate( float32 update_rate ) override;
- void Update( float32 elapsed_time ) override;
- void AddValueSample( uint32 value, const std::string& sample_type = "NONE" ) override;
- void Reset() override;
-
- private:
- float32 _timeUntilNextUpdate;
- float32 _updateRate;
-
- uint32 _inProgressValue;
- uint32 _currentValue;
- uint32 _maxValue;
};
}
}
diff --git a/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.cpp b/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.cpp
index 3a21f64..5e06e38 100644
--- a/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.cpp
+++ b/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.cpp
@@ -159,18 +159,7 @@ namespace NetLib
return result;
}
- bool ReliableOrderedChannel::AddMessageToSend( std::unique_ptr< Message > message )
- {
- assert( message != nullptr );
-
- if ( !IsMessageSuitable( message->GetHeader() ) )
- {
- return false;
- }
- _unsentMessages.push_back( std::move( message ) );
- return true;
- }
bool ReliableOrderedChannel::ArePendingMessagesToSend() const
{
@@ -285,26 +274,7 @@ namespace NetLib
return true;
}
- bool ReliableOrderedChannel::ArePendingReadyToProcessMessages() const
- {
- return !_readyToProcessMessages.empty();
- }
- const Message* ReliableOrderedChannel::GetReadyToProcessMessage()
- {
- if ( !ArePendingReadyToProcessMessages() )
- {
- return nullptr;
- }
-
- std::unique_ptr< Message > message( std::move( _readyToProcessMessages.front() ) );
- _readyToProcessMessages.pop();
-
- Message* messageToReturn = message.get();
- _processedMessages.push( std::move( message ) );
-
- return messageToReturn;
- }
bool ReliableOrderedChannel::AreUnackedMessagesToResend() const
{
diff --git a/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.h b/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.h
index 65b1577..1576cd9 100644
--- a/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.h
+++ b/NetworkLibrary/src/transmission_channels/reliable_ordered_channel.h
@@ -39,14 +39,11 @@ namespace NetLib
bool CreateAndSendPacket( Socket& socket, const Address& address,
Metrics::MetricsHandler* metrics_handler ) override;
- bool AddMessageToSend( std::unique_ptr< Message > message ) override;
bool ArePendingMessagesToSend() const override;
std::unique_ptr< Message > GetMessageToSend( Metrics::MetricsHandler* metrics_handler );
bool AddReceivedMessage( std::unique_ptr< Message > message,
Metrics::MetricsHandler* metrics_handler ) override;
- bool ArePendingReadyToProcessMessages() const override;
- const Message* GetReadyToProcessMessage() override;
void ProcessACKs( uint32 acks, uint16 lastAckedMessageSequenceNumber,
Metrics::MetricsHandler* metrics_handler ) override;
@@ -79,7 +76,7 @@ namespace NetLib
///
/// The header of the message to check.
/// True if it is suitable, False otherwise.
- bool IsMessageSuitable( const MessageHeader& header ) const;
+ bool IsMessageSuitable( const MessageHeader& header ) const override;
//////////
// ACKS
diff --git a/NetworkLibrary/src/transmission_channels/transmission_channel.cpp b/NetworkLibrary/src/transmission_channels/transmission_channel.cpp
index ad81963..0212ca7 100644
--- a/NetworkLibrary/src/transmission_channels/transmission_channel.cpp
+++ b/NetworkLibrary/src/transmission_channels/transmission_channel.cpp
@@ -2,6 +2,7 @@
#include
+#include "communication/message.h"
#include "communication/message_factory.h"
namespace NetLib
@@ -39,6 +40,40 @@ namespace NetLib
return *this;
}
+ bool TransmissionChannel::AddMessageToSend( std::unique_ptr< Message > message )
+ {
+ assert( message != nullptr );
+
+ if ( !IsMessageSuitable( message->GetHeader() ) )
+ {
+ return false;
+ }
+
+ _unsentMessages.push_back( std::move( message ) );
+ return true;
+ }
+
+ bool TransmissionChannel::ArePendingReadyToProcessMessages() const
+ {
+ return !_readyToProcessMessages.empty();
+ }
+
+ const Message* TransmissionChannel::GetReadyToProcessMessage()
+ {
+ if ( !ArePendingReadyToProcessMessages() )
+ {
+ return nullptr;
+ }
+
+ std::unique_ptr< Message > message( std::move( _readyToProcessMessages.front() ) );
+ _readyToProcessMessages.pop();
+
+ Message* messageToReturn = message.get();
+ _processedMessages.push( std::move( message ) );
+
+ return messageToReturn;
+ }
+
void TransmissionChannel::FreeProcessedMessages()
{
MessageFactory& messageFactory = MessageFactory::GetInstance();
diff --git a/NetworkLibrary/src/transmission_channels/transmission_channel.h b/NetworkLibrary/src/transmission_channels/transmission_channel.h
index 7775a12..7e5bab7 100644
--- a/NetworkLibrary/src/transmission_channels/transmission_channel.h
+++ b/NetworkLibrary/src/transmission_channels/transmission_channel.h
@@ -8,6 +8,7 @@
namespace NetLib
{
class Message;
+ struct MessageHeader;
class MessageFactory;
class Socket;
class Address;
@@ -53,7 +54,7 @@ namespace NetLib
///
/// The message pending to be sent.
/// True if the message was stored correclt, False otherwise.
- virtual bool AddMessageToSend( std::unique_ptr< Message > message ) = 0;
+ bool AddMessageToSend( std::unique_ptr< Message > message );
///
/// Checks if there are any messages pending to be sent through the network.
@@ -69,8 +70,8 @@ namespace NetLib
/// True if the message was stored correclt, False otherwise.
virtual bool AddReceivedMessage( std::unique_ptr< Message > message,
Metrics::MetricsHandler* metrics_handler ) = 0;
- virtual bool ArePendingReadyToProcessMessages() const = 0;
- virtual const Message* GetReadyToProcessMessage() = 0;
+ bool ArePendingReadyToProcessMessages() const;
+ const Message* GetReadyToProcessMessage();
void FreeProcessedMessages();
virtual void ProcessACKs( uint32 acks, uint16 lastAckedMessageSequenceNumber,
@@ -94,6 +95,14 @@ namespace NetLib
uint16 GetNextMessageSequenceNumber() const { return _nextMessageSequenceNumber; }
void IncreaseMessageSequenceNumber() { ++_nextMessageSequenceNumber; };
+ ///
+ /// Checks if a message is suitable for this transmission channel type.
+ /// Must be implemented by derived classes to validate message properties.
+ ///
+ /// The message header to validate.
+ /// True if the message is suitable for this channel, False otherwise.
+ virtual bool IsMessageSuitable( const MessageHeader& header ) const = 0;
+
private:
TransmissionChannelType _type;
uint16 _nextMessageSequenceNumber;
diff --git a/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.cpp b/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.cpp
index 981b6b6..7ac39d4 100644
--- a/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.cpp
+++ b/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.cpp
@@ -104,18 +104,7 @@ namespace NetLib
return result;
}
- bool UnreliableOrderedTransmissionChannel::AddMessageToSend( std::unique_ptr< Message > message )
- {
- assert( message != nullptr );
-
- if ( !IsMessageSuitable( message->GetHeader() ) )
- {
- return false;
- }
- _unsentMessages.push_back( std::move( message ) );
- return true;
- }
bool UnreliableOrderedTransmissionChannel::ArePendingMessagesToSend() const
{
@@ -175,26 +164,7 @@ namespace NetLib
return true;
}
- bool UnreliableOrderedTransmissionChannel::ArePendingReadyToProcessMessages() const
- {
- return ( !_readyToProcessMessages.empty() );
- }
- const Message* UnreliableOrderedTransmissionChannel::GetReadyToProcessMessage()
- {
- if ( !ArePendingReadyToProcessMessages() )
- {
- return nullptr;
- }
-
- std::unique_ptr< Message > message( std::move( _readyToProcessMessages.front() ) );
- _readyToProcessMessages.pop();
-
- Message* messageToReturn = message.get();
- _processedMessages.push( std::move( message ) );
-
- return messageToReturn;
- }
void UnreliableOrderedTransmissionChannel::ProcessACKs( uint32 acks, uint16 lastAckedMessageSequenceNumber,
Metrics::MetricsHandler* metrics_handler )
diff --git a/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.h b/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.h
index 6d81b05..21a6145 100644
--- a/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.h
+++ b/NetworkLibrary/src/transmission_channels/unreliable_ordered_transmission_channel.h
@@ -18,15 +18,12 @@ namespace NetLib
bool CreateAndSendPacket( Socket& socket, const Address& address,
Metrics::MetricsHandler* metrics_handler ) override;
- bool AddMessageToSend( std::unique_ptr< Message > message ) override;
bool ArePendingMessagesToSend() const override;
std::unique_ptr< Message > GetMessageToSend( Metrics::MetricsHandler* metrics_handler );
uint32 GetSizeOfNextUnsentMessage() const;
bool AddReceivedMessage( std::unique_ptr< Message > message,
Metrics::MetricsHandler* metrics_handler ) override;
- bool ArePendingReadyToProcessMessages() const override;
- const Message* GetReadyToProcessMessage() override;
void ProcessACKs( uint32 acks, uint16 lastAckedMessageSequenceNumber,
Metrics::MetricsHandler* metrics_handler ) override;
@@ -46,6 +43,6 @@ namespace NetLib
///
/// The header of the message to check.
/// True if it is suitable, False otherwise.
- bool IsMessageSuitable( const MessageHeader& header ) const;
+ bool IsMessageSuitable( const MessageHeader& header ) const override;
};
} // namespace NetLib
diff --git a/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.cpp b/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.cpp
index c8bbd65..a2017e3 100644
--- a/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.cpp
+++ b/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.cpp
@@ -96,18 +96,7 @@ namespace NetLib
return result;
}
- bool UnreliableUnorderedTransmissionChannel::AddMessageToSend( std::unique_ptr< Message > message )
- {
- assert( message != nullptr );
-
- if ( !IsMessageSuitable( message->GetHeader() ) )
- {
- return false;
- }
- _unsentMessages.push_back( std::move( message ) );
- return true;
- }
bool UnreliableUnorderedTransmissionChannel::ArePendingMessagesToSend() const
{
@@ -156,26 +145,7 @@ namespace NetLib
return true;
}
- bool UnreliableUnorderedTransmissionChannel::ArePendingReadyToProcessMessages() const
- {
- return ( !_readyToProcessMessages.empty() );
- }
- const Message* UnreliableUnorderedTransmissionChannel::GetReadyToProcessMessage()
- {
- if ( !ArePendingReadyToProcessMessages() )
- {
- return nullptr;
- }
-
- std::unique_ptr< Message > message( std::move( _readyToProcessMessages.front() ) );
- _readyToProcessMessages.pop();
-
- Message* messageToReturn = message.get();
- _processedMessages.push( std::move( message ) );
-
- return messageToReturn;
- }
void UnreliableUnorderedTransmissionChannel::ProcessACKs( uint32 acks, uint16 lastAckedMessageSequenceNumber,
Metrics::MetricsHandler* metrics_handler )
diff --git a/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.h b/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.h
index f15ca20..db881de 100644
--- a/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.h
+++ b/NetworkLibrary/src/transmission_channels/unreliable_unordered_transmission_channel.h
@@ -23,15 +23,12 @@ namespace NetLib
bool CreateAndSendPacket( Socket& socket, const Address& address,
Metrics::MetricsHandler* metrics_handler ) override;
- bool AddMessageToSend( std::unique_ptr< Message > message ) override;
bool ArePendingMessagesToSend() const override;
std::unique_ptr< Message > GetMessageToSend( Metrics::MetricsHandler* metrics_handler );
uint32 GetSizeOfNextUnsentMessage() const;
bool AddReceivedMessage( std::unique_ptr< Message > message,
Metrics::MetricsHandler* metrics_handler ) override;
- bool ArePendingReadyToProcessMessages() const override;
- const Message* GetReadyToProcessMessage() override;
void ProcessACKs( uint32 acks, uint16 lastAckedMessageSequenceNumber,
Metrics::MetricsHandler* metrics_handler ) override;
@@ -45,6 +42,6 @@ namespace NetLib
///
/// The header of the message to check.
/// True if it is suitable, False otherwise.
- bool IsMessageSuitable( const MessageHeader& header ) const;
+ bool IsMessageSuitable( const MessageHeader& header ) const override;
};
} // namespace NetLib
diff --git a/_codeql_detected_source_root b/_codeql_detected_source_root
new file mode 120000
index 0000000..945c9b4
--- /dev/null
+++ b/_codeql_detected_source_root
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/premake5.lua b/premake5.lua
index f74f997..f92094b 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -9,8 +9,8 @@ PROJECT_DATA =
COMMON =
{
NAME = "Common",
- PATH = ROOT_PATH "common/",
- PREMAKE_PATH = ROOT_PATH "common/common_premake5.lua"
+ PATH = ROOT_PATH "Common/",
+ PREMAKE_PATH = ROOT_PATH "Common/common_premake5.lua"
},
ENGINE =
{