예제 #1
0
 private void setActive(ServerConnection serverCon)
 {
     //attivo il server
     serverCon.Active();
     Trace.TraceInformation("Server attivo. Server: {0}:{1}:{2}", serverCon.Server.Name, serverCon.Server.IP, serverCon.Server.ControlPort);
     //controllo se il server si è attivato o vi è stato qualche problema
     if (!serverCon.GetState().Equals("ACTIVE")) { return; }
     //cambio il serverAttivoIndex
     serverAttivoIndex = serverConnessi.IndexOf(serverCon);
     //inizializzo l'evento
     ServerEventArgs args = new ServerEventArgs()
     {
         Server = serverCon.Server,
         Position = serverAttivoIndex
     };
     EventHandler<ServerEventArgs> handler = ServerActivated;
     if (handler != null)
     {
         handler(this, args);
     }
 }
예제 #2
0
        internal void TransferStopped(ServerConnection serverConnection, bool isCopy)
        {
            ServerTranferEventArgs args = new ServerTranferEventArgs
            {
                Server = serverConnection.Server,
                Position = serverConnessi.IndexOf(serverConnection),
                Copy = isCopy,
                Completed = false,
                Percentage = 0
            };

            EventHandler<ServerTranferEventArgs> handler = this.ServerTransferCancelled;
            if (handler != null)
            {
                handler(this, args);
            }
        }
예제 #3
0
 void connectServerWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
 {
     if (e.UserState == null)
     {
         Server server = null;
         while (!serverToConnect.TryDequeue(out server)) ;
         ServerConnection serverToInsert = new ServerConnection(server, this);
         ServerEventArgs args = null;
         serverConnessi.Add(serverToInsert);
         args = new ServerEventArgs()
         {
             Server = server,
             Position = serverConnessi.IndexOf(serverToInsert)
         };
         EventHandler<ServerEventArgs> handler = ServerConnected;
         if (handler != null)
         {
             handler(this, args);
         }
     }
     else if (e.ProgressPercentage == ERROR)
     {
         ServerErrorEventsArgs args = (ServerErrorEventsArgs)e.UserState;
         EventHandler<ServerErrorEventsArgs> handler = ServerError;
         if (handler != null)
         {
             handler(this, args);
         }
     }
     else if (e.ProgressPercentage == PASSWORD_REQUIRED)
     {
         ServerEventArgs args = (ServerEventArgs)e.UserState;
         EventHandler<ServerEventArgs> handler = ServerAuthRequired;
         if (handler != null) { handler(this, args); }
     }
     else if (e.ProgressPercentage == PASSWORD_ERROR)
     {
         ServerErrorEventsArgs args = (ServerErrorEventsArgs)e.UserState;
         EventHandler<ServerErrorEventsArgs> handler = ServerError;
         if (handler != null) { handler(this, args); }
     }
 }
예제 #4
0
 internal void TransferCompleted(ServerConnection serverConnection, MyClipboard clipboardServer, bool isCopy)
 {
     if (isCopy)
     {
         clipboardClient = new MyClipboard(clipboardServer);
     }
     ServerTranferEventArgs args = new ServerTranferEventArgs
     {
         Server = serverConnection.Server,
         Position = serverConnessi.IndexOf(serverConnection),
         Copy = isCopy,
         Completed = true,
         Percentage = 100
     };
     EventHandler<ServerTranferEventArgs> handler = this.ServerTransferCompleted;
     if (handler != null)
     {
         handler(this, args);
     }
 }
예제 #5
0
        internal void TransferReportProgress(ServerConnection serverConnection, int percentage, bool isCopy)
        {
            ServerTranferEventArgs args = new ServerTranferEventArgs
            {
                Server = serverConnection.Server,
                Position = serverConnessi.IndexOf(serverConnection),
                Copy = isCopy,
                Completed = false,
                Percentage = percentage
            };

            EventHandler<ServerTranferEventArgs> handler = this.ServerTransferProgressChanged;
            if (handler != null)
            {
                handler(this, args);
            }
        }
