DCPlusPlus.Queue Class Reference

Collaboration diagram for DCPlusPlus.Queue:

Collaboration graph
[legend]
List of all members.

Public Member Functions

void Add (Queue.QueueEntry item)
void AddFileList (Hub hub, string username)
void AddSearchResult (SearchResults.SearchResult result)
void CheckDownloadedData (QueueEntry queueEntry)
void Clear ()
bool Contains (Queue.QueueEntry item)
void CopyTo (Queue.QueueEntry[] array, int arrayIndex)
delegate void EntriesChangedEventHandler ()
delegate void EntriesClearedEventHandler ()
delegate void EntryAddedEventHandler (QueueEntry entry)
delegate void EntryCompletedEventHandler (QueueEntry entry)
delegate void EntryRemovedEventHandler (QueueEntry entry)
QueueEntry FindExistingEntryForFileList (Hub hub, string username)
QueueEntry FindExistingEntryForSearchResult (SearchResults.SearchResult result)
Queue.QueueEntry FindFirstQueueEntryBySourceUser (string username)
Queue.QueueEntry FindFirstUnusedQueueEntryBySourceUser (string username)
Queue.QueueEntry FindQueueEntryByOutputFilename (string output_filename)
Queue.QueueEntry FindQueueEntryByTTH (string tth)
IEnumerator< Queue.QueueEntryGetEnumerator ()
void LoadQueueFromXml (string xml)
void LoadQueueFromXmlFile (string filename)
bool Remove (Queue.QueueEntry item)
void Remove (string output_filename)
void RestartDownload (QueueEntry entry)
string SaveQueueToXml ()
void SaveQueueToXmlFile (string filename)
void UpdateSourcesByUsername (string username, Hub source_hub, bool is_online)

Public Attributes

event EntriesChangedEventHandler EntriesChanged
event EntriesClearedEventHandler EntriesCleared
event EntryAddedEventHandler EntryAdded
event QueueEntry.EntryClaimedEventHandler EntryClaimed
event EntryCompletedEventHandler EntryCompleted
event EntryRemovedEventHandler EntryRemoved
event QueueEntry.EntrySourceAddedEventHandler EntrySourceAdded
event QueueEntry.EntrySourceRemovedEventHandler EntrySourceRemoved
event QueueEntry.EntrySourceStatusChangedEventHandler EntrySourceStatusChanged
event QueueEntry.EntryUnclaimedEventHandler EntryUnclaimed

Protected Attributes

string download_directory = ".\\downloads"
string filelists_directory = ".\\filelists"
List< QueueEntryitems = new List<QueueEntry>()
Object queue_lock = new Object()

Properties

int Count [get]
string DownloadDirectory [get, set]
string FileListsDirectory [get, set]
bool IsReadOnly [get]
List< QueueEntryItems [get, set]

Private Member Functions

IEnumerator IEnumerable. GetEnumerator ()
void GrabEntry (QueueEntry entry)

Classes

class  QueueEntry
class  QueueEnumerator
class  QueueEnumerator2

Detailed Description

Definition at line 11 of file Queue.cs.


Member Function Documentation

void DCPlusPlus.Queue.Add ( Queue.QueueEntry  item  ) 

Definition at line 914 of file Queue.cs.

References DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntryAdded, DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

00915         {
00916             lock (queue_lock)
00917             {
00918                 items.Add(item);
00919             }
00920             try
00921             {
00922                 if (EntryAdded != null)
00923                     EntryAdded(item);
00924                 if (EntriesChanged != null)
00925                     EntriesChanged();
00926             }
00927             catch (Exception ex)
00928             {
00929                 Console.WriteLine("Exception occured in added event callback: " + ex.Message);
00930             }
00931         }

void DCPlusPlus.Queue.AddFileList ( Hub  hub,
string  username 
)

Definition at line 709 of file Queue.cs.

