Exemple #1
0
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);
}
Exemple #2
0
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();
}
Exemple #3
0
//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)));
}