<?xml version="1.0" encoding="UTF-8" ?>

<node name="/org/chromium/SmbProvider"
    xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <interface name="org.chromium.SmbProvider">

    <method name="Mount">
      <tp:docstring>
        'Mounts' a given share by attempting to call smbc_opendir on given share path. 'Mounts' is
        in quotes because this does not actually do an actual mount since it is not needed on an SMB
        share. On success, this returns the corresponding mount id.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized MountOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <arg name="mount_id" type="i" direction="out">
        <tp:docstring>
          Unique identifier of the mounted share.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="Unmount">
      <tp:docstring>
        Unmounts' the mount corresponding to the mount id. 'Unmounts' is in quotes because this
        does not do an actual unmount since SMB does not need to actually mount a share.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized UnmountOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="ReadDirectory">
      <tp:docstring>
        Reads the directory on a given path. This outputs a serialized DirectoryEntryList protobuf.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized ReadDirectoryOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <arg name="entries" type="ay" direction="out">
        <tp:docstring>
          Serialized DirectoryEntryList protobuf.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="GetMetadataEntry">
      <tp:docstring>
        Gets the metadata of a given entry. This outputs an serialized DirectoryEntry protobuf.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized GetMetadataEntryOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <arg name="entry" type="ay" direction="out">
        <tp:docstring>
          Serialized DirectoryEntry protobuf.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="OpenFile">
      <tp:docstring>
        Opens a file with a specified path.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized OpenFileOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <arg name="file_id" type="i" direction="out">
        <tp:docstring>
          Unique identifier of the open file.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="CloseFile">
      <tp:docstring>
        Closes the file with the specified file handler.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized CloseFileOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="DeleteEntry">
      <tp:docstring>
        Deletes the entry with a specified path.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized DeleteEntryOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">\
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="ReadFile">
      <tp:docstring>
        Reads the file in a given samba file descriptor and writes the data in a temporary file.
        This outputs the file descriptor to the temporary file.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized ReadFileOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <arg name="temp_fd" type="h" direction="out">
        <tp:docstring>
          File descriptor of the temporary file that contains the read data.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="CreateFile">
      <tp:docstring>
        Creates a file on the specified path.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized CreateFileOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">\
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="Truncate">
      <tp:docstring>
        Truncates a file on the specified path to a desired length.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized TruncateOptions protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">\
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="WriteFile">
      <tp:docstring>
        Reads data from a temporary file and writes the data into the samba file with the specified
        handler.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized WriteFileOptionsProto protobuf.
        </tp:docstring>
      </arg>
      <arg name="temp_fd" type="h" direction="in">
        <tp:docstring>
          File descriptor of the temporary file that contains the data to be written.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">\
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="CreateDirectory">
      <tp:docstring>
        Creates a directory at the specified path.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized CreateDirectoryOptionsProto protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">\
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="MoveEntry">
      <tp:docstring>
        Moves an entry at specified source path to specified destination path.
      </tp:docstring>
      <arg name="options_blob" type="ay" direction="in">
        <tp:docstring>
          Serialized MoveEntryOptionsProto protobuf.
        </tp:docstring>
      </arg>
      <arg name="error_code" type="i" direction="out">\
        <tp:docstring>
          Returned error code. See ErrorType enum.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

  </interface>
</node>
