java.net.SocketException Scala Examples
The following examples show how to use java.net.SocketException.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: NetworkDeviceManager.scala From slide-desktop with GNU General Public License v2.0 | 5 votes |
package connections.network import java.io.IOException import java.net.SocketException import connections.{BaseDeviceManager, ConnectionManager} import slide.SystemInfo import enums.ConnectionMode class NetworkDeviceManager extends BaseDeviceManager { private var ndc: NetworkDeviceConnection = null private var backgroundScannerRunning: Boolean = true @throws(classOf[IOException]) override def connect(ip: String): Unit = { ndc = new NetworkDeviceConnection(ip) { override def onClientOutOfDate(): Unit = { throwError("The client is out of date. Please upgrade it.") } } ndc.connect() } override def throwError(message: String): Unit = {} override def startBackgroundScanner(): Unit = { val t: Thread = new Thread(new Runnable { override def run(): Unit = { var dcCount: Int = 0 var udpDiscovery: BroadcastManager = null try { udpDiscovery = new BroadcastManager } catch { case e: SocketException => throwError("Another instance of Slide is already running.") System.exit(1) } while (backgroundScannerRunning) { if (!SystemInfo.isNetworkIsAvailable) { stopBackgroundScanner() } device = udpDiscovery.search if (device != null) { dcCount = 0 if (!ConnectionManager.hasConnection(ConnectionMode.WIFI)) { onWifiConnectionAdded() } } else { dcCount += 1 if (dcCount >= 4) { if (ConnectionManager.hasConnection(ConnectionMode.WIFI)) { onWifiConnectionRemoved() } } } } } }) t.start() } override def stopBackgroundScanner(): Unit = backgroundScannerRunning = false def ip: String = device.ip }
Example 2
Source File: SolRSupport.scala From Taxi360 with Apache License 2.0 | 5 votes |
package com.hadooparchitecturebook.taxi360.streaming.ingestion.solr import java.net.{ConnectException, SocketException} import java.util import org.apache.solr.client.solrj.impl.CloudSolrServer import org.apache.solr.client.solrj.request.UpdateRequest import org.apache.solr.common.{SolrException, SolrInputDocument} import org.apache.spark.rdd.RDD import org.apache.spark.streaming.dstream.DStream object SolRSupport { def indexDStreamOfDocs(zkHost:String, collection:String, batchSize:Int, docDStream:DStream[SolrInputDocument]): Unit ={ docDStream.foreachRDD(docRdd => { indexDoc(zkHost, collection, batchSize, docRdd) }) } def indexDoc(zkHost:String, collection:String, batchSize:Int, docRdd:RDD[SolrInputDocument]): Unit = { docRdd.foreachPartition(it => { val solrServer = CloudSolRServerBuilder.build(zkHost) val batch = new util.ArrayList[SolrInputDocument]() while (it.hasNext) { val inputDoc = it.next() batch.add(inputDoc) if (batch.size() >= batchSize) sendBatchToSolr(solrServer, collection, batch) } if (!batch.isEmpty()) sendBatchToSolr(solrServer, collection, batch) }) } def sendBatchToSolr( solrServer: CloudSolrServer, collection:String, batch:util.Collection[SolrInputDocument]) { val req = new UpdateRequest() req.setParam("collection", collection) req.add(batch) try { solrServer.request(req) } catch { case e:Exception => { if (shouldRetry(e)) { try { Thread.sleep(2000) } catch { case e1: InterruptedException => { Thread.interrupted() } } try { solrServer.request(req) } catch { case e1: Exception => { if (e1.isInstanceOf[RuntimeException]) { throw e1.asInstanceOf[RuntimeException] } else { throw new RuntimeException(e1) } } } } else { if (e.isInstanceOf[RuntimeException]) { throw e.asInstanceOf[RuntimeException] } else { throw new RuntimeException(e) } } } } finally { batch.clear() } } def shouldRetry( exc:Exception): Boolean = { val rootCause = SolrException.getRootCause(exc) rootCause.isInstanceOf[ConnectException] || rootCause.isInstanceOf[SocketException] } }
Example 3
Source File: UDPSender.scala From censorinus with MIT License | 5 votes |
package github.gphat.censorinus import java.net.{InetSocketAddress,SocketException} import java.nio.ByteBuffer import java.nio.channels.UnresolvedAddressException import java.nio.channels.DatagramChannel class UDPSender( hostname: String = "localhost", port: Int = MetricSender.DEFAULT_STATSD_PORT, allowExceptions: Boolean = false ) extends MetricSender { lazy val clientSocket = DatagramChannel.open.connect(new InetSocketAddress(hostname, port)) def send(message: ByteBuffer): Unit = { try { val _ = clientSocket.write(message) } catch { case se @ (_ : SocketException | _ : UnresolvedAddressException) => { // Check if we're allowing exceptions and rethrow if so. We didn't use // a guard on the case because then we'd need a second case to catch // the !allowExceptions case! if(allowExceptions) { throw se } } } } def shutdown: Unit = clientSocket.close }
Example 4
Source File: RconConnector.scala From chatoverflow with Eclipse Public License 2.0 | 5 votes |
package org.codeoverflow.chatoverflow.requirement.service.rcon import java.io.{DataInputStream, IOException, InputStream, OutputStream} import java.net.{Socket, SocketException} import java.nio.{ByteBuffer, ByteOrder} import java.util.Random import org.codeoverflow.chatoverflow.WithLogger import org.codeoverflow.chatoverflow.connector.Connector class RconConnector(override val sourceIdentifier: String) extends Connector(sourceIdentifier) with WithLogger { override protected var requiredCredentialKeys: List[String] = List("password", "address") override protected var optionalCredentialKeys: List[String] = List("port") private var socket: Socket = _ private var outputStream: OutputStream = _ private var inputStream: InputStream = _ private var requestId: Int = 0 def sendCommand(command: String): String = { logger debug s"Sending $command to RCON" requestId += 1 if (write(2, command.getBytes("ASCII"))) { return read() } null } override def stop(): Boolean = { logger info s"Stopped RCON connector to ${credentials.get.getValue("address").get}!" socket.close() true } }
Example 5
Source File: TCPListener.scala From scala-loci with Apache License 2.0 | 5 votes |
package loci package communicator package tcp import java.io.IOException import java.net.{InetAddress, ServerSocket, SocketException} import java.util.concurrent.Executors import java.util.concurrent.atomic.AtomicBoolean import scala.util.{Failure, Success, Try} import scala.util.control.NonFatal private class TCPListener( port: Int, interface: String, properties: TCP.Properties) extends Listener[TCP] { protected def startListening(connectionEstablished: Connected[TCP]): Try[Listening] = try { val running = new AtomicBoolean(true) val socket = new ServerSocket(port, 0, InetAddress.getByName(interface)) val executor = Executors.newCachedThreadPool() def terminate() = { try socket.close() catch { case _: IOException => } executor.shutdown() } new Thread() { override def run() = try while (true) { val connection = socket.accept() if (connection != null) executor.execute(new Runnable { def run() = TCPHandler.handleConnection( connection, properties, TCPListener.this, { connection => connectionEstablished.fire(Success(connection)) }) }) } catch { case exception: SocketException => if (running.getAndSet(false)) { terminate() connectionEstablished.fire(Failure(exception)) } } }.start() Success(new Listening { def stopListening(): Unit = if (running.getAndSet(false)) terminate() }) } catch { case NonFatal(exception) => Failure(exception) } }
Example 6
Source File: EventDrivenFetcher.scala From Mycat-spider with Apache License 2.0 | 5 votes |
package turbo.crawler.power import java.io.IOException import java.io.StringReader import java.net.BindException import java.net.SocketException import java.net.SocketTimeoutException import org.apache.commons.httpclient.ConnectTimeoutException import org.apache.commons.httpclient.Header import org.cyberneko.html.parsers.DOMParser import org.w3c.dom.Document import org.xml.sax.InputSource import turbo.crawler.FetchRejectedException import turbo.crawler.Fetchable import turbo.crawler.IO import turbo.crawler.Logable import turbo.crawler.ResourceHasAlreadyBeenFetchedException import turbo.crawler.StringAdapter import turbo.crawler.io.HttpReturns /** * Event driven fetcher * @author mclaren * */ class EventDrivenFetcher[T <: Fetchable](eventId: String) extends Logable with MessageDriven with IO with StringAdapter { def fetch(fetchUrl: String , contentFilter: String => String , parseDocument: Document => List[T])(hasRejected: Document => Boolean) = { val _retry = (msg: String) => { logger.info("Retry " + msg) Thread.sleep(3000) this.fetch(fetchUrl, contentFilter, parseDocument)(hasRejected)(howToContinue)(referer) } var httpReturns: HttpReturns = null try { val dom = new DOMParser httpReturns = this.fromUrl(fetchUrl, Array[Header](new Header("Referer", referer(fetchUrl)))) dom.parse(new InputSource(new StringReader(contentFilter(httpReturns.body)))) var document = dom.getDocument //检查是否被屏蔽 if (hasRejected(document)) throw new FetchRejectedException(fetchUrl) parseDocument(document).foreach(x => fireEvent(new Evt(eventId + "_COMPLETION", x))) } catch { case e: SocketTimeoutException => _retry(e.getMessage) case e: SocketException => _retry(e.getMessage) case e: ConnectTimeoutException => _retry(e.getMessage) case e: IOException => { logger.info("Oh网络错误with代理:" + httpReturns.proxy.ip + ":" + httpReturns.proxy.port) howToContinue(fetchUrl, httpReturns.proxy) //10秒之内只允许出现一次重拨 _retry(e.getMessage) } case e: BindException => _retry(e.getMessage) case e: FetchRejectedException => { logger.info("Oh 惨遭屏蔽~") howToContinue(e.getFetchUrl, httpReturns.proxy) //10秒之内只允许出现一次重拨 _retry(e.getMessage) } case e: ResourceHasAlreadyBeenFetchedException => case e: Exception => { logger.error("Unknown exception has been occurred", e) } } } }
Example 7
Source File: Pagination.scala From Mycat-spider with Apache License 2.0 | 5 votes |
package turbo.crawler.power import java.io.IOException import java.io.StringReader import java.net.SocketException import java.net.SocketTimeoutException import org.apache.commons.httpclient.ConnectTimeoutException import org.apache.commons.httpclient.Header import org.cyberneko.html.parsers.DOMParser import org.w3c.dom.Document import org.xml.sax.InputSource import turbo.crawler.FetchRejectedException import turbo.crawler.Logable import turbo.crawler.ResourceHasAlreadyBeenFetchedException import turbo.crawler.io.HttpReturns import turbo.crawler.io.InternetIO /** * 分页支持 * @author mclaren * */ object pages extends Logable with InternetIO { def apply(fetchUrl: String, contentFilter: String => String, checkBoundary: Document => Int, urlFactory: (String, Int) => String)(hasRejected: Document => Boolean)(howToContinue: (String, turbo.crawler.io.Proxy) => Unit): List[String] = { var value = new ValueRef[Int](0) resetBoundary(fetchUrl, value, contentFilter, checkBoundary, urlFactory)(hasRejected)(howToContinue) var rts = List[String]() value.get for (i <- 1 to value.get) { rts = rts.+:(urlFactory(fetchUrl, i)) } rts } private def resetBoundary(fetchUrl: String, lastPage: ValueRef[Int], contentFilter: String => String = x => x, checkBoundary: Document => Int, urlFactory: (String, Int) => String)(hasRejected: Document => Boolean ): Unit = { val _retry = (() => { Thread.sleep(3000) resetBoundary(fetchUrl, lastPage, contentFilter, checkBoundary, urlFactory)(hasRejected)(howToContinue) }) var httpReturns: HttpReturns = null try { var domp = new DOMParser httpReturns = this.fromUrl(fetchUrl, Array[Header]()) domp.parse(new InputSource(new StringReader(contentFilter(httpReturns.body)))) var document = domp.getDocument if (hasRejected(document)) throw new FetchRejectedException(fetchUrl, httpReturns.proxy) lastPage.set(checkBoundary(document)) } catch { case e: SocketTimeoutException => _retry() case e: SocketException => _retry() case e: ConnectTimeoutException => _retry() case e: IOException => _retry() case e: FetchRejectedException => { logger.info("Oh 惨遭屏蔽~") howToContinue(e.getFetchUrl, httpReturns.proxy) _retry() } case e: ResourceHasAlreadyBeenFetchedException => case e: Exception => { logger.error("Unknown exception has been occurred", e) } } } } class ValueRef[M](v: M) { var value = v def set(vv: M) = this.value = vv def get = value }
Example 8
Source File: SchemaRegistryService.scala From kafka-testing with Apache License 2.0 | 5 votes |
package com.landoop.kafka.testing import java.net.{Socket, SocketException} import java.util.Properties import com.typesafe.scalalogging.StrictLogging import io.confluent.kafka.schemaregistry.avro.AvroCompatibilityLevel import io.confluent.kafka.schemaregistry.client.rest.RestService import io.confluent.kafka.schemaregistry.rest.{SchemaRegistryConfig, SchemaRegistryRestApplication} import io.confluent.kafka.schemaregistry.storage.{SchemaRegistry, SchemaRegistryIdentity} import org.eclipse.jetty.server.Server class SchemaRegistryService(val port: Int, val zookeeperConnection: String, val kafkaTopic: String, val avroCompatibilityLevel: AvroCompatibilityLevel, val masterEligibility: Boolean) extends StrictLogging { private val app = new SchemaRegistryRestApplication({ val prop = new Properties prop.setProperty("port", port.asInstanceOf[Integer].toString) prop.setProperty(SchemaRegistryConfig.KAFKASTORE_CONNECTION_URL_CONFIG, zookeeperConnection) prop.put(SchemaRegistryConfig.KAFKASTORE_TOPIC_CONFIG, kafkaTopic) prop.put(SchemaRegistryConfig.COMPATIBILITY_CONFIG, avroCompatibilityLevel.toString) prop.put(SchemaRegistryConfig.MASTER_ELIGIBILITY, masterEligibility.asInstanceOf[AnyRef]) prop }) val restServer = startServer(port) var Endpoint: String = getEndpoint(restServer) val restClient = new RestService(Endpoint) def startServer(port: Int, retries: Int = 5): Option[Server] = { var retry = retries > 0 var restServer: Option[Server] = None if (retry) { if (isPortInUse(port)) { logger.info(s"Schema Registry Port $port is already in use") Thread.sleep(2000) startServer(port, retries - 1) } else { restServer = Some(app.createServer) restServer.get.start() } } restServer } def getEndpoint(restServer: Option[Server]): String = { if (restServer.isDefined) { val uri = restServer.get.getURI.toString if (uri.endsWith("/")) { uri.substring(0, uri.length - 1) } else { uri } } else "" } private def isPortInUse(port: Integer): Boolean = try { new Socket("127.0.0.1", port).close() true } catch { case e: SocketException => false } def close() { if (restServer.isDefined) { restServer.get.stop() restServer.get.join() } } def isMaster: Boolean = app.schemaRegistry.isMaster def setMaster(schemaRegistryIdentity: SchemaRegistryIdentity): Unit = app.schemaRegistry.setMaster(schemaRegistryIdentity) def myIdentity: SchemaRegistryIdentity = app.schemaRegistry.myIdentity def masterIdentity: SchemaRegistryIdentity = app.schemaRegistry.masterIdentity def schemaRegistry: SchemaRegistry = app.schemaRegistry }
Example 9
Source File: SolRSupport.scala From Taxi360 with Apache License 2.0 | 5 votes |
package com.cloudera.sa.taxi360.streaming.ingestion.solr import java.net.{ConnectException, SocketException} import java.util import org.apache.solr.client.solrj.impl.CloudSolrServer import org.apache.solr.client.solrj.request.UpdateRequest import org.apache.solr.common.{SolrException, SolrInputDocument} import org.apache.spark.rdd.RDD import org.apache.spark.streaming.dstream.DStream object SolRSupport { def indexDStreamOfDocs(zkHost:String, collection:String, batchSize:Int, docDStream:DStream[SolrInputDocument]): Unit ={ docDStream.foreachRDD(docRdd => { indexDoc(zkHost, collection, batchSize, docRdd) }) } def indexDoc(zkHost:String, collection:String, batchSize:Int, docRdd:RDD[SolrInputDocument]): Unit = { docRdd.foreachPartition(it => { val solrServer = CloudSolRServerBuilder.build(zkHost) val batch = new util.ArrayList[SolrInputDocument]() while (it.hasNext) { val inputDoc = it.next() batch.add(inputDoc) if (batch.size() >= batchSize) sendBatchToSolr(solrServer, collection, batch) } if (!batch.isEmpty()) sendBatchToSolr(solrServer, collection, batch) }) } def sendBatchToSolr( solrServer: CloudSolrServer, collection:String, batch:util.Collection[SolrInputDocument]) { val req = new UpdateRequest() req.setParam("collection", collection) req.add(batch) try { solrServer.request(req) } catch { case e:Exception => { if (shouldRetry(e)) { try { Thread.sleep(2000) } catch { case e1: InterruptedException => { Thread.interrupted() } } try { solrServer.request(req) } catch { case e1: Exception => { if (e1.isInstanceOf[RuntimeException]) { throw e1.asInstanceOf[RuntimeException] } else { throw new RuntimeException(e1) } } } } else { if (e.isInstanceOf[RuntimeException]) { throw e.asInstanceOf[RuntimeException] } else { throw new RuntimeException(e) } } } } finally { batch.clear() } } def shouldRetry( exc:Exception): Boolean = { val rootCause = SolrException.getRootCause(exc) rootCause.isInstanceOf[ConnectException] || rootCause.isInstanceOf[SocketException] } }