Package net.solosky.maplefetion.sipc

Examples of net.solosky.maplefetion.sipc.SipcRequest


    /**
     * 获取定时短信列表
     */
    public SipcRequest createGetScheduleSMSListRequest(int localVersion)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "SSGetScheduleSmsList");
     
      String body = MessageTemplate.TMPL_GET_SCHEDULE_SMS_LIST;
      body = body.replace("{version}", Integer.toString(localVersion));
      req.setBody(new SipcBody(body));
     
      return req;
    }
View Full Code Here


    /**
     * 获取定时短信的详细信息
     */
    public SipcRequest createGetScheduleSMSInfo(Collection<ScheduleSMS> scheduleSMSList)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "SSGetScheduleSms");
     
      String body = MessageTemplate.TMPL_DELETE_SCHEDULE_SMS;
     
      String scheduleSMSTmpl = "<schedule-sms id=\"{id}\" />";
      StringBuffer buffer = new StringBuffer();
      Iterator<ScheduleSMS> it = scheduleSMSList.iterator();
      while(it.hasNext()){
        ScheduleSMS s = it.next();
        buffer.append(scheduleSMSTmpl.replace("{id}", Long.toString(s.getId())));
      }
      body = body.replace("{scheduleSMSList}", buffer.toString());
     
      req.setBody(new SipcBody(body));
      return req;
    }
View Full Code Here

    /**
     * 创建定时短信
     */
    public SipcRequest createCreateScheduleSMSRequest(Date sendDate, Message message, Collection<Buddy> receiverList)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "SSSetScheduleCatSms");
     
      String body = MessageTemplate.TMPL_CREATE_SCHEDULE_SMS;
      SimpleDateFormat df = new SimpleDateFormat("yyyy-M-d H:m:s");
      df.setTimeZone(TimeZone.getTimeZone("GMT 0"));
      body = body.replace("{sendDate}", df.format(sendDate));
      body = body.replace("{message}", StringHelper.qouteHtmlSpecialChars(message.getContent()));
     
      String receiverTmpl = "<receiver uri=\"{uri}\" />";
      StringBuffer buffer = new StringBuffer();
      Iterator<Buddy> it = receiverList.iterator();
      while(it.hasNext()){
        Buddy b = it.next();
        buffer.append(receiverTmpl.replace("{uri}", b.getUri()));
      }
      body = body.replace("{receiverList}", buffer.toString());
     
      req.setBody(new SipcBody(body));
      return req;
    }
View Full Code Here

    /**
     * 删除定时短信
     */
    public SipcRequest createDeleteScheduleSMSRequest(Collection<ScheduleSMS> scheduleSMSList)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "SSDeleteScheduleSms");
     
      String body = MessageTemplate.TMPL_DELETE_SCHEDULE_SMS;
     
      String scheduleSMSTmpl = "<schedule-sms id=\"{id}\" />";
      StringBuffer buffer = new StringBuffer();
      Iterator<ScheduleSMS> it = scheduleSMSList.iterator();
      while(it.hasNext()){
        ScheduleSMS s = it.next();
        buffer.append(scheduleSMSTmpl.replace("{id}", Long.toString(s.getId())));
      }
      body = body.replace("{scheduleSMSList}", buffer.toString());
     
      req.setBody(new SipcBody(body));
      return req;
    }
View Full Code Here

    /**
     * 将好友移到黑名单中
     */
    public SipcRequest createAddBuddyToBlackList(String uri)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "AddToBlacklist");
      req.setBody(new SipcBody(MessageTemplate.TMPL_ADD_TO_BLACKLIST.replace("{uri}", uri)));
      return req;
    }
View Full Code Here

    /**
     * 将好友从黑名单移除
     */
    public SipcRequest createRemoveBuddyFromBlackList(int userId)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "RemoveFromBlacklistV4");
      req.setBody(new SipcBody(MessageTemplate.TMPL_REMOVE_FROM_BLACKLIST.replace("{userId}", Integer.toString(userId))));
      return req;
    }
View Full Code Here

   */
  @Override
  protected Object doProcessOutcoming(Object o) throws FetionException
  {
    if (o instanceof SipcRequest) {
      SipcRequest request = (SipcRequest) o;
      //判断需要回复次数大于0才放人队列中
      if(request.getNeedReplyTimes()>0) {
        synchronized(this.requestQueue) {
          this.requestQueue.add(request);
        }
      }
    }
View Full Code Here

      this.context.getFetionTimer().clearCanceledTask();
      //通知当前发送队列中的请求都超时
      synchronized (requestQueue) {
        Iterator<SipcRequest> it = this.requestQueue.iterator();
          while(it.hasNext()) {
            SipcRequest request = it.next();
            ResponseHandler handler = request.getResponseHandler();
            if(handler!=null) {
              if(ex==null){
                handler.timeout(request);
              }else if(ex instanceof TransferException){
                handler.ioerror(request);
View Full Code Here

   */
  public SipcRequest findRequest(SipcResponse response)
  {
    synchronized(this.requestQueue) {
        Iterator<SipcRequest> it = this.requestQueue.iterator();
        SipcRequest request = null;
        String resCallID = response.getHeader(SipcHeader.CALLID).getValue();
        String resSequence = response.getHeader(SipcHeader.SEQUENCE).getValue();
        String reqCallID = null;
        String reqSequence = null;
        while (it.hasNext()) {
          request = it.next();
          reqCallID = request.getHeader(SipcHeader.CALLID).getValue();
          reqSequence = request.getHeader(SipcHeader.SEQUENCE).getValue();
          //如果callID和sequence都相等的话就找到了指定的请求
          if (resCallID.equals(reqCallID) && resSequence.equals(reqSequence)) {
            return request;
          }
        }
View Full Code Here

      ArrayList<SipcRequest> timeoutList = new ArrayList<SipcRequest>();    //超时的包的列表
      Iterator<SipcRequest> it = this.requestQueue.iterator();
     
      //首先把超时的包找出来
      while(it.hasNext()){
        SipcRequest request = it.next();
        if(request.getAliveTime()<curTime){        //超过了存活期,
          //因为这里如果判断超时并重发,这个包会重新添加到队列中,当前迭代的列表会增加元素,迭代器就会抛出更改异常
          //所以这里重新建立了一个超时列表,并把超时的包放入列表中,在当前迭代结束后才处理超时包
          it.remove();              //先从队列中移除
          timeoutList.add(request);        //添加到重发包列表
        }else{
          //未超过存活期,啥也不干
        }
      }
     
      //遍历超时包列表,并根据条件判断是否重发或者通知超时
      it = timeoutList.iterator();
      while(it.hasNext()){
        SipcRequest request = it.next();
        if(request.getRetryTimes()<maxTryTimes){    //重发次数未超过指定的次数,重新发送这个包
          logger.debug("Request was timeout, now sending it again... Request="+request);
          request.incRetryTimes();          //递增重试次数
          request.setAliveTime(curTime+aliveTime)//更新存活时间
          this.processOutcoming(request);        // 重新发送这个包
        }else{                      //这个包已经超过重发次数,通知超时
          logger.warn("A request was sent three times, handle this timeout exception...Request="+request);
          this.handleRequestTimeout(request);
        }
View Full Code Here

TOP

Related Classes of net.solosky.maplefetion.sipc.SipcRequest

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.