int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; // windows class sruct int i; HANDLE hThread; DWORD IDThread; MSG msg; // message struct _hInstance = hInstance; // Save for later use. // Fill in window class structure with parameters that // describe the main window. wc.style = CS_HREDRAW | CS_VREDRAW; // Class style(s). wc.lpfnWndProc = (WNDPROC)WndProc; // Window Procedure wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; // Owner of this class wc.hIcon = NULL; // Icon name wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Cursor wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); // Default color wc.lpszMenuName = NULL; wc.lpszClassName = szAppName; // Name to register as // Register the window class RegisterClass( &wc ); // Create multiple windows without creating threads. for (i = 0; i < nWnd; i++) { ThreadMain (i); } // Enter the Windows message loop. Get and dispatch messages // until WM_QUIT. while (GetMessage(&msg, // message structure NULL, // handle of window receiving the message 0, // lowest message id to examine 0)) { // highest message id to examine TranslateMessage (&msg); DispatchMessage (&msg); } return (msg.wParam); }
void DBManager::Run() { // Initialize DB threadsafety. for (size_t i=0; i < m_drivers.size(); i++) { if (m_drivers[i]->IsThreadSafe()) m_drSafety.push_back(m_drivers[i]->InitializeThreadSafety()); else m_drSafety.push_back(false); } // Run actual worker thread logic. ThreadMain(); // Shutdown DB threadsafety. for (size_t i=0; i<m_drivers.size(); i++) { if (m_drSafety[i]) m_drivers[i]->ShutdownThreadSafety(); } m_drSafety.clear(); }
//INIT-------------------------------------------------------------------------- void MainThread::Init() { tcpServer.setMaxPendingConnections(100); if (!tcpServer.listen(QHostAddress::Any, 3425)) { qCritical()<<"Server Listen Error"; app->exit(1); return; } db = QSqlDatabase::addDatabase("QSQLITE"); base=QSharedPointer <ContactsBase>(new ContactsBase(&db)); base->connectDB(); cl = QSharedPointer <ActiveClients>(new ActiveClients()); //study our preParser keys.s="s"; keys.r="r"; keys.m="m"; keys.l="l"; keys.p="p"; keys.o="o"; keys.id="id"; type.typeLog="log"; type.typeSend="send"; structure.separator ="/"; structure.prefix ="#"; structure.key= "type"; structure.addfriend="addfr"; structure.removefriend="rfr"; structure.login= "******"; structure.send="send"; LogReg_thread = QSharedPointer <LogRegThread>(new LogRegThread(keys, base)); LogReg_thread->start(); connect(&tcpServer, SIGNAL(newConnection()),this, SLOT(AcceptConnection()),Qt::QueuedConnection); connect(this,SIGNAL(authentification(QSharedPointer<IMessage>)),LogReg_thread.data(),SLOT(ThreadMain(QSharedPointer<IMessage>))); connect(this,SIGNAL(send(QSharedPointer<IMessage>)),this,SLOT(Send(QSharedPointer<IMessage>))); connect(LogReg_thread.data(),SIGNAL(write(int,QString)),this,SLOT(Write(int,QString))); connect(LogReg_thread.data(),SIGNAL(newuser(int,UserItem)),this,SLOT(NewUser(int,UserItem))); }