/*-------------------------------------------------------------------------*/ THREAD(StartupInit, arg) { NutThreadSetPriority(5); NetworkInit(); initialized = true; NutThreadExit(); }
int NetworkStartGame (void) { int i, bAutoRun; if (gameStates.multi.nGameType >= IPX_GAME) { Assert (FRAME_INFO_SIZE < DATALIMIT); if (!networkData.bActive) { ExecMessageBox (NULL, NULL, 1, TXT_OK, TXT_IPX_NOT_FOUND); return 0; } } NetworkInit (); ChangePlayerNumTo (0); if (NetworkFindGame ()) { ExecMessageBox (NULL, NULL, 1, TXT_OK, TXT_NET_FULL); return 0; } bAutoRun = InitAutoNetGame (); if (0 > (i = NetworkGetGameParams (bAutoRun))) return 0; gameData.multiplayer.nPlayers = 0; netGame.difficulty = gameStates.app.nDifficultyLevel; netGame.gameMode = mpParams.nGameMode; netGame.gameStatus = NETSTAT_STARTING; netGame.nNumPlayers = 0; netGame.nMaxPlayers = gameData.multiplayer.nMaxPlayers; netGame.nLevel = mpParams.nLevel; netGame.protocolVersion = MULTI_PROTO_VERSION; strcpy (netGame.szGameName, mpParams.szGameName); networkData.nStatus = NETSTAT_STARTING; // Have the network driver initialize whatever data it wants to // store for this netgame. // For mcast4, this randomly chooses a multicast session and port. // Clients subscribe to this address when they call // IpxHandleNetGameAuxData. IpxInitNetGameAuxData (netGame.AuxData); NetworkSetGameMode (netGame.gameMode); d_srand (TimerGetFixedSeconds ()); netGame.nSecurity = d_rand (); // For syncing Netgames with tPlayer packets if (NetworkSelectPlayers (bAutoRun)) { StartNewLevel (netGame.nLevel, 0); ResetAllPlayerTimeouts (); return 1; } else { gameData.app.nGameMode = GM_GAME_OVER; return 0; } }
int CTracker::Query (void) { CMenu menu (3); int i; NetworkInit (); if (!RequestServerList ()) return 0; menu.AddGauge (" ", -1, 1000); menu.AddText ("", 0); menu.AddText ("(Press Escape to cancel)", 0); menu.Top ()->m_bCentered = 1; nQueryTimeout = SDL_GetTicks (); do { i = menu.Menu (NULL, "Looking for Trackers", TrackerPoll); } while (i >= 0); return i; }
static void mqtt_client_thread(void *pvParameters) { char *payload = NULL; MQTTClient client; Network network; int rc = 0; char clientID[32] = {0}; uint32_t count = 0; ESP_LOGI(TAG, "ssid:%s passwd:%s sub:%s qos:%u pub:%s qos:%u pubinterval:%u payloadsize:%u", CONFIG_WIFI_SSID, CONFIG_WIFI_PASSWORD, CONFIG_MQTT_SUB_TOPIC, CONFIG_DEFAULT_MQTT_SUB_QOS, CONFIG_MQTT_PUB_TOPIC, CONFIG_DEFAULT_MQTT_PUB_QOS, CONFIG_MQTT_PUBLISH_INTERVAL, CONFIG_MQTT_PAYLOAD_BUFFER); ESP_LOGI(TAG, "ver:%u clientID:%s keepalive:%d username:%s passwd:%s session:%d level:%u", CONFIG_DEFAULT_MQTT_VERSION, CONFIG_MQTT_CLIENT_ID, CONFIG_MQTT_KEEP_ALIVE, CONFIG_MQTT_USERNAME, CONFIG_MQTT_PASSWORD, CONFIG_DEFAULT_MQTT_SESSION, CONFIG_DEFAULT_MQTT_SECURITY); ESP_LOGI(TAG, "broker:%s port:%u", CONFIG_MQTT_BROKER, CONFIG_MQTT_PORT); ESP_LOGI(TAG, "sendbuf:%u recvbuf:%u sendcycle:%u recvcycle:%u", CONFIG_MQTT_SEND_BUFFER, CONFIG_MQTT_RECV_BUFFER, CONFIG_MQTT_SEND_CYCLE, CONFIG_MQTT_RECV_CYCLE); MQTTPacket_connectData connectData = MQTTPacket_connectData_initializer; NetworkInit(&network); if (MQTTClientInit(&client, &network, 0, NULL, 0, NULL, 0) == false) { ESP_LOGE(TAG, "mqtt init err"); vTaskDelete(NULL); } payload = malloc(CONFIG_MQTT_PAYLOAD_BUFFER); if (!payload) { ESP_LOGE(TAG, "mqtt malloc err"); } else { memset(payload, 0x0, CONFIG_MQTT_PAYLOAD_BUFFER); } for (;;) { ESP_LOGI(TAG, "wait wifi connect..."); xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY); if ((rc = NetworkConnect(&network, CONFIG_MQTT_BROKER, CONFIG_MQTT_PORT)) != 0) { ESP_LOGE(TAG, "Return code from network connect is %d", rc); continue; } connectData.MQTTVersion = CONFIG_DEFAULT_MQTT_VERSION; sprintf(clientID, "%s_%u", CONFIG_MQTT_CLIENT_ID, esp_random()); connectData.clientID.cstring = clientID; connectData.keepAliveInterval = CONFIG_MQTT_KEEP_ALIVE; connectData.username.cstring = CONFIG_MQTT_USERNAME; connectData.password.cstring = CONFIG_MQTT_PASSWORD; connectData.cleansession = CONFIG_DEFAULT_MQTT_SESSION; ESP_LOGI(TAG, "MQTT Connecting"); if ((rc = MQTTConnect(&client, &connectData)) != 0) { ESP_LOGE(TAG, "Return code from MQTT connect is %d", rc); network.disconnect(&network); continue; } ESP_LOGI(TAG, "MQTT Connected"); #if defined(MQTT_TASK) if ((rc = MQTTStartTask(&client)) != pdPASS) { ESP_LOGE(TAG, "Return code from start tasks is %d", rc); } else { ESP_LOGI(TAG, "Use MQTTStartTask"); } #endif if ((rc = MQTTSubscribe(&client, CONFIG_MQTT_SUB_TOPIC, CONFIG_DEFAULT_MQTT_SUB_QOS, messageArrived)) != 0) { ESP_LOGE(TAG, "Return code from MQTT subscribe is %d", rc); network.disconnect(&network); continue; } ESP_LOGI(TAG, "MQTT subscribe to topic %s OK", CONFIG_MQTT_SUB_TOPIC); for (;;) { MQTTMessage message; message.qos = CONFIG_DEFAULT_MQTT_PUB_QOS; message.retained = 0; message.payload = payload; sprintf(payload, "message number %d", ++count); message.payloadlen = strlen(payload); if ((rc = MQTTPublish(&client, CONFIG_MQTT_PUB_TOPIC, &message)) != 0) { ESP_LOGE(TAG, "Return code from MQTT publish is %d", rc); } else { ESP_LOGI(TAG, "MQTT published topic %s, len:%u heap:%u", CONFIG_MQTT_PUB_TOPIC, message.payloadlen, esp_get_free_heap_size()); } if (rc != 0) { break; } vTaskDelay(CONFIG_MQTT_PUBLISH_INTERVAL / portTICK_RATE_MS); } network.disconnect(&network); } ESP_LOGW(TAG, "mqtt_client_thread going to be deleted"); vTaskDelete(NULL); return; }
/** * @brief Callback routine of the VNC dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog_VNC(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'Multi Edit' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_VNC); MULTIEDIT_SetReadOnly(hItem, 1); MULTIEDIT_SetBkColor(hItem, 1, 0); MULTIEDIT_SetTextColor(hItem, 1, 0xFFFFFF); /* Initialization of 'Image 1' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_PCNETWORK); IMAGE_SetBitmap(hItem, &bmpc_network64); /* Initialization of 'Image 2' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmDelete32); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DHCP); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DHCP_STATE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_IPADDR); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_IPADDR_VALUE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUBNETMASK); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUBNETMASK_VALUE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_GWADDR); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_GWADDR_VALUE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); /* Restore VNC settings */ _VNCServer_RestoreSettings(); if (VNCSettings.maskaddr.b.addr3 != 255) { VNCSettings.dhcp_use.b.dhcp = 1; VNCSettings.ipaddr.b.addr0 = 0; VNCSettings.ipaddr.b.addr1 = 0; VNCSettings.ipaddr.b.addr2 = 0; VNCSettings.ipaddr.b.addr3 = 0; VNCSettings.maskaddr.b.addr0 = 0; VNCSettings.maskaddr.b.addr1 = 0; VNCSettings.maskaddr.b.addr2 = 0; VNCSettings.maskaddr.b.addr3 = 0; VNCSettings.gwaddr.b.addr0 = 0; VNCSettings.gwaddr.b.addr1 = 0; VNCSettings.gwaddr.b.addr2 = 0; VNCSettings.gwaddr.b.addr3 = 0; /* Save VNC settings */ _VNCServer_SaveSettings(); } else { _VNCApp_GetIPAddress(IP_ADDRESS, VNCSettings.ipaddr.b.addr3, VNCSettings.ipaddr.b.addr2, VNCSettings.ipaddr.b.addr1, VNCSettings.ipaddr.b.addr0); _VNCApp_GetIPAddress(SUBNET_MASK, VNCSettings.maskaddr.b.addr3, VNCSettings.maskaddr.b.addr2, VNCSettings.maskaddr.b.addr1, VNCSettings.maskaddr.b.addr0); _VNCApp_GetIPAddress(GW_ADDRESS, VNCSettings.gwaddr.b.addr3, VNCSettings.gwaddr.b.addr2, VNCSettings.gwaddr.b.addr1, VNCSettings.gwaddr.b.addr0); } if (VNCSettings.dhcp_use.b.dhcp == 0) { _VNCServer_DisplayIPAddress(); } break; case WM_PAINT: DrawRect3D(230, 5, 87, 120); DrawRect3D(2, 130, 225, 80); DrawRect3D(230, 130, 87, 80); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BUTTON_SETTINGS: /* Settings */ if(hWinVNC_Settings == 0) { hWinVNC_Settings = GUI_CreateDialogBox(_aDialog_VNC_SETTINGS, GUI_COUNTOF(_aDialog_VNC_SETTINGS), _cbDialog_VNC_SETTINGS, hWinVNC, 0, 10); hNumPad = GUI_CreateDialogBox(_aDialogNumPad, GUI_COUNTOF(_aDialogNumPad), _cbDialogNumPad, pMsg->hWin, 0, 0); } break; case ID_BUTTON_START: /* Start */ if(hWinVNC_Settings == 0) { if (start_button == VNC_START) { /* change start button to hide */ start_button = VNC_HIDE; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_START); BUTTON_SetText(hItem, (const char*) "Hide"); /* Cange connection png pic from disconnected to connecting */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmhourglass32); hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "TCP/IP stack initialization ... \n\r"); TCPIP_Initialized = 1; /* Initilaize the LwIP stack */ NetworkInit(VNCSettings.dhcp_use.b.dhcp); } else /* start_button == VNC_HIDE */ { if(hWinVNC_Settings == 0) { WM_HideWindow(pMsg->hWin); } } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/************************************************* Function: logic_init Description: 逻辑初始化 Input: 无 Output: 无 Return: 无 *************************************************/ void logic_init(void) { PFULL_DEVICE_NO pDevNo = NULL; PNET_PARAM pNetParam = NULL; init_auTimer(); // 初始化定时器 init_timer(); storage_init(); // 初始化存储模块 init_list_address(); // 初始化监视列表 ScreenInit(); NetworkInit(); #ifdef _JD_MODE_ jd_logic_init(); // 如有家电模块可以不启动看门狗,家电轮巡命令可以喂狗 //#else hw_start_com_dog(); // 启动串口看门狗 #endif #ifdef _DOOR_PHONE_ init_ioctrl_callback(analog_callin_io); hw_switch_digit(); // 切换到数字通路 #endif init_keypad_probe(); // 按键侦测 alarm_logic_init(); media_init(); sys_init_hint_state(); alarm_init_gui_callback((ALARMGUI_CALLBACK)af_callback_gui, (SHOW_SYSEVENHIT)show_sys_event_hint); inter_call_ini(callrequest_state_callbak, callout_state_callbak, callin_state_callbak); monitor_ini(monitor_list_state_callbak, monitor_state_callbak); rtsp_ini(rtsp_list_state_callbak, rtsp_state_callbak); other_func_callbak_ini(); net_set_recivedata_func(SSC_INFO, msg_distribute, msg_responsion); net_set_recivedata_func(SSC_ALARM, alarm_distribute, alarm_responsion); net_set_recivedata_func(SSC_INTERPHONE, inter_distribute, inter_responsion); net_set_recivedata_func(SSC_PUBLIC, public_distribute, public_responsion); net_set_recivedata_func(SSC_VIDEOMONITORING, rtsp_distribute, rtsp_responsion); net_set_recivedata_func(SSC_IPDOORPHONE, netdoor_distribute, netdoor_responsion); #ifdef _JD_MODE_ net_set_recivedata_func(SSC_EHOME, jd_net_distribute, jd_net_responsion); #endif pDevNo = storage_get_devparam(); pNetParam = storage_get_netparam(); net_start_comm(pDevNo, pNetParam); net_send_cmd_packet(NULL, 0, INADDR_BROADCAST, NETCMD_UDP_PORT); init_reboot_timer(); // 定时重启设置 #ifdef _USE_NEW_CENTER_ logic_reg_center_ini(); // 新上位机注册保持 #endif #ifdef _NEW_SELF_IPC_ init_ipc_state(); // add by chenbh 2016-03-09 初始化家居监视列表在线状态值 #endif #ifdef _IP_MODULE_ init_ipmodule(); // IP模块绑定 保持 #endif #ifdef _RTSP_REG_KEEP_ init_rtsp_timer(); // 室内主机需要向流媒体服务器保持 #endif #ifdef _YUYUE_MODE_ init_yuyue_timer(); // 预约模块定时器 #endif // 请求时间同步 uint32 center = storage_get_center_ip(); set_nethead(G_CENTER_DEVNO, PRIRY_DEFAULT); net_direct_send(CMD_REQ_SYN_TIME, NULL, 0, center, NETCMD_UDP_PORT); // 测试校验数据是否正确 check_sysconfig_ifcorrect(); dprintf("devno: %s \n", pDevNo->DeviceNoStr); }
//int WINAPI WinMain (HINSTANCE hInstance, // HINSTANCE hPrevInstance, // LPSTR lpCmdLine, // int nShowCmd) VOID ServiceStart (DWORD dwArgc, LPTSTR *lpszArgv) { char ConnectionName[15]; /*------------------------------------------------------------*/ /* Modification: Migration from single thread to multithread */ /* Create thread calls are changed to _beginthread */ /* XID on 7-DEC-1998 */ /*------------------------------------------------------------*/ // DWORD CreateThreadId; char StrAux[128]; int CommServerNumber; int LoggerRouteId, CommServerRouteId; char *pStringSub[2]; BYTE CommServerRedundant; BYTE DBServiceDepending; BYTE CommServerPreferred; // report the status to the service control manager. // if (!ReportStatusToSCMgr (SERVICE_START_PENDING, // service state NO_ERROR, // exit code 3000)) // wait hint return; /* Create the event to stop the service */ hStopEvent = CreateEvent (NULL, TRUE, FALSE, NULL); /*-----------------*/ /* Init. procedure */ /*-----------------*/ /* Sets process priority (Normal class) */ SetPriorityClass (GetCurrentProcess (), NORMAL_PRIORITY_CLASS); /* Modification: Process parameters are got from system registry */ /* XID on 16-JUL-1998 */ /* Get the CommServer Number CommServer.Ini */ //CommServerNumber = GetPrivateProfileInt ("GENERAL", "CommServerId", 0,"CommServer.ini"); if (!GetParameterRegistry (COMM_NUM_COMMSERVER, (unsigned char *) &CommServerNumber)) { CommServerNumber = 0; } /* endif */ /* Get the redundant configuration from the system registry */ if (!GetParameterRegistry (COMM_REDUNDANT_CONFIGURATION, (unsigned char *) &CommServerRedundant)) { CommServerRedundant = FALSE; } /* endif */ /* Get the redundant configuration from the system registry */ if (!GetParameterRegistry (COMM_DBSERVICE_DEPENDING, (unsigned char *) &DBServiceDepending)) { DBServiceDepending = TRUE; } /* endif */ if (!GetParameterRegistry (COMM_COMMSERVER_PREFERRED, (unsigned char *) &CommServerPreferred)) { CommServerPreferred = TRUE; } /* endif */ /*-------------------------------*/ /* Basic Network init. procedure */ /*-------------------------------*/ /* Initialize interproccess communication */ if (!RouterInit ()) { /* Error */ AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_ROUTER_FAILED); return; } /* endif */ /* Detailed Logging initialization */ (void) Log_SetProcessName("CommS"); (void) Log_SetThreadName("SrvcMain"); /* Get connection to send logger messages */ sprintf (ConnectionName, "LOGGER%03u", 0); if (!GetConnection (ConnectionName, &LoggerRouteId)) { /* Error */ pStringSub[0] = ConnectionName; AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_GET_CONECTION_ERROR); return; } /* endif */ /* Create connection to receive online messages from DBService */ sprintf (ConnectionName, "COMSERV%03u", CommServerNumber); if (!CreateConnection (ConnectionName, &CommServerRouteId)) { /* Error */ pStringSub[0] = ConnectionName; AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_CREATE_CONECTION_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (LoggerRouteId, -1, StrAux, 1); return; } /* endif */ /* Start & version message */ LogWrite (LoggerRouteId, CommServerRouteId, "", 1); sprintf (StrAux, CS_LOG_MSG_00036, COMM_SERVER_BUILD_NUMBER, COMM_SERVER_VERSION_DATE); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); sprintf (StrAux, CS_LOG_MSG_00109); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); sprintf (StrAux, CS_LOG_MSG_00037); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); #if defined (HASP_KEY) sprintf (StrAux, COMM_SERVER_HASP_ON_STR); #else sprintf (StrAux, COMM_SERVER_HASP_OFF_STR); #endif LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); #if defined (PROT_CONV_LAYER) sprintf (StrAux, COMM_SERVER_CONV_ON_STR); #else sprintf (StrAux, COMM_SERVER_CONV_OFF_STR); #endif LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); #if defined (PROT_ENCRYPTION) sprintf (StrAux, COMM_SERVER_ENC_ON_STR); #else sprintf (StrAux, COMM_SERVER_ENC_OFF_STR); #endif LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); #if defined (PROT_COMPRESSION) sprintf (StrAux, COMM_SERVER_COMP_ON_STR); #else sprintf (StrAux, COMM_SERVER_COMP_OFF_STR); #endif LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); /* Commserver Id */ sprintf (StrAux, CS_LOG_MSG_00110, CommServerNumber); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); LogWrite (LoggerRouteId, CommServerRouteId, "", 1); /* Redundant configuration */ if (CommServerRedundant) { sprintf (StrAux, CS_LOG_MSG_00125); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); sprintf (StrAux, CS_LOG_MSG_00124 ,CommServerPreferred ,DBServiceDepending); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); LogWrite (LoggerRouteId, CommServerRouteId, "", 1); } /* endif */ /* Set input buffer size for this route. */ /* This input buffer has to be large enough */ /* to receive all the incomming messages */ SetInputBufferSize (CommServerRouteId, COMMSERVER_CONNECTION_INPUT_BUFFER_SIZE); /*---------------------*/ /* DB access semaphore */ /*---------------------*/ if (!InitDBSection ()) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00038); printf ("%s\n", StrAux); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); //AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, // EVLG_COMMSERVER_MAP_MEMORY_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); return; } /* endif */ /*--------------------*/ /* Map channel memory */ /*--------------------*/ if (InitChannelMapData () != STATUS_OK) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00039); printf ("%s\n", StrAux); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_COMMSERVER_MAP_MEMORY_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (LoggerRouteId, CommServerRouteId, StrAux, 1); return; } /* endif */ /* Reset CommServer database */ ResetDB (); /* Assign comm. server id. and basic routes */ DB_PROCESS.CommServerNumber = CommServerNumber; DB_PROCESS.LoggerRouteId = LoggerRouteId; DB_PROCESS.CommServerRouteId = CommServerRouteId; /* CommServer redundancy initial state */ DB_PROCESS.CommServerPartnerState = PROCESS_STATE_NORUNNING; DB_PROCESS.CommServerState = PROCESS_STATE_NORUNNING; DB_PROCESS.DBServiceDepending = DBServiceDepending; DB_PROCESS.CommServerPreferred = CommServerPreferred; #if defined (HASP_KEY) /* Default hasp check */ DB_PROCESS.HaspPresent = TRUE; #endif /*-------------*/ /* MGL license */ /*-------------*/ MGL_ReadLicense (); /*------------------------*/ /* Compression algorithms */ /*------------------------*/ Util_SplayTreeCompressInit (NULL); Util_SplayTreeUncompressInit (NULL); /*--------------------------*/ /* Process critical secions */ /*--------------------------*/ InitializeCriticalSection (&DB_PROCESS.CSFreeChannels); InitializeCriticalSection (&DB_PROCESS.CSFreeNetworkThreads); InitializeCriticalSection (&DB_PROCESS.CSModifyCfg); /*---------------------------*/ /* Other Network connections */ /*---------------------------*/ /* Get connection to send message to DBService */ sprintf (ConnectionName, "DBCOMM%03u", 0); if (!GetConnection (ConnectionName, &DB_PROCESS.DBServiceRouteId)) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00041, ConnectionName); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); pStringSub[0] = ConnectionName; AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_GET_CONECTION_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /* Get connection to send confirm messages */ sprintf (ConnectionName, "DBCONF%03u", 0); if (!GetConnection (ConnectionName, &DB_PROCESS.DBConfirmRouteId)) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00041, ConnectionName); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); pStringSub[0] = ConnectionName; AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_GET_CONECTION_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /* Get connection to send confirm messages */ sprintf (ConnectionName, "DBSEQ%03u", 0); if (!GetConnection (ConnectionName, &DB_PROCESS.DBSeqRouteId)) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00041, ConnectionName); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); pStringSub[0] = ConnectionName; AddToMessageLog (pStringSub, 1, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_GET_CONECTION_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /* Initialize Network layer */ if (!NetworkInit ()) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00042); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_COMMSERVER_NETWORK_LAYER_INIT_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /*------------------*/ /* Threads creation */ /*------------------*/ /*------------------------------------------------------------*/ /* Modification: Migration from single thread to multithread */ /* Create thread calls are changed to _beginthread */ /* XID on 7-DEC-1998 */ /*------------------------------------------------------------*/ /* Create thread to receive messages from the DbService */ // if (CreateThread (NULL, MAX_STACK, (LPTHREAD_START_ROUTINE) HostToTermThread, // (LPVOID) NULL, 0, &CreateThreadId) == NULL) if (_beginthread (HostToTermThread, MAX_STACK, (LPVOID) NULL) == -1) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00043); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_CREATE_THREAD_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /* Create thread to check channels integrity */ // if (CreateThread (NULL, MAX_STACK, (LPTHREAD_START_ROUTINE) CheckChannelsThread, // (LPVOID) NULL, 0, &CreateThreadId) == NULL) if (_beginthread (CheckChannelsThread, MAX_STACK, (LPVOID) NULL) == -1) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00045); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_CREATE_THREAD_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /* If the redundancy is configured create the failover thread */ if (CommServerRedundant) { if (_beginthread (FailOverThread, MAX_STACK, (LPVOID) NULL) == -1) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00045); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_STD_CREATE_THREAD_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ } else { /* In not redundancy case it is always active */ DB_PROCESS.CommServerState = PROCESS_STATE_ACTIVE; } /* endif */ /*--------------------------*/ /* CommServer configuration */ /*--------------------------*/ /* Offline parameters */ if (!ReadOfflineDir ()) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00046); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_COMMSERVER_OFFLINE_DIR_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ /* Configuration message */ sprintf (StrAux, CS_LOG_MSG_00047); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 5); // report the status to the service control manager. // if (!ReportStatusToSCMgr (SERVICE_RUNNING, // service state NO_ERROR, // exit code 3000)) // wait hint { sprintf (StrAux, CS_LOG_MSG_00048); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); return; } /* endif */ // XID on 17/OCT/2002 // X25 support X25_Init (); /* Start message */ AddToMessageLog (NULL, 0, EVENTLOG_INFORMATION_TYPE, SC_SYSTEM, EVLG_STD_SERVICE_STARTED); /* Get configuration from DBService */ if (!RemoteConfiguration ()) //if (!ConfigureApp ()) { /* Error */ sprintf (StrAux, CS_LOG_MSG_00049); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); AddToMessageLog (NULL, 0, EVENTLOG_ERROR_TYPE, SC_SYSTEM, EVLG_COMMSERVER_LOAD_CONFIG_ERROR); sprintf (StrAux, CS_LOG_MSG_00035); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 1); /* Write the last status in the system registry */ if (CommServerRedundant) { GetStatusFromPartnerStatus (PROCESS_STATE_NORUNNING, DB_PROCESS.CommServerState, DB_PROCESS.CommServerPartnerState); } /* endif */ return; } /* endif */ /* Sets main thread to idle priority */ SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE); /* Configuration message */ sprintf (StrAux, CS_LOG_MSG_00050); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, StrAux, 5); /*-----------------------------*/ /* Wait for the the stop event */ /*-----------------------------*/ WaitForSingleObject (hStopEvent, INFINITE); LogWrite (DB_PROCESS.LoggerRouteId, DB_PROCESS.CommServerRouteId, CS_LOG_MSG_00051, 1); /* Write the last status in the system registry */ if (CommServerRedundant) { GetStatusFromPartnerStatus (PROCESS_STATE_NORUNNING, DB_PROCESS.CommServerState, DB_PROCESS.CommServerPartnerState); } /* endif */ AddToMessageLog (NULL, 0, EVENTLOG_INFORMATION_TYPE, SC_SYSTEM, EVLG_STD_SERVICE_STOPPED); return; } /* main */