Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit 034bc4f

Browse files
committed
Avoid using : and * chars for queue files on windows
1 parent 60ee9fd commit 034bc4f

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

core/src/plugins/mq.serial/SerialMessageExchanger.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,19 @@ class SerialMessageExchanger extends Plugin implements IMessageExchanger
4242
private $channels;
4343
private $clientsGCTime = 10;
4444

45+
/**
46+
* Windows-ify channel name to avoid forbidden characters
47+
* @param $channelName
48+
* @return mixed
49+
*/
50+
protected function channelNameToFileName($channelName){
51+
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){
52+
return str_replace(array(":", "*"), array("---", "__ALL__"), $channelName);
53+
}else{
54+
return $channelName;
55+
}
56+
}
57+
4558
/**
4659
* @param $channelName
4760
* @param bool $create
@@ -54,7 +67,7 @@ public function loadChannel($channelName, $create = false)
5467
}
5568
if (is_file($this->getPluginWorkDir()."/queues/channel-$channelName")) {
5669
if(!isset($this->channels)) $this->channels = array();
57-
$data = FileHelper::loadSerialFile($this->getPluginWorkDir() . "/queues/channel-$channelName");
70+
$data = FileHelper::loadSerialFile($this->getPluginWorkDir() . "/queues/channel-".$this->channelNameToFileName($channelName));
5871
if (is_array($data)) {
5972
if(!is_array($data["MESSAGES"])) $data["MESSAGES"] = array();
6073
if(!is_array($data["CLIENTS"])) $data["CLIENTS"] = array();
@@ -74,7 +87,7 @@ public function __destruct()
7487
if (isSet($this->channels) && is_array($this->channels)) {
7588
foreach ($this->channels as $channelName => $data) {
7689
if (is_array($data)) {
77-
FileHelper::saveSerialFile($this->getPluginWorkDir() . "/queues/channel-$channelName", $data);
90+
FileHelper::saveSerialFile($this->getPluginWorkDir() . "/queues/channel-".$this->channelNameToFileName($channelName), $data);
7891
}
7992
}
8093
}

0 commit comments

Comments
 (0)