Package net.solosky.maplefetion.sipc

Examples of net.solosky.maplefetion.sipc.SipcRequest


   * @param response
   */
  private boolean handleFullResponse(SipcResponse response)
  {
    // 如果是回复的话,查找对应的请求,并通知回复等待对象
    SipcRequest request = this.findRequest(response);
    response.setRequest(request);
   
    //找到了对应的请求,然后判断是否回复已经到了指定的回复次数,如果到了就从队列中移除,如果没有,就不移除
    if(request!=null) {
      request.incReplyTimes();
      if(request.getNeedReplyTimes()==request.getReplyTimes()) {
        synchronized(this.requestQueue) {
          this.requestQueue.remove(request);
        }
      }
    }
View Full Code Here


   * @param m
   * @return
   */
    public SipcRequest createDefaultSipcRequest(String m)
    {
      SipcRequest req = new SipcRequest(m,this.user.getDomain());
      req.addHeader(SipcHeader.FROM, Integer.toString(this.user.getFetionId()));
      if(m.equals(this.lastMethod)) {
        req.addHeader(SipcHeader.CALLID,   Integer.toString(this.globalCallId));
        req.addHeader(SipcHeader.SEQUENCE, Integer.toString(this.getNextSequence())+" "+m);
      }else {
        req.addHeader(SipcHeader.CALLID,   Integer.toString(this.getNextCallID()));
        req.addHeader(SipcHeader.SEQUENCE, "1 "+m);
        this.gloalSequence = 1;
      }
      req.setAliveTime((int) (FetionConfig.getInteger("fetion.sip.default-alive-time")+System.currentTimeMillis()/1000));
      this.lastMethod = m;
      return req;
    }
View Full Code Here

     * 服务器登录请求
     * @return
     */
    public SipcRequest createServerRegisterRequest(int presence, boolean isSupportedMutiConnection)
    {
       SipcRequest req = this.createDefaultSipcRequest(SipcMethod.REGISTER);
       req.addHeader("CN", AuthGeneratorV4.getCnonce());
         req.addHeader("CL", "type=\"pc\" ,version=\""+FetionClient.PROTOCOL_VERSION+"\"");
         return req;
    }
View Full Code Here

     * 用户登录验证
     * @return
     */
    public SipcRequest createUserAuthRequest(SipcHeader wwwHeader, int presence, boolean isSupportedMutiConnection, StoreVersion version)
    {
      SipcRequest  req = this.createDefaultSipcRequest(SipcMethod.REGISTER);
     
      Pattern pt = Pattern.compile("Digest algorithm=\"SHA1-sess-v4\",nonce=\"(.*?)\",key=\"(.*?)\",signature=\"(.*?)\"");
      Matcher mc = pt.matcher(wwwHeader.getValue());
      if(mc.matches()) {
        String passHex = PasswordEncrypterV4.encryptV4(this.user.getUserId(),this.user.getPassword());
        AuthGeneratorV4 auth = new AuthGeneratorV4();
        String aeskey = ConvertHelper.byte2HexStringWithoutSpace(user.getAesKey());
          String response = auth.generate(mc.group(2), passHex, mc.group(1), aeskey);
          String authString ="Digest response=\""+response+"\",algorithm=\"SHA1-sess-v4\"";
          req.addHeader(SipcHeader.AUTHORIZATION, authString);
          req.addHeader("AK", "ak-value");
         
          String body = MessageTemplate.TMPL_USER_AUTH;
          body = body.replace("{machineCode}", FetionConfig.getString("fetion.sip.machine-code"));
          body = body.replace("{sid}", Integer.toString(this.user.getFetionId()));
          body = body.replace("{userId}", Integer.toString(this.user.getUserId()));
          body = body.replace("{presence}", Integer.toString(presence));
          body = body.replace("{personalVersion}", Integer.toString(version.getPersonalVersion()));
          body = body.replace("{contactVersion}", Integer.toString(version.getContactVersion()));
          req.setBody(new SipcBody(body));
         
      }else {
        throw new IllegalStateException("parse wwwHeader failed. wwwHeader="+wwwHeader.getValue());
      }
     
View Full Code Here

     * 获取个人详细信息
     * @return
     */
    public SipcRequest createGetPersonalInfoRequest()
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.SERVICE);
      req.addHeader(SipcHeader.EVENT, "GetPersonalInfo");
      req.setBody(new SipcBody(MessageTemplate.TMPL_GET_PERSONAL_INFO));
     
      return req;
    }
View Full Code Here

    /**
     * 发送在线消息
     */
    public SipcRequest createSendChatMessageRequest(String toUri, Message m)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.MESSAGE);
     
      req.addHeader(SipcHeader.TO, toUri);
      req.addHeader(SipcHeader.CONTENT_TYPE, m.getType());
      req.addHeader(SipcHeader.EVENT, "CatMsg");
     
      req.setBody(new SipcBody(m.getContent()));
     
      return req;
    }
View Full Code Here

     * @param m
     * @return
     */
    public SipcRequest createSendSMSRequest(String uri, Message m)
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.MESSAGE);
     
      req.addHeader(SipcHeader.TO, uri);
      req.addHeader(SipcHeader.EVENT, "SendCatSMS");
     
      req.setBody(new SipcBody(m.getContent()));
     
      return req;
    }
View Full Code Here

     * 保持连接
     * @return
     */
    public SipcRequest createKeepConnectionRequest()
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.OPTION);
      req.addHeader(SipcHeader.EVENT, "KeepConnectionBusy");
      return req;
    }
View Full Code Here

     * 也就是需要每隔一定时间需要注册一次
     * @return
     */
    public SipcRequest createKeepAliveRequest()
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.REGISTER);
      req.addHeader(SipcHeader.EVENT, "KeepAlive");
      req.setBody(new SipcBody(MessageTemplate.TMPL_KEEP_ALIVE));
      return req;
    }
View Full Code Here

    /**
     * 注销登录请求
     */
    public SipcRequest createLogoutRequest()
    {
      SipcRequest req = this.createDefaultSipcRequest(SipcMethod.REGISTER);
      req.addHeader(SipcHeader.EXPIRED, "0");
      return req;
    }
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.