/[resiprocate]/main/sip/resiprocate/dum/Dialog.cxx
ViewVC logotype

Diff of /main/sip/resiprocate/dum/Dialog.cxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2603 by davidb, Sun Apr 11 23:41:33 2004 UTC revision 2604 by davidb, Sun Apr 11 23:51:48 2004 UTC
# Line 160  Line 160 
160     return mId;     return mId;
161  }  }
162    
163    // !dlb! merge this stub in
164    #if 0
165    void
166    Dialog::dispatch(const SipMessage& msg)
167    {
168       if (msg.isRequest())
169       {
170          switch (request.header(h_RequestLine).getMethod())
171          {
172             // a NOTIFY is the only request that can
173             // create a full dialog (when the 2xx from the
174             // SUBSCRIBE arrives *after* the NOTIFY
175             case NOTIFY :
176                processNotify(msg);
177                break;
178    
179             case REFER:
180                // !jf! wierdo
181                // affects an InvSession and a ServerSubscription
182                break;
183    
184             case SUBSCRIBE:
185                processSubscribe(msg);
186                break;
187    
188             case CANCEL:
189                // should only occur when canceling a re-INVITE
190             case INVITE:  
191                // should only occur for a re-INVITE
192             case ACK:
193             case PRACK:
194             case BYE:
195             case UPDATE:
196             case INFO:
197                processInviteRelated(msg);
198                break;
199            
200             case REGISTER:
201             {
202                assert(0); // already handled
203                break;
204             }
205          
206             case PUBLISH:
207                assert(0);
208                break;                      
209    
210             case MESSAGE:
211             case OPTIONS:
212                assert(0);
213                break;
214            
215             default:
216                assert(0);
217                break;
218          }
219       }
220       else if (msg.isResponse())
221       {
222          
223       }
224       else
225       {
226          assert(0);
227       }
228    }
229    #endif
230    
231  void  void
232  Dialog::dispatch(const SipMessage& msg)  Dialog::dispatch(const SipMessage& msg)
# Line 335  Line 402 
402     }     }
403     else     else
404     {     {
405        throw BaseUsage::Exception("no such client registration session",        throw BaseUsage::Exception("no such client registration",
406                                   __FILE__, __LINE__);                                   __FILE__, __LINE__);
407     }     }
408  }  }
# Line 349  Line 416 
416     }     }
417     else     else
418     {     {
419        throw BaseUsage::Exception("no such server registration session",        throw BaseUsage::Exception("no such server registration",
420                                   __FILE__, __LINE__);                                   __FILE__, __LINE__);
421     }     }
422  }  }
423    
424    ClientPublication::Handle
425  UsageSet  Dialog::findClientPublication()
 Dialog::findOutOfDialogs()  
 {  
     std::list<BaseUsage*>::iterator it = mUsages.begin();  
     BaseUsage *usage;  
     UsageSet usageSet;  
     while (it != mUsages.end())  
426      {      {
427          usage = it.next();     if (mClientPublication)
         if ((dynamic_cast<ClientOutOfDialogReq*>(usage) != null) ||  
             (dynamic_cast<ServerOutOfDialogReq*>(usage) != null))  
428          {          {
429              usageSet.push_back(*usage);        return mClientPublication->getHandle();
430          }          }
431       else
432       {
433          throw BaseUsage::Exception("no such client publication",
434                                     __FILE__, __LINE__);
435      }      }
     return usageSet:  
436  }  }
437    
438  void  ServerPublication::Handle
439  Dialog::dispatch(const SipMessage& msg)  Dialog::findServerPublication()
440  {  {
441     if (msg.isRequest())     if (mServerPublication)
442     {     {
443        switch (request.header(h_RequestLine).getMethod())        return mServerPublication->getHandle();
444       }
445       else
446        {        {
447           // a NOTIFY is the only request that can        throw BaseUsage::Exception("no such server publication",
448           // create a full dialog (when the 2xx from the                                   __FILE__, __LINE__);
449           // SUBSCRIBE arrives *after* the NOTIFY     }
450           case NOTIFY :  }
             processNotify(msg);  
             break;  
   
          case REFER:  
             // !jf! wierdo  
             // affects an InvSession and a ServerSubscription  
             break;  
   
          case SUBSCRIBE:  
             processSubscribe(msg);  
             break;  
   
          case CANCEL:  
             // should only occur when canceling a re-INVITE  
          case INVITE:    
             // should only occur for a re-INVITE  
          case ACK:  
          case PRACK:  
          case BYE:  
          case UPDATE:  
          case INFO:  
             processInviteRelated(msg);  
             break;  
451                    
452           case REGISTER:  ClientOutOfDialogReq::Handle
453    Dialog::findClientOutOfDialog()
454           {           {
455              assert(0); // already handled     if (mClientOutOfDialogReq)
456              break;     {
457          return mClientOutOfDialogReq->getHandle();
458           }           }
459             else
460           case PUBLISH:     {
461              assert(0);        throw BaseUsage::Exception("no such client out of dialog",
462              break;                                                         __FILE__, __LINE__);
   
          case MESSAGE:  
          case OPTIONS:  
             assert(0);  
             break;  
           
          default:  
             assert(0);  
             break;  
463        }        }
464     }     }
    else if (msg.isResponse())  
    {  
465                
466    ServerOutOfDialogReq::Handle
467    Dialog::findServerOutOfDialog()
468    {
469       if (mServerOutOfDialogReq)
470       {
471          return mServerOutOfDialogReq->getHandle();
472     }     }
473     else     else
474     {     {
475        assert(0);        throw BaseUsage::Exception("no such server out of dialog",
476                                     __FILE__, __LINE__);
477     }     }
478  }  }
479    
480    #if 0
481  void  void
482  Dialog::processNotify(const SipMessage& notify)  Dialog::processNotify(const SipMessage& notify)
483  {  {
# Line 502  Line 542 
542        }        }
543     }     }
544  }  }
545    #endif
546    
547  Dialog::Exception::Exception(const Data& msg, const Data& file, int line)  Dialog::Exception::Exception(const Data& msg, const Data& file, int line)
548     : BaseException(msg, file, line)     : BaseException(msg, file, line)

Legend:
Removed from v.2603  
changed lines
  Added in v.2604

webmaster AT resiprocate DOT org
ViewVC Help
Powered by ViewVC 1.1.27