Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 310744
Collapse All | Expand All

(-)routerproc.cpp (revision 1843) (-1 / +1 lines)
Lines 62-68 Link Here
62
    Message *msg = NULL;
62
    Message *msg = NULL;
63
    msg = inQueue->consume();
63
    msg = inQueue->consume();
64
    
64
    
65
    if (msg && (msg->getType() == Message::SEGMENT) && (msg->getFilterID() == SCI_ROUTE_SEGMENT)) {
65
    if (msg && (msg->getType() == Message::SEGMENT) && (msg->getFilterID() == SCI_JOIN_SEGMENT)) {
66
        int segnum = msg->getID() - 1; // exclude the SEGMENT header
66
        int segnum = msg->getID() - 1; // exclude the SEGMENT header
67
        Message **segments = (Message **)::malloc(segnum * sizeof(Message *));
67
        Message **segments = (Message **)::malloc(segnum * sizeof(Message *));
68
        inQueue->remove();
68
        inQueue->remove();
(-)routinglist.cpp (revision 1843) (-7 / +11 lines)
Lines 58-68 Link Here
58
}
58
}
59
59
60
RoutingList::RoutingList()
60
RoutingList::RoutingList()
61
    : maxSegmentSize(TCP_ETHERNET_MTU * 32)
61
{
62
{
62
    int hndl = gCtrlBlock->getMyHandle();
63
    int hndl = gCtrlBlock->getMyHandle();
63
    char *envp = ::getenv("SCI_SEGMENT_SIZE");
64
    char *envp = ::getenv("SCI_SEGMENT_SIZE");
64
    if ((envp == NULL) || ((maxSegmentSize = ::atoi(envp)) <= TCP_ETHERNET_MTU))
65
    if (envp != NULL) {
65
        maxSegmentSize = TCP_ETHERNET_MTU * 32;
66
        maxSegmentSize = atoi(envp);
67
        maxSegmentSize = maxSegmentSize > TCP_ETHERNET_MTU ? maxSegmentSize : TCP_ETHERNET_MTU * 32;
68
    }
66
69
67
    if (hndl == -1) {
70
    if (hndl == -1) {
68
        // this is a front end, not parent
71
        // this is a front end, not parent
Lines 208-230 Link Here
208
    sci_group_t gid = msg->getGroup();
211
    sci_group_t gid = msg->getGroup();
209
    Message::Type typ = msg->getType();
212
    Message::Type typ = msg->getType();
210
    int mid = msg->getID();
213
    int mid = msg->getID();
211
    int fid = msg->getFilterID();
214
    int mfid = msg->getFilterID();
215
    int hfid = mfid;
212
    int mlen = msg->getContentLen();
216
    int mlen = msg->getContentLen();
213
    *segments = (Message **)::malloc(segnum * sizeof(Message *));
217
    *segments = (Message **)::malloc(segnum * sizeof(Message *));
214
    Message **segs = *segments;
218
    Message **segs = *segments;
215
219
216
    if ((fid != SCI_FILTER_NULL) || (typ != Message::COMMAND)) {
220
    if ((mfid != SCI_FILTER_NULL) || (typ != Message::COMMAND)) {
217
        fid = SCI_ROUTE_SEGMENT;
221
        hfid = SCI_JOIN_SEGMENT;
218
    }
222
    }
219
    ::memset(segs, 0, segnum * sizeof(Message *));
223
    ::memset(segs, 0, segnum * sizeof(Message *));
220
    segs[0] = new Message();
224
    segs[0] = new Message();
221
    segs[0]->build(fid, gid, 0, NULL, NULL, Message::SEGMENT, segnum);
225
    segs[0]->build(hfid, gid, 0, NULL, NULL, Message::SEGMENT, segnum);
222
    segs[0]->setRefCount(ref);
226
    segs[0]->setRefCount(ref);
223
227
224
    for (i = 1; i < segnum; i++) {
228
    for (i = 1; i < segnum; i++) {
225
        segs[i] = new Message();
229
        segs[i] = new Message();
226
        size = (i < (segnum - 1)) ? maxSegmentSize : (mlen % maxSegmentSize);
230
        size = (i < (segnum - 1)) ? maxSegmentSize : (mlen % maxSegmentSize);
227
        segs[i]->build(fid, gid, 1, &ptr, &size, typ, mid);
231
        segs[i]->build(mfid, gid, 1, &ptr, &size, typ, mid);
228
        segs[i]->setRefCount(ref);
232
        segs[i]->setRefCount(ref);
229
        ptr += size;
233
        ptr += size;
230
    }
234
    }
(-)routinglist.hpp (revision 1843) (-1 / +1 lines)
Lines 33-39 Link Here
33
class DistributedGroup;
33
class DistributedGroup;
34
class Stream;
34
class Stream;
35
35
36
#define SCI_ROUTE_SEGMENT -1001
36
#define SCI_JOIN_SEGMENT -1001
37
37
38
38
39
class RoutingList
39
class RoutingList

Return to bug 310744