References DCPlusPlus.Hub.Address, DCPlusPlus.Queue.QueueEntry.AddSource(), DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntryAdded, DCPlusPlus.Queue.filelists_directory, DCPlusPlus.Queue.FindExistingEntryForFileList(), DCPlusPlus.Queue.GrabEntry(), DCPlusPlus.Queue.items, DCPlusPlus.Queue.QueueEntry.OutputFilename, DCPlusPlus.Queue.queue_lock, and DCPlusPlus.Queue.QueueEntry.Type.

Referenced by DCPlusPlus.Client.GetFileList().

00710         {
00711             QueueEntry existing = FindExistingEntryForFileList(hub, username);
00712             if (existing == null)
00713             {
00714                 QueueEntry entry = new QueueEntry();
00715                 entry.Type = QueueEntry.EntryType.FileList;
00716                 string temp_hub_address = hub.Address.Replace(":", "_");
00717                 entry.OutputFilename = filelists_directory + "\\" + temp_hub_address + "-" + Base32.ToBase32String(Encoding.Default.GetBytes(username)) + ".xml.bz2";//TODO .. maybe changes needed here to incorporate other filelist formats
00718                 entry.AddSource(new Queue.QueueEntry.Source(username, "", hub));
00719                 lock (queue_lock)
00720                 {
00721                     items.Add(entry);
00722                 }
00723                 GrabEntry(entry);
00724                 try
00725                 {
00726                     if (EntryAdded != null)
00727                         EntryAdded(entry);
00728                     if (EntriesChanged != null)
00729                         EntriesChanged();
00730                 }
00731                 catch (Exception ex)
00732                 {
00733                     Console.WriteLine("Exception occured in added event callback: " + ex.Message);
00734                 }
00735 
00736             }
00737         }

Here is the call graph for this function:

Here is the caller graph for this function:

void DCPlusPlus.Queue.AddSearchResult ( SearchResults.SearchResult  result  ) 

Definition at line 738 of file Queue.cs.

References DCPlusPlus.Queue.QueueEntry.AddSource(), DCPlusPlus.Queue.download_directory, DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntryAdded, DCPlusPlus.Queue.QueueEntry.Filesize, DCPlusPlus.Queue.FindExistingEntryForSearchResult(), DCPlusPlus.Queue.GrabEntry(), DCPlusPlus.Queue.items, DCPlusPlus.Queue.QueueEntry.OutputFilename, DCPlusPlus.Queue.queue_lock, DCPlusPlus.Queue.QueueEntry.TTH, and DCPlusPlus.Queue.QueueEntry.Type.

Referenced by DCPlusPlus.Client.StartDownload().

00739         {
00740             if (result.IsFile)
00741             {
00742                 QueueEntry existing = FindExistingEntryForSearchResult(result);
00743                 if (existing != null)
00744                 {//This should be a deprecated case.. never ever be called again :-)
00745                     //lock (queue_lock)
00746                     //{
00747                         existing.AddSource(new QueueEntry.Source(result.UserName, result.Filename, result.Hub));
00748                         //TODO source add event
00749                     //}
00750                     return;
00751                 }
00752                 QueueEntry entry = new QueueEntry();
00753                 entry.Type = QueueEntry.EntryType.File;
00754                 entry.Filesize = result.Filesize;
00755                 entry.OutputFilename = download_directory + "\\" + System.IO.Path.GetFileName(result.Filename); //TODO add directory support somehow
00756                 if (File.Exists(entry.OutputFilename))
00757                 {//already some file existing with this name ... try a (i) at the end increment until file is not there
00758                     int i = 1;
00759                     string new_extension = Path.GetExtension(entry.OutputFilename);
00760 
00761                     string new_filename = Path.GetDirectoryName(entry.OutputFilename) + "\\" + Path.GetFileNameWithoutExtension(entry.OutputFilename) + "(" + i + ")" + new_extension;
00762                     while (File.Exists(new_filename))
00763                     {
00764                         i++;
00765                         new_filename = Path.GetDirectoryName(entry.OutputFilename) + "\\" + Path.GetFileNameWithoutExtension(entry.OutputFilename) + "(" + i + ")" + new_extension;
00766                     }
00767                     entry.OutputFilename = new_filename;
00768                 }
00769                 if (result.HasTTH) entry.TTH = result.TTH;
00770                 //if(result.IsHubResolved)
00771                 entry.AddSource(new Queue.QueueEntry.Source(result.UserName, result.Filename, result.Hub));
00772                 lock (queue_lock)
00773                 {
00774                     items.Add(entry);
00775                 }
00776                 GrabEntry(entry);
00777                 //Console.WriteLine("Queue Entry added: '"+entry.OutputFilename+"'");
00778                 try
00779                 {
00780                     if (EntryAdded != null)
00781                         EntryAdded(entry);
00782                     if (EntriesChanged != null)
00783                         EntriesChanged();
00784                 }
00785                 catch (Exception ex)
00786                 {
00787                     Console.WriteLine("Exception occured in added event callback: " + ex.Message);
00788                 }
00789 
00790             }
00791             //download_directory + "\\" + 
00792 
00793         }

