int CAuxHandle::ProcessNotifyMsg(char* pCodeBuff,int iCodeLen) { TMQHeadInfo* pMQHeadInfo = (TMQHeadInfo*)pCodeBuff; if(pMQHeadInfo->m_ucCmd == TMQHeadInfo::CMD_NEW_TCP_SOCKET) { int iSocket = pMQHeadInfo->m_iSuffix; if (iSocket < 0) return -1; int iListenPort = pMQHeadInfo->m_usSrcListenPort; int iNewSuffix = CreateSocketNode(iSocket,TSocketNode::TCP_CLIENT_SOCKET, pMQHeadInfo->m_unClientIP,pMQHeadInfo->m_usClientPort,iListenPort); if(iNewSuffix < 0) return -2; } else if(pMQHeadInfo->m_ucCmd == TMQHeadInfo::CMD_NEW_UDP_SOCKET) { int iSocket = pMQHeadInfo->m_iSuffix; if (iSocket < 0) return -1; int iListenPort = pMQHeadInfo->m_usSrcListenPort; int iNewSuffix = CreateSocketNode(iSocket,TSocketNode::UDP_SOCKET,0,0,iListenPort); if(iNewSuffix < 0) return -2; } else if(pMQHeadInfo->m_ucCmd == TMQHeadInfo::CMD_CCS_NOTIFY_DISCONN) { TSocketNode* pSocketNode = &m_pSocket[pMQHeadInfo->m_iSuffix]; if (pSocketNode->m_iSocket < 0) return -1; if(pSocketNode->m_sSocketType == TSocketNode::TCP_CLIENT_SOCKET) { if((pSocketNode->m_unClientIP != pMQHeadInfo->m_unClientIP) || (pSocketNode->m_usClientPort != pMQHeadInfo->m_usClientPort)) { return -2; } char szIpClient[32]; HtoP(pSocketNode->m_unClientIP, szIpClient); WARN("iSocketSuffix %d fd %d CMD_CCS_NOTIFY_DISCONN %s:%d.[%s:%d]\n", pMQHeadInfo->m_iSuffix, pSocketNode->m_iSocket, szIpClient,(int)pSocketNode->m_usClientPort,__FILE__,__LINE__); ClearSocketNode(pMQHeadInfo->m_iSuffix); } } else if (TMQHeadInfo::CMD_CCS_MCP_NOTIFY_DISCONN == pMQHeadInfo->m_ucCmd) { TSocketNode* pSocketNode = &m_pSocket[pMQHeadInfo->m_iSuffix]; char szIpCmd[32]; HtoP(ntohl(pMQHeadInfo->m_unClientIP), szIpCmd); ERR("iSocketSuffix %d fd %d CMD_CCS_MCP_NOTIFY_DISCONN close port %d %s:%d.[%s:%d]\n", (int)pMQHeadInfo->m_iSuffix, (int)pSocketNode->m_iSocket, (int)pMQHeadInfo->m_usClosePort, szIpCmd,(int)pMQHeadInfo->m_usClientPort,__FILE__,__LINE__); pMQHeadInfo->m_ucCmd = TMQHeadInfo::CMD_CCS_THREAD_NOTIFY_DISCONN; NotifyAllThread(pCodeBuff, iCodeLen); } else if (TMQHeadInfo::CMD_CCS_THREAD_NOTIFY_DISCONN == pMQHeadInfo->m_ucCmd) { for (int i=0; i<m_pMainConfig->MAX_SOCKET_NUM; ++i) { TSocketNode* pSocketNode = &m_pSocket[i]; if (pSocketNode->m_usListenPort == pMQHeadInfo->m_usClosePort) { char szIpClient[32], szIpCmd[32]; HtoP(ntohl(pSocketNode->m_unClientIP), szIpClient); HtoP(ntohl(pMQHeadInfo->m_unClientIP), szIpCmd); ERR("iSocketSuffix %d fd %d CMD_CCS_THREAD_NOTIFY_DISCONN cmd[%s:%d] close port %d client [%s:%d].[%s:%d]\n", i, (int)pSocketNode->m_iSocket, szIpCmd,(int)pMQHeadInfo->m_usClientPort, (int)pMQHeadInfo->m_usClosePort, szIpClient,(int)pSocketNode->m_usClientPort,__FILE__,__LINE__); ClearSocketNode(i); } } } return 0; }
/*****************************************************************************\ * xxxGetMenuBarInfo() * * This succeeds if the menu/menu item exists. * * Parameters: * pwnd window * idObject this can be OBJID_MENU, OBJID_SYSMENU, or OBJID_CLIENT * idItem which thing do we need info on? 0..cItems. 0 indicates * the menu itself, 1 is the first item on the menu... * pmbi Pointer to a MENUBARINFO structure that gets filled in * \*****************************************************************************/ BOOL WINAPI xxxGetMenuBarInfo(PWND pwnd, long idObject, long idItem, PMENUBARINFO pmbi) { PMENU pMenu; int cBorders; PITEM pItem; PPOPUPMENU ppopup; CheckLock(pwnd); /* * Validate menubarinfo structure */ if (pmbi->cbSize != sizeof(MENUBARINFO)) { RIPERR1(ERROR_INVALID_PARAMETER, RIP_WARNING, "MENUBARINFO.cbSize %d is wrong", pmbi->cbSize); return FALSE; } /* * Initialize the fields */ SetRectEmpty(&pmbi->rcBar); pmbi->hMenu = NULL; pmbi->hwndMenu = NULL; pmbi->fBarFocused = FALSE; pmbi->fFocused = FALSE; /* * Get the menu handle we will deal with. */ if (idObject == OBJID_MENU) { int cBorders; if (TestWF(pwnd, WFCHILD) || !pwnd->spmenu) return FALSE; pMenu = pwnd->spmenu; if (!pMenu) return FALSE; // If we have an item, is it in the valid range? if ((idItem < 0) || ((DWORD)idItem > pMenu->cItems)) return FALSE; /* * Menu handle */ pmbi->hMenu = PtoHq(pMenu); /* * Menu rect */ if (pMenu->cxMenu && pMenu->cyMenu) { if (!idItem) { cBorders = GetWindowBorders(pwnd->style, pwnd->ExStyle, TRUE, FALSE); pmbi->rcBar.left = pwnd->rcWindow.left + cBorders * SYSMET(CXBORDER); pmbi->rcBar.top = pwnd->rcWindow.top + cBorders * SYSMET(CYBORDER); if (TestWF(pwnd, WFCPRESENT)) { pmbi->rcBar.top += (TestWF(pwnd, WEFTOOLWINDOW) ? SYSMET(CYSMCAPTION) : SYSMET(CYCAPTION)); } pmbi->rcBar.right = pmbi->rcBar.left + pMenu->cxMenu; pmbi->rcBar.bottom = pmbi->rcBar.top + pMenu->cyMenu; } else { pItem = pMenu->rgItems + idItem - 1; pmbi->rcBar.left = pwnd->rcWindow.left + pItem->xItem; pmbi->rcBar.top = pwnd->rcWindow.top + pItem->yItem; pmbi->rcBar.right = pmbi->rcBar.left + pItem->cxItem; pmbi->rcBar.bottom = pmbi->rcBar.top + pItem->cyItem; } } /* * Are we currently in app menu bar mode? */ ppopup = GetpGlobalPopupMenu(pwnd); if (ppopup && ppopup->fHasMenuBar && !ppopup->fIsSysMenu && (ppopup->spwndNotify == pwnd)) { // Yes, we are. pmbi->fBarFocused = TRUE; if (!idItem) { pmbi->fFocused = TRUE; } else if (ppopup->ppopupmenuRoot->posSelectedItem == (UINT)idItem-1) { pmbi->fFocused = TRUE; UserAssert(ppopup->ppopupmenuRoot); pmbi->hwndMenu = HW(ppopup->ppopupmenuRoot->spwndNextPopup); } } } else if (idObject == OBJID_SYSMENU) { if (!TestWF(pwnd, WFSYSMENU)) return FALSE; pMenu = xxxGetSysMenu(pwnd, FALSE); if (!pMenu) return FALSE; // If we have an item, is it in the valid range? if ((idItem < 0) || ((DWORD)idItem > pMenu->cItems)) return FALSE; pmbi->hMenu = PtoHq(pMenu); /* * Menu rect */ if (_HasCaptionIcon(pwnd)) { // The menu and single item take up the same space cBorders = GetWindowBorders(pwnd->style, pwnd->ExStyle, TRUE, FALSE); pmbi->rcBar.left = pwnd->rcWindow.left + cBorders * SYSMET(CXBORDER); pmbi->rcBar.top = pwnd->rcWindow.top + cBorders * SYSMET(CYBORDER); pmbi->rcBar.right = pmbi->rcBar.left + (TestWF(pwnd, WEFTOOLWINDOW) ? SYSMET(CXSMSIZE) : SYSMET(CXSIZE)); pmbi->rcBar.bottom = pmbi->rcBar.top + (TestWF(pwnd, WEFTOOLWINDOW) ? SYSMET(CYSMSIZE) : SYSMET(CYSIZE)); } /* * Are we currently in system menu bar mode? */ ppopup = GetpGlobalPopupMenu(pwnd); if (ppopup && ppopup->fHasMenuBar && ppopup->fIsSysMenu && (ppopup->spwndNotify == pwnd)) { // Yes, we are. pmbi->fBarFocused = TRUE; if (!idItem) { pmbi->fFocused = TRUE; } else if (ppopup->ppopupmenuRoot->posSelectedItem == (UINT)idItem - 1) { pmbi->fFocused = TRUE; UserAssert(ppopup->ppopupmenuRoot); pmbi->hwndMenu = HW(ppopup->ppopupmenuRoot->spwndNextPopup); } } } else if (idObject == OBJID_CLIENT) { HMENU hMenu; hMenu = (HMENU)xxxSendMessage(pwnd, MN_GETHMENU, 0, 0); pMenu = HtoP(hMenu); if (!pMenu) return FALSE; // If we have an item, is it in the valid range? if ((idItem < 0) || ((DWORD)idItem > pMenu->cItems)) return FALSE; pmbi->hMenu = hMenu; if (!idItem) { pmbi->rcBar = pwnd->rcClient; } else { pItem = pMenu->rgItems + idItem - 1; pmbi->rcBar.left = pwnd->rcClient.left + pItem->xItem; pmbi->rcBar.top = pwnd->rcClient.top + pItem->yItem; pmbi->rcBar.right = pmbi->rcBar.left + pItem->cxItem; pmbi->rcBar.bottom = pmbi->rcBar.top + pItem->cyItem; } /* * Are we currently in popup mode with us as one of the popups * showing? */ ppopup = ((PMENUWND)pwnd)->ppopupmenu; if (ppopup && (ppopup->ppopupmenuRoot == GetpGlobalPopupMenu(pwnd))) { pmbi->fBarFocused = TRUE; if (!idItem) { pmbi->fFocused = TRUE; } else if ((UINT)idItem == ppopup->posSelectedItem + 1) { pmbi->fFocused = TRUE; pmbi->hwndMenu = HW(ppopup->spwndNextPopup); } } } else { return FALSE; } return TRUE; }