예제 #6
0
 internal void ImpossibleToDeactive(ServerConnection serverConnection)
 {
     ServerErrorEventsArgs args = null;
     args = new ServerErrorEventsArgs()
     {
         Server = serverConnection.Server,
         Position = serverConnessi.IndexOf(serverConnection),
         ErrorCode = ServerErrorEventsArgs.CLIPBOARD_IN_ACTION
     };
     EventHandler<ServerErrorEventsArgs> handler = ServerError;
     if (handler != null)
     {
         handler(this, args);
     }
 }
예제 #7
0
 internal void DeactiveCompleted(ServerConnection serverConnection)
 {
     //inizializzo l'evento
     ServerEventArgs args = new ServerEventArgs()
     {
         Server = serverConnection.Server,
         Position = serverAttivoIndex
     };
     EventHandler<ServerEventArgs> handler = ServerDeactivated;
     if (handler != null)
     {
         handler(this, args);
     }
     //posso attivare il server su cui ho fatto switch che
     //l'ho salvato nella variabile serverToActiveIndex
     //quando ho chiamato il metodo IConnection.Active
     ServerConnection serverToActive = serverConnessi[serverToActiveIndex];
     Trace.TraceInformation("Server non attivo. Server: {0}:{1}:{2}", serverConnection.Server.Name, serverConnection.Server.IP, serverConnection.Server.ControlPort);
     setActive(serverToActive);
 }
예제 #8
0
 internal void ClosedByServerError(ServerConnection serverConnection)
 {
     ServerErrorEventsArgs args = null;
     int position = -1;
     position = serverConnessi.IndexOf(serverConnection);
     //inizializzo l'evento da inviare
     args = new ServerErrorEventsArgs()
     {
         Server = serverConnection.Server,
         Position = position,
         ErrorCode = ServerErrorEventsArgs.SERVER_ERROR
     };
     serverConnessi.Remove(serverConnection);
     if (serverConnessi.Count == 0)
     {
         started = false;
         serverAttivoIndex = -1;
     }
     EventHandler<ServerErrorEventsArgs> handler = ServerError;
     if (handler != null)
     {
         handler(this, args);
     }
     EventArgs argsRefresh = new EventArgs();
     EventHandler<EventArgs> handlerRefresh = RefreshConnections;
     if (handlerRefresh != null)
     {
         handlerRefresh(this, argsRefresh);
     }
     if (serverAttivoIndex == position && started)
     {
         ServerConnection serverToActive = serverConnessi[0];
         setActive(serverToActive);
     }
     else if (position < serverAttivoIndex)
     {//Perché nella lista potrebbe precederlo
         serverAttivoIndex--;
     }
 }
예제 #9
0
        internal void ClosedByNetworkError(ServerConnection serverConnection)
        {
            serverConnessi.Remove(serverConnection);
            serverAttivoIndex = -1;
            ServerErrorEventsArgs args = null;
            //inizializzo l'evento da inviare
            args = new ServerErrorEventsArgs()
            {
                Server = serverConnection.Server,
                Position = serverConnessi.IndexOf(serverConnection),
                ErrorCode = ServerErrorEventsArgs.NETWORK_ERROR
            };
            EventHandler<ServerErrorEventsArgs> handler = ServerError;
            if (handler != null)
            {
                handler(this, args);
            }

            while (serverConnessi.Count > 0)
            {
                serverConnessi[0].ForceToDisconnect();
                serverConnessi.RemoveAt(0);
            }

            EventArgs argsRefresh = new EventArgs();
            EventHandler<EventArgs> handlerRefresh = RefreshConnections;
            if (handlerRefresh != null)
            {
                handlerRefresh(this, argsRefresh);
            }
        }
예제 #10
0
 internal void Closed(ServerConnection serverConnection)
 {
     ServerEventArgs args = null;
     //inizializzo l'evento da inviare
     args = new ServerEventArgs()
     {
         Server = serverConnection.Server,
         Position = serverConnessi.IndexOf(serverConnection),
     };
     serverConnessi.Remove(serverConnection);
     if (serverConnessi.Count == 0)
     {
         started = false;
         serverAttivoIndex = -1;
     }
     EventHandler<ServerEventArgs> handler = ServerDisconnected;
     if (handler != null)
     {
         handler(this, args);
     }
     EventArgs argsRefresh = new EventArgs();
     EventHandler<EventArgs> handlerRefresh = RefreshConnections;
     if (handlerRefresh != null)
     {
         handlerRefresh(this, argsRefresh);
     }
 }