Here is the call graph for this function:

Here is the caller graph for this function:

void DCPlusPlus.Queue.CheckDownloadedData ( QueueEntry  queueEntry  ) 

Definition at line 674 of file Queue.cs.

00675         {
00676             throw new Exception("The method or operation is not implemented.");
00677         }

void DCPlusPlus.Queue.Clear (  ) 

Definition at line 954 of file Queue.cs.

References DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntriesCleared, DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

00955         {
00956             lock (queue_lock)
00957             {
00958                 items.Clear();
00959             }
00960             try
00961             {
00962 
00963                 if (EntriesCleared != null)
00964                     EntriesCleared();
00965                 if (EntriesChanged != null)
00966                     EntriesChanged();
00967             }
00968             catch (Exception ex)
00969             {
00970                 Console.WriteLine("Exception occured in clear event callback: " + ex.Message);
00971             }
00972         }

bool DCPlusPlus.Queue.Contains ( Queue.QueueEntry  item  ) 

Definition at line 1066 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

01067         {
01068             bool ret = false;
01069             lock (queue_lock)
01070             {
01071                 ret =items.Contains(item);
01072             }
01073             return (ret);
01074         }

void DCPlusPlus.Queue.CopyTo ( Queue.QueueEntry[]  array,
int  arrayIndex 
)

Definition at line 1075 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

01076         {
01077             lock (queue_lock)
01078             {
01079                 foreach (Queue.QueueEntry entry in items)
01080                 {
01081                     array.SetValue(entry, arrayIndex);
01082                     arrayIndex = arrayIndex + 1;
01083                 }
01084             }
01085         }

delegate void DCPlusPlus.Queue.EntriesChangedEventHandler (  ) 

delegate void DCPlusPlus.Queue.EntriesClearedEventHandler (  ) 

delegate void DCPlusPlus.Queue.EntryAddedEventHandler ( QueueEntry  entry  ) 

delegate void DCPlusPlus.Queue.EntryCompletedEventHandler ( QueueEntry  entry  ) 

delegate void DCPlusPlus.Queue.EntryRemovedEventHandler ( QueueEntry  entry  ) 

QueueEntry DCPlusPlus.Queue.FindExistingEntryForFileList ( Hub  hub,
string  username 
)

Definition at line 629 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Queue.AddFileList().

00630         {
00631             QueueEntry ret = null;
00632             lock (queue_lock)
00633             {
00634                 foreach (QueueEntry entry in items)
00635                 {
00636                     if (entry.FindFirstSourceByUserAndHub(username, hub) != null)
00637                     {
00638                         ret = entry;
00639                         break;
00640                     }
00641                 }
00642             }
00643             return (ret);
00644         }

Here is the caller graph for this function:

