Search in sources :

Example 1 with BidRequest

use of com.xrtb.pojo.BidRequest in project XRTB by benmfaul.

the class Configuration method initialize.

/**
	 * Read the Java Bean Shell file that initializes this constructor.
	 * 
	 * @param path.
	 *            String - The file name containing the Java Bean Shell code.
	 * @throws Exception
	 *             on file errors.
	 */
public void initialize(String path, String shard, int port, int sslPort) throws Exception {
    this.fileName = path;
    /******************************
		 * System Name
		 *****************************/
    this.shard = shard;
    this.port = port;
    this.sslPort = sslPort;
    java.net.InetAddress localMachine = null;
    String useName = null;
    try {
        localMachine = java.net.InetAddress.getLocalHost();
        ipAddress = localMachine.getHostAddress();
        useName = localMachine.getHostName();
    } catch (Exception error) {
        useName = getIpAddress();
    }
    if (shard == null || shard.length() == 0)
        instanceName = useName + ":" + port;
    else
        instanceName = shard + ":" + useName + ":" + port;
    /**
		 * Set up tem p files
		 */
    // create the temp
    Files.createDirectories(Paths.get("www/temp"));
    // directory in www so
    // preview campaign will
    // work
    /*********************************************
		 * USE ZOOKEEPER, AEROSPIKE OR FILE CONFIG
		 *********************************************/
    String str = null;
    if (path.startsWith("zookeeper")) {
        String[] parts = path.split(":");
        System.out.println(parts);
        zk = new ZkConnect(parts[1]);
        zk.join(parts[2], "bidders", instanceName);
        str = zk.readConfig(parts[2] + "/bidders");
    } else if (path.startsWith("aerospike")) {
        String[] parts = path.split(":");
        System.out.println(parts);
        String aerospike = parts[1];
        String configKey = parts[2];
        AerospikeHandler spike = AerospikeHandler.getInstance(aerospike, 3000, 300);
        redisson = new RedissonClient(spike);
        Database.getInstance(redisson);
        str = redisson.get(configKey);
        if (str == null) {
            throw new Exception("Aerospike configuration at " + path + " not available.");
        }
        System.out.println(str);
    } else {
        byte[] encoded = Files.readAllBytes(Paths.get(path));
        str = Charset.defaultCharset().decode(ByteBuffer.wrap(encoded)).toString();
    }
    Map<?, ?> m = DbTools.mapper.readValue(str, Map.class);
    /*******************************************************************************/
    seats = new HashMap<String, String>();
    if (m.get("lists") != null) {
        filesList = (List) m.get("lists");
        initializeLookingGlass(filesList);
    }
    if (m.get("s3") != null) {
        Map<String, String> ms3 = (Map) m.get("s3");
        String accessKey = ms3.get("access_key_id");
        String secretAccessKey = ms3.get("secret_access_key");
        String region = ms3.get("region");
        s3_bucket = ms3.get("bucket");
        s3 = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretAccessKey));
        ObjectListing listing = s3.listObjects(new ListObjectsRequest().withBucketName(s3_bucket));
        try {
            processDirectory(s3, listing, s3_bucket);
        } catch (Exception error) {
            System.err.println("ERROR IN AWS LISTING: " + error.toString());
        }
    }
    if (m.get("ssl") != null) {
        Map x = (Map) m.get("ssl");
        ssl = new SSL();
        ssl.setKeyManagerPassword = (String) x.get("setKeyManagerPassword");
        ssl.setKeyStorePassword = (String) x.get("setKeyStorePassword");
        ssl.setKeyStorePath = (String) x.get("setKeyStorePath");
    }
    /**
		 * Create the seats id map, and create the bin and win handler classes
		 * for each exchange
		 */
    seatsList = (List<Map>) m.get("seats");
    for (int i = 0; i < seatsList.size(); i++) {
        Map x = seatsList.get(i);
        String seatId = (String) x.get("id");
        String className = (String) x.get("bid");
        int k = className.indexOf("=");
        String[] parts = new String[2];
        String uri = className.substring(0, k);
        className = className.substring(k + 1);
        String[] options = null;
        /**
			 * set up any options on the class string
			 */
        if (className.contains("&")) {
            parts = className.split("&");
            className = parts[0].trim();
            options = parts[1].split(",");
            for (int ind = 0; ind < options.length; ind++) {
                options[ind] = options[ind].trim();
            }
        }
        String[] tags = uri.split("/");
        String exchange = tags[tags.length - 1];
        String name = (String) x.get("name");
        if (name == null)
            name = exchange;
        String id = (String) x.get("id");
        seats.put(name, id);
        try {
            Class<?> c = Class.forName(className);
            BidRequest br = (BidRequest) c.newInstance();
            if (br == null) {
                throw new Exception("Could not make new instance of: " + className);
            }
            Map extension = (Map) x.get("extension");
            if (x != null)
                br.handleConfigExtensions(extension);
            /**
				 * Handle generic-ized exchanges
				 */
            if (className.contains("Generic")) {
                br.setExchange(exchange);
                br.usesEncodedAdm = true;
            }
            RTBServer.exchanges.put(uri, br);
            if (parts[0] != null) {
                for (int ind = 1; ind < parts.length; ind++) {
                    String option = parts[ind];
                    String[] tuples = option.split("=");
                    switch(tuples[0]) {
                        case "usesEncodedAdm":
                            br.usesEncodedAdm = true;
                            break;
                        case "!usesEncodedAdm":
                            br.usesEncodedAdm = false;
                            break;
                        case "rlog":
                            Double rlog = Double.parseDouble(tuples[1]);
                            ExchangeLogLevel.getInstance().setExchangeLogLevel(name, rlog.intValue());
                            break;
                        case "useStrings":
                            break;
                        case "!useStrings":
                            break;
                        default:
                            System.err.println("Unknown request: " + tuples[0] + " in definition of " + className);
                    }
                }
            }
            /**
				 * Appnexus requires additional support for ready, pixel and
				 * click
				 */
            if (className.contains("Appnexus")) {
                RTBServer.exchanges.put(uri + "/ready", new Appnexus(Appnexus.READY));
                RTBServer.exchanges.put(uri + "/pixel", new Appnexus(Appnexus.PIXEL));
                RTBServer.exchanges.put(uri + "/click", new Appnexus(Appnexus.CLICK));
                RTBServer.exchanges.put(uri + "/delivered", new Appnexus(Appnexus.DELIVERED));
                Appnexus.seatId = seatId;
            }
        } catch (Exception error) {
            System.err.println("Error configuring exchange: " + name + ", error = ");
            throw error;
        }
    }
    /**
		 * Create forensiq
		 */
    Map fraud = (Map) m.get("fraud");
    if (fraud != null) {
        if (m.get("forensiq") != null) {
            System.out.println("*** Fraud detection is set to Forensiq");
            Map f = (Map) m.get("forensiq");
            String ck = (String) f.get("ck");
            Integer x = (Integer) f.get("threshhold");
            if (!(x == 0 || ck == null || ck.equals("none"))) {
                ForensiqClient fx = ForensiqClient.build(ck);
                if (fraud.get("endpoint") != null) {
                    fx.endpoint = (String) fraud.get("endpoint");
                }
                if (fraud.get("bidOnError") != null) {
                    fx.bidOnError = (Boolean) fraud.get("bidOnError");
                }
                if (f.get("connections") != null)
                    ForensiqClient.getInstance().connections = (int) (Integer) fraud.get("connections");
                forensiq = fx;
            }
        } else {
            System.out.println("*** Fraud detection is set to MMDB");
            String db = (String) fraud.get("db");
            MMDBClient fy = MMDBClient.build(db);
            if (fraud.get("bidOnError") != null) {
                fy.bidOnError = (Boolean) fraud.get("bidOnError");
            }
            if (fraud.get("watchlist") != null) {
                fy.setWatchlist((List<String>) fraud.get("watchlist"));
            }
            forensiq = fy;
        }
    } else {
        System.out.println("*** NO Fraud detection");
    }
    /**
		 * Deal with the app object
		 */
    m = (Map) m.get("app");
    password = (String) m.get("password");
    if (m.get("threads") != null) {
        RTBServer.threads = (Integer) m.get("threads");
    }
    if (m.get("multibid") != null) {
        multibid = (Boolean) m.get("multibid");
    }
    if (m.get("adminPort") != null) {
        adminPort = (Integer) m.get("adminPort");
    }
    if (m.get("adminSSL") != null) {
        adminSSL = (Boolean) m.get("adminSSL");
    }
    String strategy = (String) m.get("strategy");
    if (strategy != null && strategy.equals("heuristic"))
        RTBServer.strategy = STRATEGY_HEURISTIC;
    else
        RTBServer.strategy = STRATEGY_MAX_CONNECTIONS;
    verbosity = (Map) m.get("verbosity");
    if (verbosity != null) {
        logLevel = (Integer) verbosity.get("level");
        printNoBidReason = (Boolean) verbosity.get("nobid-reason");
    }
    template = (Map) m.get("template");
    if (template == null) {
        throw new Exception("No template defined");
    }
    encodeTemplates();
    encodeTemplateStubs();
    geotags = (Map) m.get("geotags");
    if (geotags != null) {
        String states = (String) geotags.get("states");
        String codes = (String) geotags.get("zipcodes");
        geoTagger.initTags(states, codes);
    }
    Boolean bValue = false;
    bValue = (Boolean) m.get("stopped");
    if (bValue != null && bValue == true) {
        RTBServer.stopped = true;
        pauseOnStart = true;
    }
    Map redis = (Map) m.get("redis");
    if (redis != null) {
        Integer rsize = (Integer) redis.get("pool");
        if (rsize == null)
            rsize = 64;
        String host = (String) redis.get("host");
        Integer rport = (Integer) redis.get("port");
        if (rport == null)
            rport = 6379;
        // JedisPoolConfig poolConfig = new JedisPoolConfig();;
        // configJedis.setMaxTotal(rsize);
        // configJedis.setMaxWaitMillis(10);
        // poolConfig.setMaxIdle(4000);
        // Tests whether connections are dead during idle periods
        // poolConfig.setTestWhileIdle(true);
        // poolConfig.setMaxTotal(4000);
        // poolConfig.setMaxWaitMillis(30);
        // jedisPool = new JedisPool(poolConfig,host,rport);
        MyJedisPool.host = host;
        MyJedisPool.port = rport;
        jedisPool = new MyJedisPool(1000, 1000, 5);
        System.out.println("*** JEDISPOOL = " + jedisPool + ". host = " + host + ", port = " + rport + ", size = " + rsize);
    }
    Map zeromq = (Map) m.get("zeromq");
    String value = null;
    Double dValue = 0.0;
    bValue = false;
    Map r = (Map) m.get("aerospike");
    if (r != null) {
        if ((value = (String) r.get("host")) != null)
            cacheHost = value;
        if (r.get("port") != null)
            cachePort = (Integer) r.get("port");
        if (r.get("maxconns") != null)
            maxconns = (Integer) r.get("maxconns");
        AerospikeHandler.getInstance(cacheHost, cachePort, maxconns);
        redisson = new RedissonClient(AerospikeHandler.getInstance());
        Database.getInstance(redisson);
        System.out.println("*** Aerospike connection set to: " + cacheHost + ":" + cachePort + ", connections = " + maxconns + ", handlers: " + AerospikeHandler.getInstance().getCount() + " ***");
        String key = (String) m.get("deadmanswitch");
        if (key != null) {
            deadmanSwitch = new DeadmanSwitch(redisson, key);
        }
    } else {
        redisson = new RedissonClient();
        Database db = Database.getInstance(redisson);
        readDatabaseIntoCache("database.json");
        readBlackListIntoCache("blacklist.json");
    }
    /**
		 * Zeromq
		 */
    if ((value = (String) zeromq.get("bidchannel")) != null)
        BIDS_CHANNEL = value;
    if ((value = (String) zeromq.get("nobidchannel")) != null)
        NOBIDS_CHANNEL = value;
    if ((value = (String) zeromq.get("winchannel")) != null)
        WINS_CHANNEL = value;
    if ((value = (String) zeromq.get("requests")) != null)
        REQUEST_CHANNEL = value;
    if ((value = (String) zeromq.get("unilogger")) != null)
        UNILOGGER_CHANNEL = value;
    if ((value = (String) zeromq.get("logger")) != null)
        LOG_CHANNEL = value;
    if ((value = (String) zeromq.get("clicks")) != null)
        CLICKS_CHANNEL = value;
    if ((value = (String) zeromq.get("fraud")) != null)
        FORENSIQ_CHANNEL = value;
    if ((value = (String) zeromq.get("responses")) != null)
        RESPONSES = value;
    if ((value = (String) zeromq.get("status")) != null)
        PERF_CHANNEL = value;
    if ((value = (String) zeromq.get("reasons")) != null)
        REASONS_CHANNEL = value;
    Map xx = (Map) zeromq.get("subscribers");
    List<String> list = (List) xx.get("hosts");
    commandsPort = (String) xx.get("commands");
    for (String host : list) {
        String address = "tcp://" + host + ":" + commandsPort + "&commands";
        commandAddresses.add(address);
    }
    if (zeromq.get("requeststrategy") != null) {
        Object obj = zeromq.get("requeststrategy");
        if (obj instanceof String) {
            strategy = (String) zeromq.get("requeststrategy");
            if (strategy.equalsIgnoreCase("all") || strategy.equalsIgnoreCase("requests"))
                requstLogStrategy = REQUEST_STRATEGY_ALL;
            if (strategy.equalsIgnoreCase("bids"))
                requstLogStrategy = REQUEST_STRATEGY_BIDS;
            if (strategy.equalsIgnoreCase("WINS"))
                requstLogStrategy = REQUEST_STRATEGY_WINS;
        } else {
            if (obj instanceof Integer) {
                int level = (Integer) obj;
                ExchangeLogLevel.getInstance().setStdLevel(level);
            } else if (obj instanceof Double) {
                Double perc = (Double) obj;
                ExchangeLogLevel.getInstance().setStdLevel(perc.intValue());
            }
        }
    }
    /********************************************************************/
    campaignsList.clear();
    pixelTrackingUrl = (String) m.get("pixel-tracking-url");
    winUrl = (String) m.get("winurl");
    redirectUrl = (String) m.get("redirect-url");
    if (m.get("ttl") != null) {
        ttl = (Integer) m.get("ttl");
    }
    initialLoadlist = (List<Map>) m.get("campaigns");
    for (Map<String, String> camp : initialLoadlist) {
        if (camp.get("id") != null) {
            addCampaign(camp.get("name"), camp.get("id"));
        } else {
            Controller.getInstance().sendLog(1, "Configuration", "*** ERRORS DETECTED IN INITIAL LOAD OF CAMPAIGNS *** ");
        }
    }
    if (cacheHost == null)
        Controller.getInstance().sendLog(1, "Configuration", "*** NO AEROSPIKE CONFIGURED, USING CACH2K INSTEAD *** ");
    if (winUrl.contains("localhost")) {
        Controller.getInstance().sendLog(1, "Configuration", "*** WIN URL IS SET TO LOCALHOST, NO REMOTE ACCESS WILL WORK FOR WINS ***");
    }
}
Also used : ZkConnect(com.xrtb.tools.ZkConnect) MMDBClient(com.xrtb.fraud.MMDBClient) ObjectListing(com.amazonaws.services.s3.model.ObjectListing) BidRequest(com.xrtb.pojo.BidRequest) ListObjectsRequest(com.amazonaws.services.s3.model.ListObjectsRequest) DeadmanSwitch(com.xrtb.bidder.DeadmanSwitch) Database(com.xrtb.db.Database) List(java.util.List) ArrayList(java.util.ArrayList) Appnexus(com.xrtb.exchanges.appnexus.Appnexus) BasicAWSCredentials(com.amazonaws.auth.BasicAWSCredentials) AmazonS3Client(com.amazonaws.services.s3.AmazonS3Client) RedissonClient(com.aerospike.redisson.RedissonClient) AerospikeHandler(com.aerospike.redisson.AerospikeHandler) S3Object(com.amazonaws.services.s3.model.S3Object) DataBaseObject(com.xrtb.db.DataBaseObject) Map(java.util.Map) NavMap(com.xrtb.blocks.NavMap) HashMap(java.util.HashMap) ForensiqClient(com.xrtb.fraud.ForensiqClient)

