void fsdSession_ServerIdentificationReceived(object sender, DataReceivedEventArgs <PDUServerIdentification> e)
        {
            var msg = (UserClickedLoginMessage)e.UserData;

            uint          serialNum, serialNumLength, flags;
            StringBuilder volumename = new StringBuilder(256);
            StringBuilder fstype     = new StringBuilder(256);

            bool ok = GetVolumeInformation("C:\\", volumename, (uint)volumename.Capacity - 1, out serialNum, out serialNumLength, out flags, fstype, (uint)fstype.Capacity - 1);

            fsdSession.SendPDU(new PDUClientIdentification(msg.Callsign, fsdSession.ClientProperties.ClientID, fsdSession.ClientProperties.Name, fsdSession.ClientProperties.Version.Major, fsdSession.ClientProperties.Version.Minor, msg.Cid, ((int)serialNum).ToString(), null));
            fsdSession.SendPDU(new PDUAddPilot(msg.Callsign, msg.Cid, msg.Password, NetworkRating.OBS, ProtocolRevision.VatsimAuth, SimulatorType.MSFS95, msg.Realname));
            context.FSDIsConnected = true;
            context.Callsign       = msg.Callsign;
            context.Realname       = msg.Realname;
            context.CID            = msg.Cid;
            broker.Publish(new FSDConnectedMessage());
            broker.Subscribe(this, typeof(PositionReportMessage));
            broker.Subscribe(this, typeof(TextMessageSend));
            Logger.Trace("Connect done");
        }
        private void FSD_ServerIdentificationReceived(object sender, DataReceivedEventArgs <PDUServerIdentification> e)
        {
            FSD.SendPDU(new PDUClientIdentification(OurCallsign, FSD.GetClientKey(), "xPilot", mVersion.Major, mVersion.Minor, mConfig.VatsimId.Trim(), mSystemUID, null));

            if (mConnectInfo.ObserverMode)
            {
                FSD.SendPDU(new PDUAddATC(mConnectInfo.Callsign, mConfig.Name, mConfig.VatsimId.Trim(), mConfig.VatsimPassword.Trim(), NetworkRating.OBS, ProtocolRevision.VatsimAuth));
            }
            else
            {
                FSD.SendPDU(new PDUAddPilot(OurCallsign, mConfig.VatsimId.Trim(), mConfig.VatsimPassword.Trim(), NetworkRating.OBS, ProtocolRevision.VatsimAuth, SimulatorType.XPlane, mConfig.NameWithAirport));
            }

            RequestPublicIP();
            SendPositionUpdate();

            mPositionUpdateTimer.Interval = mConnectInfo.ObserverMode ? 15000 : 5000;
            mPositionUpdateTimer.Start();
        }