QueueEntry DCPlusPlus.Queue.FindExistingEntryForSearchResult ( SearchResults.SearchResult  result  ) 

Definition at line 611 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Queue.AddSearchResult().

00612         {
00613             QueueEntry ret = null;
00614             lock (queue_lock)
00615             {
00616                 foreach (QueueEntry entry in items)
00617                 {
00618                     //if ((entry.OutputFilename == download_directory + "\\" + System.IO.Path.GetFileName(result.Filename) && entry.Filesize == result.Filesize)
00619                     //    || (result.HasTTH && entry.HasTTH && entry.TTH == result.TTH))
00620                     if (result.HasTTH && entry.HasTTH && entry.TTH == result.TTH)
00621                     {
00622                         ret = (entry);
00623                         break;
00624                     }
00625                 }
00626             }
00627             return (ret);
00628         }

Here is the caller graph for this function:

Queue.QueueEntry DCPlusPlus.Queue.FindFirstQueueEntryBySourceUser ( string  username  ) 

Definition at line 803 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

00804         {
00805             QueueEntry ret = null;
00806             lock (queue_lock)
00807             {
00808 
00809                 foreach (Queue.QueueEntry entry in items)
00810                 {
00811                     foreach (QueueEntry.Source source in entry.Sources)
00812                     {
00813                         if (source.UserName == username)
00814                         {
00815                             ret = entry;
00816                             break;
00817                         }
00818                     }
00819                     if (ret != null)
00820                         break;
00821                 }
00822             }
00823             return (ret);
00824         }

Queue.QueueEntry DCPlusPlus.Queue.FindFirstUnusedQueueEntryBySourceUser ( string  username  ) 

Definition at line 825 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Client.ContinueWithQueueForUser(), and DCPlusPlus.Client.SetupPeerEventHandler().

00826         {
00827             QueueEntry ret = null;
00828             lock (queue_lock)
00829             {
00830                 foreach (Queue.QueueEntry entry in items)
00831                 {
00832                     foreach (QueueEntry.Source source in entry.Sources)
00833                     {
00834                         if (source.UserName == username && !entry.IsInUse)
00835                         {
00836                             ret = entry;
00837                             break;
00838                         }
00839                     }
00840                     if (ret != null)
00841                         break;
00842                 }
00843             }
00844             return (ret);
00845         }

Here is the caller graph for this function:

Queue.QueueEntry DCPlusPlus.Queue.FindQueueEntryByOutputFilename ( string  output_filename  ) 

Definition at line 846 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

00847         {
00848             QueueEntry ret = null;
00849             lock (queue_lock)
00850             {
00851                 foreach (Queue.QueueEntry entry in items)
00852                 {
00853                     if (entry.OutputFilename == output_filename)
00854                     {
00855                         ret = entry;
00856                         break;
00857                     }
00858                 }
00859             }
00860             return (ret);
00861         }

Queue.QueueEntry DCPlusPlus.Queue.FindQueueEntryByTTH ( string  tth  ) 

Definition at line 862 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Client.InterpretReceivedSearchResult().

00863         {
00864             QueueEntry ret = null;
00865             lock (queue_lock)
00866             {
00867                 foreach (Queue.QueueEntry entry in items)
00868                 {
00869                     if (entry.HasTTH && entry.TTH == tth)
00870                     {
00871                         ret =  entry;
00872                         break;
00873                     }
00874                 }
00875             }
00876             return (ret);
00877         }

Here is the caller graph for this function:

IEnumerator IEnumerable. DCPlusPlus.Queue.GetEnumerator (  )  [private]

Definition at line 1203 of file Queue.cs.

References DCPlusPlus.Queue.items.

01204         {
01205             return (new QueueEnumerator(items.ToArray()));
01206         }

IEnumerator<Queue.QueueEntry> DCPlusPlus.Queue.GetEnumerator (  ) 

Definition at line 1157 of file Queue.cs.

References DCPlusPlus.Queue.items.

