Changeset 748


Ignore:
Timestamp:
12/06/08 08:25:58 (6 years ago)
Author:
lowjoel
Message:

Implement a proper asynchronous wait handler for connections.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/Manager/RemoteExecutor.cs

    r744 r748  
    134134                { 
    135135                    IAsyncResult asyncWait = server.BeginWaitForConnection( 
    136                         server.EndWaitForConnection, null); 
     136                        EndWaitForConnection, null); 
    137137                    while (!server.IsConnected && !asyncWait.AsyncWaitHandle.WaitOne(15)) 
    138138                        if (Thread.CurrentThread.ThreadState == ThreadState.AbortRequested) 
     
    164164                    //Deserialise the header of the request. 
    165165                    mstream.Position = 0; 
    166                     request = (RemoteRequest)new BinaryFormatter().Deserialize(new MemoryStream(buffer)); 
     166                    try 
     167                    { 
     168                        request = (RemoteRequest)new BinaryFormatter().Deserialize( 
     169                            new MemoryStream(buffer)); 
     170                    } 
     171                    catch (SerializationException) 
     172                    { 
     173                        //We got a unserialisation issue but we can't do anything about it. 
     174                        continue; 
     175                    } 
    167176                } 
    168177 
     
    290299                } 
    291300 
    292                 // we are done, disconnect 
     301                //We are done, disconnect 
    293302                server.Disconnect(); 
    294303            } 
     304        } 
     305 
     306        /// <summary> 
     307        /// Waits for a connection from a client. 
     308        /// </summary> 
     309        /// <param name="result">The AsyncResult object associated with this asynchronous 
     310        /// operation.</param> 
     311        private void EndWaitForConnection(IAsyncResult result) 
     312        { 
     313            server.WaitForConnection(); 
     314            if (server.IsConnected) 
     315                server.EndWaitForConnection(result); 
    295316        } 
    296317    } 
Note: See TracChangeset for help on using the changeset viewer.