예제 #1
0
파일: Nucleus.cs 프로젝트: mxslcn/uITron3
        public ER CreateMailbox(ID mbxid, ref T_CMBX pk_cmbx, out ID p_mbxid)
        {
            int i;

            //if (pk_cmbx == null)
            //	return ER.E_PAR;

            if (mbxid == ID.ID_AUTO)
            {
                //if (p_mbxid == 0)
                //	return ER.E_PAR;

                mbxid.Value = 1;

                for (i = 0; ; i++)
                {
                    if (i >= m_MailboxTable.Count)
                    {
                        m_MailboxTable.Add(new Mailbox(mbxid, ref pk_cmbx, this));
                        break;
                    }

                    if (mbxid == m_MailboxTable[i].MbxID)
                    {
                        mbxid.Value++;
                    }
                    else
                    {
                        m_MailboxTable.Insert(i, new Mailbox(mbxid, ref pk_cmbx, this));
                        break;
                    }
                }
                p_mbxid = mbxid;
            }
            else
            {
                ID tmpid;

                p_mbxid = ID.NULL;

                for (i = 0; i < m_MailboxTable.Count; i++)
                {
                    tmpid = m_MailboxTable[i].MbxID;

                    if (mbxid == tmpid)
                    {
                        return(ER.E_OBJ);
                    }
                    else if (mbxid < tmpid)
                    {
                        break;
                    }
                }
                m_MailboxTable.Insert(i, new Mailbox(mbxid, ref pk_cmbx, this));
            }

            return(ER.E_OK);
        }
예제 #2
0
파일: Mailbox.cs 프로젝트: h7ga40/uITron3
 public Mailbox(ID mbxid, ref T_CMBX pk_cmbx, Nucleus pNucleus)
 {
     m_MbxID = mbxid;
     m_cmbx = pk_cmbx;
     m_Nucleus = pNucleus;
 }
예제 #3
0
파일: Itron.cs 프로젝트: h7ga40/uITron3
        public ER cre_mbx(ID mbxid, ref T_CMBX pk_cmbx, out ID p_mbxid)
        {
            ER Result = ER.E_NOEXS;

            p_mbxid = ID.NULL;

            if (g_Kernel == null)
                return ER.E_DLT;

            g_Kernel.LockCPU();
            try {
                Result = g_Kernel.Nucleus.CreateMailbox(mbxid, ref pk_cmbx, out p_mbxid);
            }
            finally {
                g_Kernel.UnlockCPU();
            }

            return Result;
        }
예제 #4
0
파일: Mailbox.cs 프로젝트: mxslcn/uITron3
 public Mailbox(ID mbxid, ref T_CMBX pk_cmbx, Nucleus pNucleus)
 {
     m_MbxID   = mbxid;
     m_cmbx    = pk_cmbx;
     m_Nucleus = pNucleus;
 }
예제 #5
0
파일: Nucleus.cs 프로젝트: h7ga40/uITron3
        public ER CreateMailbox(ID mbxid, ref T_CMBX pk_cmbx, out ID p_mbxid)
        {
            int i;

            //if (pk_cmbx == null)
            //	return ER.E_PAR;

            if (mbxid == ID.ID_AUTO) {
                //if (p_mbxid == 0)
                //	return ER.E_PAR;

                mbxid.Value = 1;

                for (i = 0; ; i++) {
                    if (i >= m_MailboxTable.Count) {
                        m_MailboxTable.Add(new Mailbox(mbxid, ref pk_cmbx, this));
                        break;
                    }

                    if (mbxid == m_MailboxTable[i].MbxID) {
                        mbxid.Value++;
                    }
                    else {
                        m_MailboxTable.Insert(i, new Mailbox(mbxid, ref pk_cmbx, this));
                        break;
                    }
                }
                p_mbxid = mbxid;
            }
            else {
                ID tmpid;

                p_mbxid = ID.NULL;

                for (i = 0; i < m_MailboxTable.Count; i++) {
                    tmpid = m_MailboxTable[i].MbxID;

                    if (mbxid == tmpid) {
                        return ER.E_OBJ;
                    }
                    else if (mbxid < tmpid) {
                        break;
                    }
                }
                m_MailboxTable.Insert(i, new Mailbox(mbxid, ref pk_cmbx, this));
            }

            return ER.E_OK;
        }