// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package smbprovider;

// ErrorType matches 1:1 to FileSystemProvider#ProviderError in Chromium up
// until ERROR_PROVIDER_ERROR_COUNT. The ErrorTypes past that are specific to
// SmbProvider.
enum ErrorType {
  ERROR_NONE = 0;
  ERROR_OK = 1;
  ERROR_FAILED = 2;
  ERROR_IN_USE = 3;
  ERROR_EXISTS = 4;
  ERROR_NOT_FOUND = 5;
  ERROR_ACCESS_DENIED = 6;
  ERROR_TOO_MANY_OPENED = 7;
  ERROR_NO_MEMORY = 8;
  ERROR_NO_SPACE = 9;
  ERROR_NOT_A_DIRECTORY = 10;
  ERROR_INVALID_OPERATION = 11;
  ERROR_SECURITY = 12;
  ERROR_ABORT = 13;
  ERROR_NOT_A_FILE = 14;
  ERROR_NOT_EMPTY = 15;
  ERROR_INVALID_URL = 16;
  ERROR_IO = 17;
  // Count of ProviderError.
  ERROR_PROVIDER_ERROR_COUNT = 18;
  // The following errors are not ProviderErrors, instead they are specific to
  // SmbProvider. The jump in int value is to account for possible future
  // additions to ProviderError.
  ERROR_DBUS_PARSE_FAILED = 50;
}

message DirectoryEntry {
  optional bool is_directory = 1;
  optional string name = 2;
  // Size in bytes.
  optional int64 size = 3;
  // Seconds since unix epoch.
  optional int64 last_modified_time = 4;
}

// DirectoryEntryList is included in responses to ReadDirectory D-Bus method
// calls.
message DirectoryEntryList {
  repeated DirectoryEntry entries = 1;
}

// MountOptions is used for passing inputs into SmbProvider.Mount().
message MountOptions {
  // Path of the share to be mounted. (e.g. "smb://qnap/testshare")
  optional string path = 1;
}

// UnmountOptions is used for passing inputs into SmbProvider.Unmount().
message UnmountOptions {
  optional int32 mount_id = 1;
}
