diff -r 000000000000 -r 7f656887cf89 plugins/consoles/rcons/server/win32/console_host.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/consoles/rcons/server/win32/console_host.cpp Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,101 @@ +// console_host.cpp +// +// Copyright (c) 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Accenture - Initial contribution +// + +#include "stdafx.h" +#include "resource.h" +#include "Misc.h" +#include "Window.h" +#include "ConsoleWindow.h" +#include +#include "Server.h" + +void InitWinSock() + { + WORD version = MAKEWORD (2, 2); + WSADATA wsaData; + + if (WSAStartup(version, &wsaData) == SOCKET_ERROR) + { + throw KExceptionWinSockStartupFailed; + } + + if (version != wsaData.wVersion) + { + throw KExceptionWinSockVersionInvalid; + } + } + +int APIENTRY WinMain(HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nCmdShow) + { + MSG msg; + HACCEL hAccelTable; + CServer* server; + try + { + hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_CONSOLE_HOST); + InitWinSock(); + server = CServer::New(hInstance); + } + catch (TException aException) + { + LPCTSTR errorTitle = TEXT("Remote Console Server Initialization Error"); + LPCTSTR errorText = NULL; + switch (aException) + { + case KExceptionNoMemory: + errorText = TEXT("Not enough memory to initialize server."); + break; + case KExceptionWindowConstructFailed: + errorText = TEXT("Failed to construct server window."); + break; + case KExceptionWinSockStartupFailed: + errorText = TEXT("Failed to initialize WINSOCK."); + break; + case KExceptionWinSockVersionInvalid: + errorText = TEXT("Invalid WINSOCK version."); + break; + case KExceptionSocketConstructFailed: + errorText = TEXT("Failed to construct server socket."); + break; + default: + errorText = TEXT("Unknown error."); + break; + } + MessageBox(NULL, errorText, errorTitle, MB_OK); + WSACleanup(); + return 0; + } + + while (GetMessage(&msg, NULL, 0, 0)) + { + try + { + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + catch (TException aException) + { + server->HandleException(aException); + } + } + + delete server; + WSACleanup(); + + return msg.wParam; + }