+am::SamplePlugin::SamplePlugin(SocketHandler *mySocketHandler, sockType_e socketType) :
+ connectFiredCB(this, &SamplePlugin::connectSocket), //
+ receiveFiredCB(this, &SamplePlugin::receiveData), //
+ sampleDispatchCB(this, &SamplePlugin::dispatchData), //
+ sampleCheckCB(this, &SamplePlugin::check), //
+ mSocketHandler(mySocketHandler), //
+ mConnecthandle(), //
+ mReceiveHandle(), //
+ msgList()
+{
+ int ret;
+ int yes = 1;
+
+ int socketHandle;
+ struct sockaddr_in servAddr;
+ struct sockaddr_un unixAddr;
+ unsigned int servPort = 6060;
+
+ switch (socketType)
+ {
+ case UNIX:
+ socketHandle = socket(AF_UNIX, SOCK_STREAM, 0);
+ unixAddr.sun_family = AF_UNIX;
+ strcpy(unixAddr.sun_path, SOCK_PATH);
+ unlink(unixAddr.sun_path);
+ bind(socketHandle, (struct sockaddr *) &unixAddr, strlen(unixAddr.sun_path) + sizeof(unixAddr.sun_family));
+ break;
+ case INET:
+ socketHandle = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+ setsockopt(socketHandle, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
+ memset(&servAddr, 0, sizeof(servAddr));
+ servAddr.sin_family = AF_INET;
+ servAddr.sin_addr.s_addr = INADDR_ANY;
+ servAddr.sin_port = htons(servPort);
+ bind(socketHandle, (struct sockaddr *) &servAddr, sizeof(servAddr));
+ break;
+ default:
+ break;
+ }
+
+ if (listen(socketHandle, 3) < 0)
+ {
+ std::cout << "listen ok" << std::endl;
+ } /* if */
+
+ int a = 1;
+ ioctl(socketHandle, FIONBIO, (char *) &a);
+ setsockopt(socketHandle, SOL_SOCKET, SO_KEEPALIVE, (char *) &a, sizeof(a));
+
+ short events = 0;
+ events |= POLLIN;
+ mySocketHandler->addFDPoll(socketHandle, events, NULL, &connectFiredCB, NULL, NULL, NULL, mConnecthandle);
+ std::cout << "setup server - listening" << std::endl;