Package net.solosky.maplefetion.sipc

Examples of net.solosky.maplefetion.sipc.SipcResponse


    {
      //发送注册信息
    SipcRequest request = this.messageFactory.createRegisterChatRequest(credential);
    ResponseFuture future = ResponseFuture.wrap(request);
    this.process(request);
    SipcResponse response = future.waitResponse();
    assertStatus(response.getStatusCode(), SipcStatus.ACTION_OK);
    }
View Full Code Here


  {
    this.ensureOpened();
    SipcRequest request = this.getMessageFactory().createStartChatRequest();
      ResponseFuture future = ResponseFuture.wrap(request);
      this.process(request);
      SipcResponse response = future.waitResponse();
      assertStatus(response.getStatusCode(), SipcStatus.ACTION_OK);
      return response.getHeader(SipcHeader.AUTHORIZATION).getValue();
  }
View Full Code Here

  @Override
  protected Object doProcessIncoming(Object o) throws FetionException
  {
    //-_-!!! , 好吧,我承认这里判断逻辑有点乱。。
    if (o instanceof SipcResponse) {
      SipcResponse response = (SipcResponse) o;
      //先检查这个回复是不是分块回复的一部分
      SliceSipcResponseHelper helper = this.findSliceResponseHelper(response);
      if(helper!=null){
        //如果是分块回复,就添加到分块回复列表中
        helper.addSliceSipcResponse(response);
        if(helper.isFullSipcResponseRecived()){
          synchronized (slicedResponseQueue) {
            slicedResponseQueue.remove(helper);
          }
         
          //构造新的回复
          SipcResponse some = helper.getFullSipcResponse();
          this.handleFullResponse(some);
         
          return some;  //返回新的完整的请求
        }else{
          return null//分块回复还没接收完,返回null停止处理链
View Full Code Here

   * @return
   */
  public boolean isFullSipcResponseRecived()
  {
    if(this.sliceReponseList.size()>0){
      SipcResponse res = this.sliceReponseList.get(this.sliceReponseList.size()-1);
      return res.getStatusCode()!=SipcStatus.PARTIAL;
    }else{
      return false;
    }
  }
View Full Code Here

  {
    //有个问题:这里这么多的分块回复,每个回复都是独立的,那究竟最终的回复是依据第一个还是最后一个呢?
    //这里依据的是最后一个回复
   
    //新建一个回复对象,把最后一个回复的状态和回复消息复制到到新回复对象
    SipcResponse last = this.sliceReponseList.get(this.sliceReponseList.size()-1);
    SipcResponse some = new SipcResponse(last.getStatusCode(), last.getStatusMessage());
   
    //把最后一个回复对象的所有消息头除了Content-Length都复制到新回复对象
    Iterator<SipcHeader> it = last.getHeaders().iterator();
    while(it.hasNext()){
      SipcHeader header = it.next();
      if(!SipcHeader.LENGTH.equals(header.getName())){  //如果不是L域就复制到新的回复头部中
        some.addHeader(header);
      }
    }
   
    //复制所有消息体到新的回复包中
    StringBuffer buffer = new StringBuffer();
    Iterator<SipcResponse> rit = this.sliceReponseList.iterator();
    while(rit.hasNext()){
      SipcResponse res = rit.next();
      if(res.getBody()!=null){
        buffer.append(res.getBody().toSendString());
      }
    }
    some.setBody(new SipcBody(buffer.toString()));
   
    //别忘了设置消息长度,虽然可能用不上。。
View Full Code Here

     * @param head    首行信息
     */
    private boolean readSipcMessage(String headline)
    {
      if(headline.startsWith("SIP-C/")) {
        this.curMessage = new SipcResponse(headline)//SIP-C/2.0 200 OK
     }else {
       this.curMessage = new SipcNotify(headline);    //BN 685592830 SIP-C/2.0
     }

    if(this.readSipcHeaders()) {
View Full Code Here

    {
      SipcRequest request = this.getMessageFactory().createSetGroupPresenceRequest(group.getUri(), Presence.ONLINE);
      this.helper.set(request);
      ResponseFuture future = ResponseFuture.wrap(request);
      this.process(request);
      SipcResponse response = future.waitResponse();
      assertStatus(response.getStatusCode(), SipcStatus.ACTION_OK);
    }
View Full Code Here

    {
      SipcRequest request = this.getMessageFactory().createSubscribeGroupNotifyRequest(this.group.getUri());
      this.helper.set(request);
      ResponseFuture future = ResponseFuture.wrap(request);
      this.process(request);
      SipcResponse response = future.waitResponse();
      assertStatus(response.getStatusCode(), SipcStatus.ACTION_OK);
    }
View Full Code Here

    {
      SipcRequest request = this.getMessageFactory().createLogoutRequest(this.group.getUri());
      this.helper.set(request);
      ResponseFuture future = ResponseFuture.wrap(request);
      this.process(request);
      SipcResponse response = future.waitResponse();
      assertStatus(response.getStatusCode(), SipcStatus.ACTION_OK);
    }
View Full Code Here

TOP

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

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.