01158         {
01159             return (new QueueEnumerator2(items.ToArray()));
01160         }

void DCPlusPlus.Queue.GrabEntry ( QueueEntry  entry  )  [private]

Definition at line 645 of file Queue.cs.

References DCPlusPlus.Queue.EntryClaimed, DCPlusPlus.Queue.QueueEntry.EntryClaimed, DCPlusPlus.Queue.EntrySourceAdded, DCPlusPlus.Queue.QueueEntry.EntrySourceAdded, DCPlusPlus.Queue.EntrySourceRemoved, DCPlusPlus.Queue.QueueEntry.EntrySourceRemoved, DCPlusPlus.Queue.EntrySourceStatusChanged, DCPlusPlus.Queue.QueueEntry.EntrySourceStatusChanged, DCPlusPlus.Queue.EntryUnclaimed, and DCPlusPlus.Queue.QueueEntry.EntryUnclaimed.

Referenced by DCPlusPlus.Queue.AddFileList(), DCPlusPlus.Queue.AddSearchResult(), and DCPlusPlus.Queue.LoadQueueFromXml().

00646         {
00647             entry.EntrySourceAdded += delegate(QueueEntry add_entry, QueueEntry.Source added_source)
00648             {
00649                 if (EntrySourceAdded != null)
00650                     EntrySourceAdded(add_entry, added_source);
00651             };
00652             entry.EntrySourceRemoved += delegate(QueueEntry remove_entry, QueueEntry.Source removed_source)
00653             {
00654                 if (EntrySourceRemoved != null)
00655                     EntrySourceRemoved(remove_entry, removed_source);
00656             };
00657             entry.EntrySourceStatusChanged += delegate(QueueEntry change_entry, QueueEntry.Source changed_source)
00658             {
00659                 if (EntrySourceStatusChanged != null)
00660                     EntrySourceStatusChanged(change_entry, changed_source);
00661             };
00662             entry.EntryClaimed += delegate(QueueEntry claimed_entry, Peer claiming_peer)
00663             {
00664                 if (EntryClaimed != null)
00665                     EntryClaimed(claimed_entry, claiming_peer);
00666             };
00667             entry.EntryUnclaimed += delegate(QueueEntry unclaimed_entry)
00668             {
00669                 if (EntryUnclaimed != null)
00670                     EntryUnclaimed(unclaimed_entry);
00671             };
00672         }

Here is the caller graph for this function:

void DCPlusPlus.Queue.LoadQueueFromXml ( string  xml  ) 

Definition at line 973 of file Queue.cs.

References DCPlusPlus.Queue.download_directory, DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntriesCleared, DCPlusPlus.Queue.EntryAdded, DCPlusPlus.Queue.GrabEntry(), DCPlusPlus.Queue.Items, DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Queue.LoadQueueFromXmlFile().

00974         {
00975             lock (queue_lock)
00976             {
00977                 items.Clear();
00978             }
00979             if (EntriesCleared != null)
00980                 EntriesCleared();
00981 
00982             Queue q = new Queue();
00983             try
00984             {
00985                 XmlSerializer serializer = new XmlSerializer(typeof(Queue));
00986                 MemoryStream ms = new MemoryStream(System.Text.Encoding.Default.GetBytes(xml));
00987                 q = (Queue)serializer.Deserialize(ms);
00988             }
00989             catch (Exception ex)
00990             {
00991                 Console.WriteLine("Error deserializing queue: " + ex.Message);
00992             }
00993             lock (queue_lock)
00994             {
00995                 items = q.Items;
00996             }
00997             download_directory = q.download_directory;
00998             if (EntryAdded != null)
00999             {
01000                 foreach (QueueEntry entry in items)
01001                 {
01002                     GrabEntry(entry);
01003                     entry.GrabSources();
01004                     EntryAdded(entry);
01005                 }
01006             }
01007             if (EntriesChanged != null)
01008                 EntriesChanged();
01009         }

