/**
 * \example ListFiles.cpp
 * Пример использования классов Context, Server, Volume, Path,
 * Directory, Files, Exception.
 * Данный пример демонстрирует простейшую программу, которая выводит
 * на консоль список файлов в каталоге с их владельцами.
 */

#include <stdio.h>
#include "BGDNet.h"

using BGDNet::Context;
using BGDNet::Server;
using BGDNet::Volume;
using BGDNet::Path;
using BGDNet::Directory;
using BGDNet::Files;
using BGDNet::Exception;

int main( int argc, char* argv[] )
{
  if (4 != argc)
  {
    puts("Usage: ListFiles.exe <server_name> <volume_name> <dir_name>");
    return -1;
  }

  try
  {
    Context ctx;
    Server srv(argv[1]);
    Volume vol(&srv, argv[2]);  
    Directory dir(&vol, Path(argv[3], NW_NS_LONG));
    printf("Files in %s\\%s:%s\n",
      (const char*)srv.name(),
      (const char*)vol.name(),
      (const char*)dir.name());
    Files fls;
    dir.getFiles(&fls);
    for (int i = 0; i < fls.size(); ++i)
    {
      nuint32 owner = fls[i]->ownerId();
      printf("%s (%s)\n",
        (const char*)fls[i]->name(),
        (const char*)srv.objNameById(owner, ctx));
    }
  }
  catch (const Exception& e)
  {
    printf("ERROR: %s\n", e.what());
  }
  puts("----------");

  return 0;
}
