summaryrefslogtreecommitdiffstats
path: root/apps/files_external/3rdparty/icewind/smb/src
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-01-06 15:10:50 +0100
committerRobin Appelman <robin@icewind.nl>2017-01-27 10:44:29 +0100
commit0aa211eefb4fd8d007f07d720825b9aa86e3c6ea (patch)
treef3b5e7dc83891c253857f6640e8ac97a9c53d5d5 /apps/files_external/3rdparty/icewind/smb/src
parentb5990b740d1208ee3c465fe49ca08d27855c35a6 (diff)
downloadnextcloud-server-0aa211eefb4fd8d007f07d720825b9aa86e3c6ea.tar.gz
nextcloud-server-0aa211eefb4fd8d007f07d720825b9aa86e3c6ea.zip
Add missing smb files
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'apps/files_external/3rdparty/icewind/smb/src')
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Change.php40
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php11
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php46
-rw-r--r--apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php88
4 files changed, 185 insertions, 0 deletions
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Change.php b/apps/files_external/3rdparty/icewind/smb/src/Change.php
new file mode 100644
index 00000000000..9dfd57b3973
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/Change.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ *
+ */
+
+namespace Icewind\SMB;
+
+class Change {
+ private $code;
+
+ private $path;
+
+ /**
+ * Change constructor.
+ *
+ * @param $code
+ * @param $path
+ */
+ public function __construct($code, $path) {
+ $this->code = $code;
+ $this->path = $path;
+ }
+
+ /**
+ * @return integer
+ */
+ public function getCode() {
+ return $this->code;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPath() {
+ return $this->path;
+ }
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php b/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php
new file mode 100644
index 00000000000..39735578798
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/Exception/DependencyException.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ */
+
+namespace Icewind\SMB\Exception;
+
+class DependencyException extends Exception {
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php
new file mode 100644
index 00000000000..1ee59b26ddd
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/INotifyHandler.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ *
+ */
+
+namespace Icewind\SMB;
+
+
+interface INotifyHandler {
+ // https://msdn.microsoft.com/en-us/library/dn392331.aspx
+ const NOTIFY_ADDED = 1;
+ const NOTIFY_REMOVED = 2;
+ const NOTIFY_MODIFIED = 3;
+ const NOTIFY_RENAMED_OLD = 4;
+ const NOTIFY_RENAMED_NEW = 5;
+ const NOTIFY_ADDED_STREAM = 6;
+ const NOTIFY_REMOVED_STREAM = 7;
+ const NOTIFY_MODIFIED_STREAM = 8;
+ const NOTIFY_REMOVED_BY_DELETE = 9;
+
+ /**
+ * Get all changes detected since the start of the notify process or the last call to getChanges
+ *
+ * @return Change[]
+ */
+ public function getChanges();
+
+ /**
+ * Listen actively to all incoming changes
+ *
+ * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated
+ *
+ * @param callable $callback
+ */
+ public function listen($callback);
+
+ /**
+ * Stop listening for changes
+ *
+ * Note that any pending changes will be discarded
+ */
+ public function stop();
+}
diff --git a/apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php b/apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php
new file mode 100644
index 00000000000..194e848502b
--- /dev/null
+++ b/apps/files_external/3rdparty/icewind/smb/src/NotifyHandler.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Robin Appelman <robin@icewind.nl>
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
+ *
+ */
+
+namespace Icewind\SMB;
+
+
+class NotifyHandler implements INotifyHandler {
+ /**
+ * @var Connection
+ */
+ private $connection;
+
+ /**
+ * @var string
+ */
+ private $path;
+
+ private $listening = true;
+
+ /**
+ * @param Connection $connection
+ * @param string $path
+ */
+ public function __construct(Connection $connection, $path) {
+ $this->connection = $connection;
+ $this->path = $path;
+ }
+
+ /**
+ * Get all changes detected since the start of the notify process or the last call to getChanges
+ *
+ * @return Change[]
+ */
+ public function getChanges() {
+ if (!$this->listening) {
+ return [];
+ }
+ stream_set_blocking($this->connection->getOutputStream(), 0);
+ $lines = [];
+ while (($line = $this->connection->readLine())) {
+ $lines[] = $line;
+ }
+ stream_set_blocking($this->connection->getOutputStream(), 1);
+ return array_values(array_filter(array_map([$this, 'parseChangeLine'], $lines)));
+ }
+
+ /**
+ * Listen actively to all incoming changes
+ *
+ * Note that this is a blocking process and will cause the process to block forever if not explicitly terminated
+ *
+ * @param callable $callback
+ */
+ public function listen($callback) {
+ if ($this->listening) {
+ $this->connection->read(function ($line) use ($callback) {
+ return $callback($this->parseChangeLine($line));
+ });
+ }
+ }
+
+ private function parseChangeLine($line) {
+ $code = (int)substr($line, 0, 4);
+ if ($code === 0) {
+ return null;
+ }
+ $subPath = str_replace('\\', '/', substr($line, 5));
+ if ($this->path === '') {
+ return new Change($code, $subPath);
+ } else {
+ return new Change($code, $this->path . '/' . $subPath);
+ }
+ }
+
+ public function stop() {
+ $this->listening = false;
+ $this->connection->close();
+ }
+
+ public function __destruct() {
+ $this->stop();
+ }
+}