Here is the call graph for this function:

Here is the caller graph for this function:

void DCPlusPlus.Queue.LoadQueueFromXmlFile ( string  filename  ) 

Definition at line 1033 of file Queue.cs.

References DCPlusPlus.Queue.LoadQueueFromXml().

01034         {
01035             //try
01036             //{
01037                 if (!File.Exists(filename)) return;
01038                 LoadQueueFromXml(System.IO.File.ReadAllText(filename));
01039             //}
01040             //catch (Exception ex)
01041             //{
01042             //    Console.WriteLine("Error loading queue from: " + filename + " : " + ex.Message);
01043             //}
01044         }

Here is the call graph for this function:

bool DCPlusPlus.Queue.Remove ( Queue.QueueEntry  item  ) 

Definition at line 934 of file Queue.cs.

References DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntryRemoved, DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

00935         {
00936             bool ret = false;
00937             lock (queue_lock)
00938             {
00939                 ret = items.Remove(item);
00940             }
00941             try
00942             {
00943                 if (EntryRemoved != null)
00944                     EntryRemoved(item);
00945                 if (EntriesChanged != null)
00946                     EntriesChanged();
00947             }
00948             catch (Exception ex)
00949             {
00950                 Console.WriteLine("Exception occured in remove event callback: " + ex.Message);
00951             }
00952             return (ret);
00953         }

void DCPlusPlus.Queue.Remove ( string  output_filename  ) 

Definition at line 888 of file Queue.cs.

References DCPlusPlus.Queue.EntriesChanged, DCPlusPlus.Queue.EntryRemoved, DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Client.SetupPeerEventHandler().

00889         {
00890                 foreach (QueueEntry entry in items)
00891                 {
00892                     if (entry.OutputFilename == output_filename)
00893                     {
00894                         lock (queue_lock)
00895                         {
00896                             items.Remove(entry);
00897                         }
00898                         entry.Ungrab();
00899                         try
00900                         {
00901                             if (EntryRemoved != null)
00902                                 EntryRemoved(entry);
00903                             if (EntriesChanged != null)
00904                                 EntriesChanged();
00905                         }
00906                         catch (Exception ex)
00907                         {
00908                             Console.WriteLine("Exception occured in remove event callback: " + ex.Message);
00909                         }
00910                         return;
00911                     }
00912             }
00913         }

Here is the caller graph for this function:

void DCPlusPlus.Queue.RestartDownload ( QueueEntry  entry  ) 

Definition at line 795 of file Queue.cs.

References DCPlusPlus.Queue.QueueEntry.DeleteOutputFile(), DCPlusPlus.Queue.QueueEntry.FilesizeOnDisk, DCPlusPlus.Queue.QueueEntry.IsInUse, and DCPlusPlus.Queue.QueueEntry.OutputFilename.

00796         {
00797             if (entry.FilesizeOnDisk != 0 && File.Exists(entry.OutputFilename) && !entry.IsInUse)
00798             {
00799                 entry.DeleteOutputFile();
00800             }
00801         }

Here is the call graph for this function:

string DCPlusPlus.Queue.SaveQueueToXml (  ) 

Definition at line 1010 of file Queue.cs.

References DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Queue.SaveQueueToXmlFile().

01011         {
01012             //nice way but seems to not work with list<> members
01013             string ret = "";
01014             lock (queue_lock)
01015             {
01016                 try
01017                 {
01018                     XmlSerializer serializer = new XmlSerializer(typeof(Queue));
01019                     MemoryStream ms = new MemoryStream();
01020                     serializer.Serialize(ms, this);
01021                     ms.Flush();
01022                     ret = System.Text.Encoding.Default.GetString(ms.GetBuffer(), 0, (int)ms.Length);//TODO ... 4gb crash border
01023                     //ret = ret.TrimEnd((char)0);
01024                 }
01025                 catch (Exception ex)
01026                 {
01027                     Console.WriteLine("Error serializing queue: " + ex.Message);
01028                     ret = null;
01029                 }
01030             }
01031             return (ret);
01032         }

