Example #1
0
  SSLChannel(OpalDTLSSRTPSession & session, PUDPSocket * socket, PQueueChannel & queue, bool isServer)
    : PSSLChannelDTLS(*DTLSContextSingleton())
    , m_session(session)
  {
    SetVerifyMode(PSSLContext::VerifyPeerMandatory, PCREATE_NOTIFIER2_EXT(session, OpalDTLSSRTPSession, OnVerify, PSSLChannel::VerifyInfo &));

    queue.Open(2000);
    Open(&queue, socket, false, false);
    SetReadTimeout(2000);

    if (isServer)
      Accept();
    else
      Connect();
  }
Example #2
0
/**
 * Read n bytes.
 *
 * @param sk Socket.
 * @param buf Buffer.
 * @param n Number of bytes to read.
 * @return True if successful.
 */
static bool ReadBytes(const int sk, char* buf, const size_t n) {
    char* ptr = buf;
    while (ptr < buf + n) {
        if (!SetReadTimeout(sk)) {
            return false;
        }

        auto ret = recv(sk, ptr, ptr - buf + n, 0);
        if (ret <= 0) {
            LOG(ERROR) << "unable to receive on socket";
            return false;
        }

        ptr += ret;
    }

    return true;
}
Example #3
0
NTSTATUS SetIrpTimeout(
    PC0C_IO_PORT pIoPort,
    PIRP pIrp)
{
  PIO_STACK_LOCATION pIrpStack = IoGetCurrentIrpStackLocation(pIrp);

  switch (pIrpStack->MajorFunction) {
  case IRP_MJ_WRITE:
    return SetWriteTimeout(pIoPort, pIrp);
  case IRP_MJ_DEVICE_CONTROL:
    switch (pIrpStack->Parameters.DeviceIoControl.IoControlCode) {
    case IOCTL_SERIAL_XOFF_COUNTER:
    case IOCTL_SERIAL_IMMEDIATE_CHAR:
      return SetWriteTimeout(pIoPort, pIrp);
    }
    break;
  case IRP_MJ_READ:
    return SetReadTimeout(pIoPort, pIrp);
  }

  return STATUS_PENDING;
}
Example #4
0
BOOL CSerial::Init(DWORD dwBaudRate)
{
	DCB dcb;

	if(!GetCommState(m_hDev, &dcb))
	{
		//RETAILMSG(DBGMSG, (L"Serial::Init() error GetCommState()\r\n") );
		return FALSE;
	}

	dcb.DCBlength = sizeof(dcb);
    dcb.BaudRate = dwBaudRate;
    dcb.fParity = FALSE;
    dcb.fNull = FALSE;
    dcb.StopBits = ONESTOPBIT;
    dcb.Parity = NOPARITY;
    dcb.ByteSize = 8;
//	dcb.EvtChar = '@';		//×¢²áÒ»¸öʼþ×Ö·û


	if(!SetCommState(m_hDev, &dcb))
	{
		//RETAILMSG(DBGMSG, (L"Serial::Init() error SetCommState()\r\n") );
		return FALSE;
	}

	if(!SetupComm(m_hDev, 4096, 4096))
	{
		//RETAILMSG(DBGMSG, (L"Serial::Init() error SetupComm()\r\n") );
		return FALSE;
	}

	SetReadTimeout(100,100);

	return TRUE;
}