فهرست منبع

Reduce the message size

Zachary Kotlarek 12 سال پیش
والد
کامیت
b64c145a7a
1فایلهای تغییر یافته به همراه25 افزوده شده و 9 حذف شده
  1. 25 9
      dmx/state.pl

+ 25 - 9
dmx/state.pl

@@ -90,10 +90,10 @@ if ($HOST =~ /loki/i) {
 	$MON_FILES{'AUDIO_STATE'} = 'VALUE-NOUPDATE';
 
 	# Lights
-	$MON_FILES{'LED'}      = 'VALUE-NOUPDATE';
-	$MON_FILES{'OVERHEAD'} = 'VALUE-NOUPDATE';
-	$MON_FILES{'ROPE'}     = 'VALUE-NOUPDATE';
-	$MON_FILES{'STAIRS'}   = 'VALUE-NOUPDATE';
+	$MON_FILES{'LED'}      = 'LINE-NOUPDATE';
+	$MON_FILES{'OVERHEAD'} = 'LINE-NOUPDATE';
+	$MON_FILES{'ROPE'}     = 'LINE-NOUPDATE';
+	$MON_FILES{'STAIRS'}   = 'LINE-NOUPDATE';
 
 	# TV
 	$MON_FILES{'TV'}     = 'STATUS';
@@ -110,8 +110,8 @@ my %EXTRAS = (
 		'LENGTH'    => qr/^duration:(\d+)/m,
 		'POSITION'  => qr/^time:(\d+(?:\.\d+)?)/m,
 		'TYPE'      => qr/^type:(.+)$/m,
-		'IMAGE'     => qr/^fanart:(.+)$/m,
-		'THUMB'     => qr/^thumbnail:(.+)$/m,
+		#'IMAGE'     => qr/^fanart:(.+)$/m,
+		#'THUMB'     => qr/^thumbnail:(.+)$/m,
 		'ALBUM'     => qr/^album:(.+)$/m,
 		'ARTIST'    => qr/^artist:(.+)$/m,
 		'SELECTION' => qr/^selection:(.+)$/m,
@@ -124,7 +124,7 @@ my %EXTRAS = (
 my $SOCK_TIMEOUT = 5;
 my $DATA_DIR     = DMX::dataDir();
 my $CMD_FILE     = 'STATE';
-my $MAX_CMD_LEN  = 4096;
+my $MAX_CMD_LEN  = DMX::maxCmdLen();
 my $RESET_CMD    = $ENV{'HOME'} . '/bin/video/dmx/reset.sh';
 my $PUSH_TIMEOUT = 20;
 
@@ -178,6 +178,7 @@ foreach my $name (keys(%MON_FILES)) {
 		'status'    => 0,
 		'exists'    => 0,
 		'value'     => 0,
+		'line'      => 0,
 		'clear'     => 0,
 		'clear_off' => 0,
 		'mtime'     => 0,
@@ -193,6 +194,9 @@ foreach my $name (keys(%MON_FILES)) {
 	if ($file{'type'} =~ /\bVALUE\b/i) {
 		$attr{'value'} = 1;
 	}
+	if ($file{'type'} =~ /\bLINE\b/i) {
+		$attr{'line'} = 1;
+	}
 	if ($file{'type'} =~ /\bCLEAR\b/i) {
 		$attr{'clear'} = 1;
 	}
@@ -213,6 +217,9 @@ foreach my $name (keys(%MON_FILES)) {
 	}
 
 	# Cross-match some data types for easy of use
+	if ($attr{'line'}) {
+		$attr{'value'} = 1;
+	}
 	if ($attr{'value'} || $attr{'playing'}) {
 		$attr{'status'} = 1;
 	}
@@ -393,7 +400,11 @@ while (1) {
 
 			# Parse the value for the file
 			if ($file->{'attr'}->{'value'}) {
-				$text =~ s/\n$//;
+				if ($file->{'attr'}->{'line'}) {
+					($text) = $text =~ /^([^\n]+)\s*\n/;
+				} else {
+					$text =~ s/\s+$//;
+				}
 				$file->{'value'} = $text;
 			} elsif ($file->{'attr'}->{'playing'}) {
 				if ($text =~ /^playing:1/m) {
@@ -609,10 +620,15 @@ while (1) {
 		$pushLast = time();
 
 		# Send notifications to all subscribers
+		my $msg = $state . $status;
+		if ($DEBUG) {
+			print STDERR '<STATE (' . length($msg) . ")>\n" . $msg . "\n<END STATE>\n\n";
+		}
 		foreach my $sub (@subscribers) {
 
 			# Drop subscribers that are not available
-			if (!eval { $sub->{'socket'}->send($state . $status) }) {
+			my $send = $sub->{'socket'}->send($msg);
+			if (!defined($send) || $send < 1) {
 				print STDERR 'Dropping bad socket from subscriber list: ' . $sub->{'path'} . "\n";
 
 				my @new_subscribers = ();