Click here to Skip to main content
15,891,136 members
Articles / Programming Languages / C++

A Namespace Extension Toolkit

Rate me:
Please Sign up or sign in to vote.
4.78/5 (10 votes)
21 Mar 2006CPOL12 min read 84.9K   1.7K   42  
This article shows you how to build your own Windows Explorer interfaces to custom data.
/*
 Copyright 2005 Chad Yoshikawa
 http://www.ececs.uc.edu/~yoshikco
 yoshikco@ececs.uc.edu

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

*/
using System;
using System.IO;
using System.Diagnostics;
using System.Net.Sockets;

using CSharpFileSystem;

namespace CSharpFileSystem.Commands
{
	/// <summary>
	/// List files in a directory and return the result
	/// </summary>
	public class ListFilesCommand : FileSystemCommand
	{
		

		/// <summary>
		/// Create a new command capable of listing files in the Galaxy filesystem
		/// </summary>
		/// <param name="reader">The socket from the NSE</param>
		/// <param name="writer">The socket to the NSE</param>
		public ListFilesCommand(BinaryReader reader, BinaryWriter writer):base(reader,writer)
		{
			;
		}


		/// <summary>
		/// List files in Galaxy and return the result
		/// INPUT: Fully-qualified absolute path
		/// OUTPUT: 
		/// number of files
		///	followed by "number of files" of the following 3 things:
		/// filename
		/// filesize
		/// folderflag
		/// </summary>
		/// <param name="fs">the Galaxy filesystem object</param>
		public override void DoIt(FileSystem fs) {
			string path = IOLibrary.ReadString(myReader);
			//Debug.WriteLine("CSharpFileSystem::ListFilesCommand listing files of path "+path);

			// This is where we call out to the filesystem object
			CSharpFileSystem.FileInfo [] file_infos = fs.ListFiles(path);
			//Debug.WriteLine("CSharpFileSystem::ListFilesCommand done listing files of path "+path);


			IOLibrary.WriteInt(myWriter,file_infos.Length); // how many we're going to write back
			foreach (CSharpFileSystem.FileInfo info in file_infos) {
				IOLibrary.WriteString(myWriter,info.FileName);
				IOLibrary.WriteInt(myWriter,(int)info.Size);
				IOLibrary.WriteShort(myWriter,(short)(info.FolderFlag?1:0));
			}
			//Debug.WriteLine("CSharpFileSystem::ListFilesCommand done writing back "+file_infos.Length+" entries to NSE over the wire for path "+path);
			
		}
 
		
	} // end class
} // end namespace

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions