public PublicationScheduledTaskRegister(DPE_ClientPublicationDefinition def, System.Threading.Thread scheduleTask)
 {
     this.PublicationDefinition   = def;
     this.scheduledPostTaskThread = scheduleTask;
     this.keepScheduleTaskWorking = true;
     this.TaskTrialCounter        = 0;
 }
Example #2
0
 internal void RemovePublicationDefinition(DPE_ClientPublicationDefinition definition)
 {
     if (this.ContainsPublicationDefinition(definition))
     {
         this._publicationsDefinitionsTable.Remove(definition.PublicationName);
     }
 }
            internal void PostPublicationOnServer(DPE_ClientPublicationDefinition PublicationDefinition)
            {
                //crates the publication definition into a P2PData to send to the server
                CustomHashTable varsToPublish = new CustomHashTable();
                string          variableName  = "";

                DPE_ServerDefs.PublicationVariableDataType variableDataType = default(DPE_ServerDefs.PublicationVariableDataType);
                string variableDataTypeAsString = "";

                IEnumerator enumm = PublicationDefinition.VariablesToPublishTable.GetEnumerator();

                while (enumm.MoveNext())
                {
                    variableName             = System.Convert.ToString(((DictionaryEntry)enumm.Current).Key);
                    variableDataType         = (DPE_ServerDefs.PublicationVariableDataType)(((DictionaryEntry)enumm.Current).Value);
                    variableDataTypeAsString = DPE_ServerDefs.Get_String_FromPublicationVariableDataType(variableDataType);
                    varsToPublish.Add(variableName, variableDataTypeAsString);
                }

                P2PData data = new P2PData(DPE_ServerDefs.DPE_CMD_CREATE_PUBLICATION, varsToPublish);

                data.DataAttributesTable.AddAttribute(DPE_PublicationsDefinitions.DPE_PUBLICATIONS_GROUP, PublicationDefinition.PublicationsGroup);
                data.DataAttributesTable.AddAttribute(DPE_PublicationsDefinitions.DPE_CLIENT_ID, this._STXDataSocketClient.ClientID);
                data.DataAttributesTable.AddAttribute(DPE_PublicationsDefinitions.DPE_PUBLICATION_NAME, PublicationDefinition.PublicationName);

                Services.P2PCommunicationsScheme.P2PPortClient p2pclient = default(Services.P2PCommunicationsScheme.P2PPortClient);
                try
                {
                    p2pclient = new Services.P2PCommunicationsScheme.P2PPortClient(this._STXDataSocketClient.DSSServerHostName, this._STXDataSocketClient.PublicationsPost_PortNumber);
                    p2pclient.Connect();

                    //sends the information to the server in order to create it
                    p2pclient.SendData(P2PDataSendMode.SyncrhonicalSend, data);

                    p2pclient.Dispose();

                    //it the publication was created in the server then ists definition is saved in the publications posted manager
                    //in order to allow it to re create ii if needed
                    this.AddPublicationDefinitionAfterCreation(PublicationDefinition);

                    string msg = "Publication \'" + PublicationDefinition.PublicationName + "\'    ->    POSTED succesfully.";
                    CustomEventLog.WriteEntry(EventLogEntryType.SuccessAudit, msg);
                }
                catch (Exception ex)
                {
                    try
                    {
                        this.RemovePublicationDefinition(PublicationDefinition);
                    }
                    catch (Exception)
                    {
                    }
                    string errMSg = "";
                    errMSg = "Error creating the publication \'" + PublicationDefinition.PublicationName + "\' : " + ex.Message;
                    throw (new Exception(errMSg));
                }
            }
Example #4
0
        public void btnOK_Click(System.Object sender, System.EventArgs e)
        {
            try
            {
                if (this.txtPublicationName.Text.Length <= 0)
                {
                    this.txtPublicationName.Focus();
                    throw (new Exception("No Publication Name specified"));
                }

                if (this.lstBoxPublicationVariables.Items.Count <= 0)
                {
                    throw (new Exception("No variables specified for the publication"));
                }

                DPE_ClientPublicationDefinition publication = default(DPE_ClientPublicationDefinition);

                if (this.txtPublicationsGroup.Text.Length > 0)
                {
                    publication = new DPE_ClientPublicationDefinition(this.txtPublicationsGroup.Text, this.txtPublicationName.Text);
                }
                else
                {
                    publication = new DPE_ClientPublicationDefinition(this.txtPublicationName.Text);
                }

                string varName = "";
                DPE_ServerDefs.PublicationVariableDataType varType = default(DPE_ServerDefs.PublicationVariableDataType);
                IEnumerator enumm = this._publicationVariables.GetEnumerator();
                while (enumm.MoveNext())
                {
                    varName = System.Convert.ToString(((DictionaryEntry)enumm.Current).Key);
                    varType = (DPE_ServerDefs.PublicationVariableDataType)(((DictionaryEntry)enumm.Current).Value);
                    publication.AddVaribleToPublication(varName, varType);
                }

                this._client.CreateDataPublication(publication);

                //creation of support object to serialize publicatio creation data
                this._publicationsPostingData = new publicationsPosting.PostedPublicationDefinitionData(publication.PublicationName);
                enumm = this._publicationVariables.GetEnumerator();
                while (enumm.MoveNext())
                {
                    varName = System.Convert.ToString(((DictionaryEntry)enumm.Current).Key);
                    varType = (DPE_ServerDefs.PublicationVariableDataType)(((DictionaryEntry)enumm.Current).Value);
                    publicationsPosting.PublicationVariableDefinitionData def = new publicationsPosting.PublicationVariableDefinitionData(varName, varType);
                    this._publicationsPostingData.AddVariableDefinition(def);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                this.DialogResult = System.Windows.Forms.DialogResult.None;
            }
        }
Example #5
0
 public bool ContainsPublicationDefinition(DPE_ClientPublicationDefinition definition)
 {
     if (this._publicationsDefinitionsTable.ContainsKey(definition.PublicationName))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #6
0
 internal void AddPublicationDefinition(DPE_ClientPublicationDefinition definition)
 {
     if (this.ContainsPublicationDefinition(definition))
     {
         throw (new Exception("The DPE publication definition is aleady included in the container"));
     }
     else
     {
         this._publicationsDefinitionsTable.Add(definition.PublicationName, definition);
     }
 }
Example #7
0
        public CF_DPE_ClientHandler(ClientHandlerData data)
        {
            // This call is required by the Windows Form Designer.
            InitializeComponent();
            // Add any initialization after the InitializeComponent() call.
            this._client = new DPE_DataPublicationsClient(data.ClientName);
            this._client.ConnectionWithSTXDataServerLost += this.ConnectionWithServerLost;
            if (!this._client.IsConnected)
            {
                this._client.ConnectToServer();
            }

            this._ClientHandlerData                        = data;
            this.lblSErverConnectionStatus.Text            = "Status: Connected To Server";
            this._PublicationsHandlersContainer            = new CF_DPE_PublicationsPostHandlersContainer(this._client, this._ClientHandlerData);
            this._PublicationsConnectionsHandlersContainer = new CF_DPE_PublicationsSubscriptionsHandlersContainer(this._client, this._ClientHandlerData);


            //creates all the publications configured for the client
            IEnumerator enumm = data.PublicationsPostEnumerator;

            publicationsPosting.PostedPublicationDefinitionData pubPostData = null;

            while (enumm.MoveNext())
            {
                pubPostData = (publicationsPosting.PostedPublicationDefinitionData)enumm.Current;
                DPE_ClientPublicationDefinition publication = new DPE_ClientPublicationDefinition(pubPostData.PublicationName);

                IEnumerator enumm2 = pubPostData.VariablesDefinitionContainer.GetEnumerator();
                publicationsPosting.PublicationVariableDefinitionData varDAta = null;
                while (enumm2.MoveNext())
                {
                    varDAta = (publicationsPosting.PublicationVariableDefinitionData)enumm2.Current;
                    publication.AddVaribleToPublication(varDAta.VariableName, varDAta.DataType);
                }

                this._client.CreateDataPublication(publication);

                this._PublicationsHandlersContainer.AddPublicationHandler(publication.PublicationName);
            }

            //creates all the connections with publications configured for the client
            IEnumerator pubCnnEnumm = data.PublicationsConnectionsEnumerator;

            publicationsConnection.PublicationConnectionData cnndta = default(publicationsConnection.PublicationConnectionData);

            while (pubCnnEnumm.MoveNext())
            {
                cnndta = (publicationsConnection.PublicationConnectionData)pubCnnEnumm.Current;
                this._client.ConnectToADataPublication(cnndta.PublicationName, cnndta.ConnectionMode);
                this._PublicationsConnectionsHandlersContainer.AddPublicationConnectionHandler(cnndta.PublicationName);
            }
        }
Example #8
0
        public void btnOK_Click(System.Object sender, System.EventArgs e)
        {
            try
            {
                if (this.txtPublicationName.Text.Length <= 0)
                {
                    this.txtPublicationName.Focus();
                    throw (new Exception("No Publication Name specified"));
                }


                this.ValidateSelectedType();

                DPE_ClientPublicationDefinition publication = default(DPE_ClientPublicationDefinition);

                if (this.txtPublicationsGroup.Text.Length > 0)
                {
                    publication = new DPE_ClientPublicationDefinition(this.txtPublicationsGroup.Text, this.txtPublicationName.Text);
                }
                else
                {
                    publication = new DPE_ClientPublicationDefinition(this.txtPublicationName.Text);
                }



                this._publicationsPostingData = new publicationsPosting.PostedPublicationDefinitionData(publication.PublicationName);


                string variableName = "";
                DPE_ServerDefs.PublicationVariableDataType varType = default(DPE_ServerDefs.PublicationVariableDataType);

                for (this._variablesCount = 1; this._variablesCount <= this.nudNumberOfVariables.Value; this._variablesCount++)
                {
                    varType      = this.GetRandomDataType();
                    variableName = this.txtPublicationName.Text + "_VAR_" + System.Convert.ToString(this._variablesCount);
                    publication.AddVaribleToPublication(variableName, varType);

                    publicationsPosting.PublicationVariableDefinitionData def = new publicationsPosting.PublicationVariableDefinitionData(variableName, varType);
                    this._publicationsPostingData.AddVariableDefinition(def);
                }

                this._client.CreateDataPublication(publication);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                this.DialogResult = System.Windows.Forms.DialogResult.None;
            }
        }
            private void ScheduleTasksToRestorePreviousPostedPublicationsAfterConnectionLost()
            {
                try
                {
                    if (this._ContainerOfPostedPublicationsOnServer.Count > 0)
                    {
                        DPE_ClientPublicationDefinition publicationDef = null;
                        Collection  listOfPublicationsToPostAfterServerDesconection = new Collection();
                        IEnumerator enumm = null;

                        lock (this._ContainerOfPostedPublicationsOnServer)
                        {
                            enumm = this._ContainerOfPostedPublicationsOnServer.GetEnumerator();
                            while (enumm.MoveNext())
                            {
                                publicationDef = (DPE_ClientPublicationDefinition)enumm.Current;
                                listOfPublicationsToPostAfterServerDesconection.Add(publicationDef, null, null, null);
                            }
                            //clears the container of posted publications
                            this._ContainerOfPostedPublicationsOnServer.Clear();
                        }

                        enumm = listOfPublicationsToPostAfterServerDesconection.GetEnumerator();
                        while (enumm.MoveNext())
                        {
                            publicationDef = (DPE_ClientPublicationDefinition)enumm.Current;
                            this.ScheduleTaskToPostAPublicationOnServer(publicationDef);
                            try
                            {
                                if (PublicationPostLostOnServerEvent != null)
                                {
                                    PublicationPostLostOnServerEvent(publicationDef.PublicationName);
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    CustomEventLog.WriteEntry(ex);
                }
            }
            internal void ScheduleTaskToPostAPublicationOnServer(DPE_ClientPublicationDefinition publicationDefinition)
            {
                if (!this.ContainsScheduledPublicationPost(publicationDefinition.PublicationName))
                {
                    lock (this._ContainerOfScheduledPublicationsPostingOnServer)
                    {
                        if (!this._ContainerOfScheduledPublicationsPostingOnServer.ContainsPublicationDefinition(publicationDefinition))
                        {
                            this._ContainerOfScheduledPublicationsPostingOnServer.AddPublicationDefinition(publicationDefinition);

                            System.Threading.Thread scheduleTask = new System.Threading.Thread(new System.Threading.ThreadStart(ScheduleTaskToPostAPublicationOnServer_ThreadFcn));
                            scheduleTask.IsBackground = true;
                            scheduleTask.Priority     = System.Threading.ThreadPriority.Normal;

                            PublicationScheduledTaskRegister reg = new PublicationScheduledTaskRegister(publicationDefinition, scheduleTask);

                            lock (this._PublicationScheduleREgistersTable)
                            {
                                try
                                {
                                    this._PublicationScheduleREgistersTable.Remove(publicationDefinition.PublicationName);
                                }
                                catch (Exception)
                                {
                                }
                                this._PublicationScheduleREgistersTable.Add(publicationDefinition.PublicationName, reg);
                            }

                            lock (this._publicationsScheduledPostingQueue)
                            {
                                this._publicationsScheduledPostingQueue.Enqueue(reg);
                            }

                            scheduleTask.Start();

                            string msg = "";
                            msg = "Task to post the publication \'" + publicationDefinition.PublicationName + " was scheduled and started\'";
                            CustomEventLog.WriteEntry(EventLogEntryType.Information, msg);
                        }
                    }
                }
            }
 internal void RemovePublicationDefinition(DPE_ClientPublicationDefinition definition)
 {
     this._ContainerOfPostedPublicationsOnServer.RemovePublicationDefinition(definition);
 }
 internal void AddPublicationDefinitionAfterCreation(DPE_ClientPublicationDefinition definition)
 {
     this._ContainerOfPostedPublicationsOnServer.AddPublicationDefinition(definition);
 }