bool OpenFileConnection::OnPoke(const wxString & topic, const wxString & item, const void * data, size_t size, wxIPCFormat format) { const char* cData = reinterpret_cast<const char*>(data); std::string wstr(cData, cData + size); HandleOpenFile(wstr); return true; }
void HandleClientMsg(SSL_CLIENT_DATA* ssl_data, int epollfd) { if(!ssl_data) return; cJSON *root=NULL, *cmd=NULL, *attr=NULL, *child=NULL; SSL *ssl = ssl_data->ssl; char buffer[BUFF_LEN]; int recvLen; bzero(buffer, BUFF_LEN); /*Receive information from client*/ recvLen = SSL_recv(ssl, buffer, BUFF_LEN); if(recvLen <= 0 || strncmp(buffer, "quit", 4)==0) { printf("client quit!\n"); int connfd = SSL_get_fd(ssl_data->ssl); Session_Delete(connfd); Session_Print_All(); SSL_Client_Leave(ssl_data, epollfd); return; } printf("client %d: %s\n", SSL_get_fd(ssl_data->ssl), buffer); /*Parse the client message*/ root = cJSON_Parse(buffer); if(!root) { printf("Error before: [%s]\n",cJSON_GetErrorPtr()); HandleError(ssl, "JSON format not recognized."); return; } child = root->child; while(child) { if(strcmp(child->string, "cmd")==0) { cmd = child; } else if(strcmp(child->string, "attr")==0) { attr = child; } child = child->next; } if(0==strcmp(cmd->valuestring, "register")) { HandleRegister(ssl, attr); } else if(0==strcmp(cmd->valuestring, "cert_status_ok")) { HandleCertStatusUpdate(ssl, attr); } else if(0==strcmp(cmd->valuestring, "login")) { HandleLogin(ssl,attr); } else if(0==strcmp(cmd->valuestring, "query_pulse")) { HandleQueryPulse(ssl, attr); } else if(0==strcmp(cmd->valuestring, "file_query")) { HandleFileQuery(ssl, attr); } else if(0==strcmp(cmd->valuestring, "sending_file_next")) { HandleSendingFile(ssl, attr); } else if(0==strcmp(cmd->valuestring, "receiving_file_next")) { HandleReceivingFile(ssl, attr); } else if(0==strcmp(cmd->valuestring, "open_file")) { HandleOpenFile(ssl, attr); } else if(0==strcmp(cmd->valuestring, "revoke_file")) { HandleRevokeFile(ssl, attr); } cJSON_Delete(root); }