Here is the caller graph for this function:

void DCPlusPlus.Queue.SaveQueueToXmlFile ( string  filename  ) 

Definition at line 1045 of file Queue.cs.

References DCPlusPlus.Queue.SaveQueueToXml().

01046         {
01047             try
01048             {
01049                 if (File.Exists(filename + ".backup") && File.Exists(filename))
01050                     File.Delete(filename + ".backup");
01051                 if (File.Exists(filename))
01052                 {
01053                     File.Move(filename, filename + ".backup");
01054                     Console.WriteLine("Created Backup of queue: "+filename+".backup");
01055                 }
01056 
01057                 System.IO.File.WriteAllText(filename, SaveQueueToXml());
01058             }
01059             catch (Exception ex)
01060             {
01061                 Console.WriteLine("Error saving queue to: " + filename + " : " + ex.Message);
01062             }
01063         }

Here is the call graph for this function:

void DCPlusPlus.Queue.UpdateSourcesByUsername ( string  username,
Hub  source_hub,
bool  is_online 
)

Definition at line 878 of file Queue.cs.

References DCPlusPlus.Queue.items, and DCPlusPlus.Queue.queue_lock.

Referenced by DCPlusPlus.Client.UpdateSourcesByUsername().

00879         {
00880             lock (queue_lock)
00881             {
00882                 foreach (Queue.QueueEntry entry in items)
00883                 {
00884                     entry.UpdateSourcesByUsername(username, source_hub, is_online);
00885                 }
00886             }
00887         }

Here is the caller graph for this function:


Member Data Documentation

string DCPlusPlus.Queue.download_directory = ".\\downloads" [protected]

Definition at line 569 of file Queue.cs.

Referenced by DCPlusPlus.Queue.AddSearchResult(), and DCPlusPlus.Queue.LoadQueueFromXml().

event EntriesChangedEventHandler DCPlusPlus.Queue.EntriesChanged

Definition at line 538 of file Queue.cs.

Referenced by DCPlusPlus.Queue.Add(), DCPlusPlus.Queue.AddFileList(), DCPlusPlus.Queue.AddSearchResult(), DCPlusPlus.Queue.Clear(), DCPlusPlus.Queue.LoadQueueFromXml(), and DCPlusPlus.Queue.Remove().

event EntriesClearedEventHandler DCPlusPlus.Queue.EntriesCleared

Definition at line 540 of file Queue.cs.

Referenced by DCPlusPlus.Queue.Clear(), and DCPlusPlus.Queue.LoadQueueFromXml().

event EntryAddedEventHandler DCPlusPlus.Queue.EntryAdded

Definition at line 532 of file Queue.cs.

Referenced by DCPlusPlus.Queue.Add(), DCPlusPlus.Queue.AddFileList(), DCPlusPlus.Queue.AddSearchResult(), and DCPlusPlus.Queue.LoadQueueFromXml().

event QueueEntry.EntryClaimedEventHandler DCPlusPlus.Queue.EntryClaimed

Definition at line 545 of file Queue.cs.

Referenced by DCPlusPlus.Queue.GrabEntry().

event EntryCompletedEventHandler DCPlusPlus.Queue.EntryCompleted

Definition at line 534 of file Queue.cs.

event EntryRemovedEventHandler DCPlusPlus.Queue.EntryRemoved

Definition at line 536 of file Queue.cs.

Referenced by DCPlusPlus.Queue.Remove().

event QueueEntry.EntrySourceAddedEventHandler DCPlusPlus.Queue.EntrySourceAdded

Definition at line 542 of file Queue.cs.

Referenced by DCPlusPlus.Queue.GrabEntry().

event QueueEntry.EntrySourceRemovedEventHandler DCPlusPlus.Queue.EntrySourceRemoved

Definition at line 543 of file Queue.cs.

