Add LICENS, try to use JSON::MaybeXS wrapper for chance of better performance + open code

This commit is contained in:
Marko Oldenburg
2019-06-18 13:45:18 +02:00
parent e1b2f35bd1
commit 8d9065bf99
3 changed files with 481 additions and 4 deletions

View File

@@ -64,7 +64,7 @@ use strict;
use warnings;
use FHEM::Meta;
my $modulversion = '4.4.1';
my $modulversion = '4.4.2';
my $flowsetversion = '4.4.1';
sub AMADCommBridge_Initialize($) {
@@ -118,7 +118,76 @@ use HttpUtils;
use TcpServerUtils;
eval "use Encode qw(encode encode_utf8);1" or $missingModul .= 'Encode ';
eval "use JSON;1" or $missingModul .= 'JSON ';
# try to use JSON::MaybeXS wrapper
# for chance of better performance + open code
eval {
require JSON::MaybeXS;
import JSON::MaybeXS qw( decode_json encode_json );
1;
};
if ($@) {
$@ = undef;
# try to use JSON wrapper
# for chance of better performance
eval {
# JSON preference order
local $ENV{PERL_JSON_BACKEND} =
'Cpanel::JSON::XS,JSON::XS,JSON::PP,JSON::backportPP'
unless ( defined( $ENV{PERL_JSON_BACKEND} ) );
require JSON;
import JSON qw( decode_json encode_json );
1;
};
if ($@) {
$@ = undef;
# In rare cases, Cpanel::JSON::XS may
# be installed but JSON|JSON::MaybeXS not ...
eval {
require Cpanel::JSON::XS;
import Cpanel::JSON::XS qw(decode_json encode_json);
1;
};
if ($@) {
$@ = undef;
# In rare cases, JSON::XS may
# be installed but JSON not ...
eval {
require JSON::XS;
import JSON::XS qw(decode_json encode_json);
1;
};
if ($@) {
$@ = undef;
# Fallback to built-in JSON which SHOULD
# be available since 5.014 ...
eval {
require JSON::PP;
import JSON::PP qw(decode_json encode_json);
1;
};
if ($@) {
$@ = undef;
# Fallback to JSON::backportPP in really rare cases
require JSON::backportPP;
import JSON::backportPP qw(decode_json encode_json);
1;
}
}
}
}
## Import der FHEM Funktionen
BEGIN {