1 package OpenSRF::Transport::SlimJabber::MessageWrapper;
3 use OpenSRF::EX qw/:try/;
4 use OpenSRF::Utils::Logger qw/$logger/;
8 $class = ref($class) || $class;
17 $doc = XML::LibXML->new->parse_string($xml);
20 warn "MessageWrapper received bad XML : error = $err\nXML = $xml\n";
21 $logger->error("MessageWrapper received bad XML : error = $err : XML = $xml");
25 $msg = $doc->documentElement;
27 $doc = XML::LibXML::Document->createDocument;
28 $msg = $doc->createElement( 'message' );
29 $doc->setDocumentElement( $msg );
33 my $self = { msg_node => $msg };
35 return bless $self => $class;
40 if( $self->{msg_node} ) {
41 return $self->{msg_node}->toString(@_);
48 my ($t_body) = grep {$_->nodeName eq 'body'} $self->{msg_node}->childNodes;
50 my $body = $t_body->textContent;
58 my ($t_node) = grep {$_->nodeName eq 'thread'} $self->{msg_node}->childNodes;
60 return $t_node->textContent;
67 $self->{msg_node}->getAttribute( 'type' );
74 my $rid = $self->{msg_node}->getAttribute( 'router_from' );
77 return $self->{msg_node}->getAttribute( 'from' );
82 $self->{msg_node}->setAttribute( type => shift );
87 $self->{msg_node}->setAttribute( to => shift );
92 $self->{msg_node}->appendTextChild( thread => shift );
98 $self->{msg_node}->appendTextChild( body => $body );
101 sub set_router_command {
102 my( $self, $router_command ) = @_;
103 if( $router_command ) {
104 $self->{msg_node}->setAttribute( router_command => $router_command );
107 sub set_router_class {
108 my( $self, $router_class ) = @_;
109 if( $router_class ) {
110 $self->{msg_node}->setAttribute( router_class => $router_class );
115 my( $self, $xid ) = @_;
116 $self->{msg_node}->setAttribute( osrf_xid => $xid );
122 $self->{msg_node}->getAttribute('osrf_xid');