Referenced by DCPlusPlus.Queue.GrabEntry().

event QueueEntry.EntrySourceStatusChangedEventHandler DCPlusPlus.Queue.EntrySourceStatusChanged

Definition at line 544 of file Queue.cs.

Referenced by DCPlusPlus.Client.Client(), and DCPlusPlus.Queue.GrabEntry().

event QueueEntry.EntryUnclaimedEventHandler DCPlusPlus.Queue.EntryUnclaimed

Definition at line 546 of file Queue.cs.

Referenced by DCPlusPlus.Queue.GrabEntry().

string DCPlusPlus.Queue.filelists_directory = ".\\filelists" [protected]

Definition at line 583 of file Queue.cs.

Referenced by DCPlusPlus.Queue.AddFileList().

List<QueueEntry> DCPlusPlus.Queue.items = new List<QueueEntry>() [protected]

Definition at line 549 of file Queue.cs.

Referenced by DCPlusPlus.Queue.Add(), DCPlusPlus.Queue.AddFileList(), DCPlusPlus.Queue.AddSearchResult(), DCPlusPlus.Queue.Clear(), DCPlusPlus.Queue.Contains(), DCPlusPlus.Queue.CopyTo(), DCPlusPlus.Queue.FindExistingEntryForFileList(), DCPlusPlus.Queue.FindExistingEntryForSearchResult(), DCPlusPlus.Queue.FindFirstQueueEntryBySourceUser(), DCPlusPlus.Queue.FindFirstUnusedQueueEntryBySourceUser(), DCPlusPlus.Queue.FindQueueEntryByOutputFilename(), DCPlusPlus.Queue.FindQueueEntryByTTH(), DCPlusPlus.Queue.GetEnumerator(), DCPlusPlus.Queue.LoadQueueFromXml(), DCPlusPlus.Queue.Remove(), and DCPlusPlus.Queue.UpdateSourcesByUsername().

Object DCPlusPlus.Queue.queue_lock = new Object() [protected]

Definition at line 597 of file Queue.cs.

Referenced by DCPlusPlus.Queue.Add(), DCPlusPlus.Queue.AddFileList(), DCPlusPlus.Queue.AddSearchResult(), DCPlusPlus.Queue.Clear(), DCPlusPlus.Queue.Contains(), DCPlusPlus.Queue.CopyTo(), DCPlusPlus.Queue.FindExistingEntryForFileList(), DCPlusPlus.Queue.FindExistingEntryForSearchResult(), DCPlusPlus.Queue.FindFirstQueueEntryBySourceUser(), DCPlusPlus.Queue.FindFirstUnusedQueueEntryBySourceUser(), DCPlusPlus.Queue.FindQueueEntryByOutputFilename(), DCPlusPlus.Queue.FindQueueEntryByTTH(), DCPlusPlus.Queue.LoadQueueFromXml(), DCPlusPlus.Queue.Remove(), DCPlusPlus.Queue.SaveQueueToXml(), and DCPlusPlus.Queue.UpdateSourcesByUsername().


Property Documentation

int DCPlusPlus.Queue.Count [get]

Definition at line 563 of file Queue.cs.

string DCPlusPlus.Queue.DownloadDirectory [get, set]

Definition at line 571 of file Queue.cs.

Referenced by DCPlusPlus.Client.Client().

string DCPlusPlus.Queue.FileListsDirectory [get, set]

Definition at line 585 of file Queue.cs.

Referenced by DCPlusPlus.Client.Client().

bool DCPlusPlus.Queue.IsReadOnly [get]

Definition at line 1087 of file Queue.cs.

List<QueueEntry> DCPlusPlus.Queue.Items [get, set]

Definition at line 552 of file Queue.cs.

Referenced by DCPlusPlus.Queue.LoadQueueFromXml().


The documentation for this class was generated from the following file:
Generated on Wed Mar 7 19:09:41 2007 for DCPlusPlus by  doxygen 1.5.1-p1