Example 2 with BidRequest

use of com.xrtb.pojo.BidRequest in project XRTB by benmfaul.

the class AddShutdownHook method smaatoCompliance.

private void smaatoCompliance(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response, InputStream body) throws Exception {
    String tester = null;
    String json = null;
    BidRequest br = null;
    Enumeration<String> params = request.getParameterNames();
    if (params.hasMoreElements()) {
        String[] dobid = request.getParameterValues(params.nextElement());
        tester = dobid[0];
        System.out.println("=================> SMAATO TEST ====================");
    }
    if (tester == null) {
        System.out.println("              Nothing to Test");
        return;
    }
    if (tester.equals("nobid")) {
        RTBServer.nobid++;
        baseRequest.setHandled(true);
        response.setStatus(RTBServer.NOBID_CODE);
        response.getWriter().println("");
        Controller.getInstance().sendLog(1, "Handler:handle", "SMAATO NO BID TEST ENDPOINT REACHED");
        Controller.getInstance().sendNobid(new NobidResponse(br.id, br.getExchange()));
        return;
    } else {
        BidRequest x = RTBServer.exchanges.get(target);
        x.setExchange("nexage");
        br = x.copy(body);
        Controller.getInstance().sendRequest(br, false);
        Controller.getInstance().sendLog(1, "Handler:handle", "SMAATO MANDATORY BID TEST ENDPOINT REACHED");
        BidResponse bresp = null;
        // if (RTBServer.strategy == Configuration.STRATEGY_HEURISTIC)
        // bresp = CampaignSelector.getInstance().getHeuristic(br); // 93%
        // time
        // here
        // else
        bresp = CampaignSelector.getInstance().getMaxConnections(br);
        // log.add("select");
        if (bresp == null) {
            baseRequest.setHandled(true);
            response.setStatus(RTBServer.NOBID_CODE);
            response.getWriter().println("");
            Controller.getInstance().sendLog(1, "Handler:handle", "SMAATO FORCED BID TEST ENDPOINT FAILED");
            Controller.getInstance().sendNobid(new NobidResponse(br.id, br.getExchange()));
            return;
        }
        json = bresp.toString();
        baseRequest.setHandled(true);
        Controller.getInstance().sendBid(br, bresp);
        Controller.getInstance().recordBid(bresp);
        RTBServer.bid++;
        response.setStatus(RTBServer.BID_CODE);
        response.getWriter().println(json);
        System.out.println("+++++++++++++++++++++ SMAATO REQUEST ++++++++++++++++++++++\n\n" + br.toString() + "\n\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
        System.out.println("===================== SMAATO BID ==========================\n\n" + json + "\n\n==========================================================");
        Controller.getInstance().sendLog(1, "Handler:handle", "SMAATO FORCED BID TEST ENDPOINT REACHED OK");
        return;
    }
/************************************************************************************/
}
Also used : NobidResponse(com.xrtb.pojo.NobidResponse) BidResponse(com.xrtb.pojo.BidResponse) BidRequest(com.xrtb.pojo.BidRequest)

Example 3 with BidRequest

use of com.xrtb.pojo.BidRequest in project XRTB by benmfaul.

the class TestCampaignProcessor method testNoCampaigns.

/**
	 * Test the situation where no campaigns are loaded in the system.
	 * @throws Exception when the bid JSON file fails to load or has a JSON error in it.
	 */
@Test
public void testNoCampaigns() throws Exception {
    InputStream is = Configuration.getInputStream("SampleBids/nexage.txt");
    BidRequest request = new BidRequest(is);
    AbortableCountDownLatch latch = new AbortableCountDownLatch(1, 1);
    CountDownLatch flag = new CountDownLatch(1);
    CampaignProcessor proc = new CampaignProcessor(null, request, flag, latch);
    flag.countDown();
    proc.run();
    SelectedCreative resp = proc.getSelectedCreative();
    // flag.countDown(); // back when proc was a thread
    try {
        latch.await();
        fail("This latch should have aborted");
    } catch (Exception e) {
    }
    assertNull(resp);
}
Also used : AbortableCountDownLatch(com.xrtb.bidder.AbortableCountDownLatch) InputStream(java.io.InputStream) CampaignProcessor(com.xrtb.bidder.CampaignProcessor) SelectedCreative(com.xrtb.bidder.SelectedCreative) AbortableCountDownLatch(com.xrtb.bidder.AbortableCountDownLatch) CountDownLatch(java.util.concurrent.CountDownLatch) BidRequest(com.xrtb.pojo.BidRequest) Test(org.junit.Test)

Example 4 with BidRequest

use of com.xrtb.pojo.BidRequest in project XRTB by benmfaul.

the class TestCampaignProcessor method testOneMatching.

/**
	 * Load a campaign and then use the bidder's campaign processor to make a bid response.
	 * @throws Exception if the config file or the sample bid file fails to load, or they contain JSON errors.
	 */
//	@Test
public void testOneMatching() throws Exception {
    InputStream is = Configuration.getInputStream("SampleBids/nexage.txt");
    BidRequest request = new BidRequest(is);
    Configuration cf = Configuration.getInstance();
    cf.clear();
    cf.initialize("Campaigns/payday.json");
    Campaign c = cf.campaignsList.get(0);
    AbortableCountDownLatch latch = new AbortableCountDownLatch(1, 1);
    CountDownLatch flag = new CountDownLatch(1);
    CampaignProcessor proc = new CampaignProcessor(c, request, flag, latch);
    flag.countDown();
    latch.await();
    SelectedCreative resp = proc.getSelectedCreative();
    assertNotNull(resp);
    assertTrue(resp.getCreative().dimensions.get(0).getLeftX() == 320);
}
Also used : Campaign(com.xrtb.common.Campaign) Configuration(com.xrtb.common.Configuration) AbortableCountDownLatch(com.xrtb.bidder.AbortableCountDownLatch) InputStream(java.io.InputStream) CampaignProcessor(com.xrtb.bidder.CampaignProcessor) SelectedCreative(com.xrtb.bidder.SelectedCreative) AbortableCountDownLatch(com.xrtb.bidder.AbortableCountDownLatch) CountDownLatch(java.util.concurrent.CountDownLatch) BidRequest(com.xrtb.pojo.BidRequest)

Example 5 with BidRequest

use of com.xrtb.pojo.BidRequest in project XRTB by benmfaul.

the class TestNode method makeSimpleCampaign.

/*	@Test
	public void testOs() throws Exception {
		List<String> parts = new ArrayList();
		parts.add("Android");
		Node node = new Node("test","device.os","MEMBER",parts);
		node.notPresentOk = false;
		BufferedReader br = new BufferedReader(new FileReader("../requests"));
		for(String line; (line = br.readLine()) != null; ) {
			BidRequest bidR = new BidRequest(new StringBuilder(line));
			boolean x = node.test(bidR);
			if (x == true) {
				JsonNode os = (JsonNode)bidR.interrogate("device.os");
				if (os.textValue() == null) {
					System.out.println("NULL");
					return;
				}
				assertTrue(os.textValue().equals("Android"));
			}
		}
		
	} */
/**
	 * Trivial test of the payload atributes  
	 * @throws Exception on configuration file errors.
	 */
@Test
public void makeSimpleCampaign() throws Exception {
    BidRequest br = new BidRequest(Configuration.getInputStream("SampleBids/nexage.txt"));
    assertNotNull(br);
    String content = new String(Files.readAllBytes(Paths.get("database.json")));
    List<User> users = DbTools.mapper.readValue(content, DbTools.mapper.getTypeFactory().constructCollectionType(List.class, User.class));
    User u = users.get(0);
    List<Campaign> camps = u.campaigns;
    assertNotNull(camps);
    Campaign c = null;
    for (Campaign x : camps) {
        if (x.adId.equals("ben:payday")) {
            c = x;
            break;
        }
    }
    Node n = c.getAttribute("site.domain");
    assertNotNull(n);
    List<String> list = (List) n.value;
    assertNotNull(list);
    String op = (String) n.op;
    assertTrue(op.equals("NOT_MEMBER"));
}
Also used : User(com.xrtb.db.User) Campaign(com.xrtb.common.Campaign) Node(com.xrtb.common.Node) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayList(java.util.ArrayList) List(java.util.List) BidRequest(com.xrtb.pojo.BidRequest) Test(org.junit.Test)

Aggregations

BidRequest (com.xrtb.pojo.BidRequest)20 Test (org.junit.Test)11 JsonNode (com.fasterxml.jackson.databind.JsonNode)10 Node (com.xrtb.common.Node)10 ArrayList (java.util.ArrayList)8 List (java.util.List)8 Campaign (com.xrtb.common.Campaign)5 InputStream (java.io.InputStream)4 HashMap (java.util.HashMap)4 User (com.xrtb.db.User)3 BidResponse (com.xrtb.pojo.BidResponse)3 BufferedReader (java.io.BufferedReader)3 FileReader (java.io.FileReader)3 Map (java.util.Map)3 AerospikeHandler (com.aerospike.redisson.AerospikeHandler)2 AbortableCountDownLatch (com.xrtb.bidder.AbortableCountDownLatch)2 CampaignProcessor (com.xrtb.bidder.CampaignProcessor)2 SelectedCreative (com.xrtb.bidder.SelectedCreative)2 NobidResponse (com.xrtb.pojo.NobidResponse)2 CountDownLatch (java.util.concurrent.CountDownLatch)2