示例#1
0
 protected override void Run()
 {
     try {
         if (ServiceAgentMode == ServiceAgentMode.Server)
         {
             while (true)
             {
                 Console.Write("path for file to share: ");
                 string p = MainClass.ConsoleReadLine();
                 if (p == "done")
                 {
                     return;
                 }
                 SendMessage(p);
             }
         }
         while (true)
         {
             FileShareMessage fileShareMessage;
             mre_fileReceived.WaitOne(10);
             while (files.TryDequeue(out fileShareMessage))
             {
                 mre_fileReceived.Reset();
                 Console.Write("server has shared a file: ");
                 Console.WriteLine(fileShareMessage.Text);
                 using (TransparentStream s = OpenStream(fileShareMessage.StreamID)) {
                     Console.Write("path to save: ");
                     s.CopyTo(File.OpenWrite(MainClass.ConsoleReadLine()), 64, 512);
                 }
             }
         }
     } catch (System.Threading.ThreadAbortException) {
     }
 }
示例#2
0
        protected TransparentStream OpenStream(Guid streamID)
        {
            TransparentStream ts = new TransparentStream(this, streamID, objectBusSession);

            streams.TryAdd(streamID, ts);
            return(ts);
        }
示例#3
0
        internal void RemoveStream(TransparentStream transparentStream)
        {
            TransparentStream referenece;

            streams.TryGetValue(transparentStream.StreamID, out referenece);
            if (referenece != transparentStream)
            {
                throw new InvalidOperationException("requested stream has an id belonging to this agent but the object itself does not");
            }
            streams.TryRemove(transparentStream.StreamID, out referenece);
        }