~ubuntu-branches/ubuntu/wily/trafficserver/wily

« back to all changes in this revision

Viewing changes to proxy/InkIOCoreAPI.cc

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-12-17 22:28:16 UTC
  • mfrom: (5.1.8 raring-proposed)
  • Revision ID: package-import@ubuntu.com-20121217222816-7xwjsx5k76zkb63d
Tags: 3.2.0-1ubuntu1
* Revert FreeBSD strerror_r() fixes that give errors with glibc 2.16.
* Apply patch from Konstantinos Margaritis to define barriers on ARM.

Show diffs side-by-side

added added

removed removed

Lines of Context:
95
95
////////////////////////////////////////////////////////////////////
96
96
struct INKThreadInternal:public EThread
97
97
{
98
 
#if !defined (_WIN32)
99
98
  INKThreadInternal()
100
99
    : EThread(DEDICATED, -1)
101
100
  {  }
102
 
#endif
103
101
 
104
102
  TSThreadFunc func;
105
103
  void *data;
129
127
 
130
128
  thread = NEW(new INKThreadInternal);
131
129
 
132
 
#if !defined (_WIN32)
133
130
  ink_assert(thread->event_types == 0);
134
 
#endif
135
131
 
136
132
  thread->func = func;
137
133
  thread->data = data;
358
354
 
359
355
TSAction
360
356
INKUDPBind(TSCont contp, unsigned int ip, int port)
361
 
{
 
357
{  
362
358
  sdk_assert(sdk_sanity_check_continuation(contp) == TS_SUCCESS);
363
 
 
 
359
    
364
360
  FORCE_PLUGIN_MUTEX(contp);
365
 
  return reinterpret_cast<TSAction>(udpNet.UDPBind((Continuation *)contp, port, ip, INK_ETHERNET_MTU_SIZE, INK_ETHERNET_MTU_SIZE));
 
361
 
 
362
  struct sockaddr_in addr;
 
363
  ats_ip4_set(&addr, ip, htons(port));
 
364
  
 
365
  return reinterpret_cast<TSAction>(udpNet.UDPBind((Continuation *)contp, ats_ip_sa_cast(&addr), INK_ETHERNET_MTU_SIZE, INK_ETHERNET_MTU_SIZE));
366
366
}
367
367
 
368
368
TSAction
374
374
  UDPPacket *packet = new_UDPPacket();
375
375
  UDPConnection *conn = (UDPConnection *)udp;
376
376
 
377
 
  packet->to.sin_family = PF_INET;
378
 
  packet->to.sin_port = htons(port);
379
 
  packet->to.sin_addr.s_addr = ip;
 
377
  ats_ip4_set(&packet->to, ip, htons(port));
380
378
 
381
379
  IOBufferBlock *blockp = new_IOBufferBlock();
382
380
  blockp->alloc(BUFFER_SIZE_INDEX_32K);
438
436
  sdk_assert(sdk_sanity_check_null_ptr((void*)packet) == TS_SUCCESS);
439
437
 
440
438
  UDPPacket *p = (UDPPacket *)packet;
441
 
  return (p->from.sin_addr.s_addr);
 
439
  return ats_ip4_addr_cast(&p->from);
442
440
}
443
441
 
444
442
int
447
445
  sdk_assert(sdk_sanity_check_null_ptr((void*)packet) == TS_SUCCESS);
448
446
 
449
447
  UDPPacket *p = (UDPPacket *)packet;
450
 
  return (ntohs(p->from.sin_port));
 
448
  return ats_ip_port_host_order(&p->from);
451
449
}
452
450
 
453
451
INKUDPConn
534
532
  return (TSIOBufferBlock)blk;
535
533
}
536
534
 
537
 
void
538
 
TSIOBufferAppend(TSIOBuffer bufp, TSIOBufferBlock blockp)
539
 
{
540
 
  sdk_assert(sdk_sanity_check_iocore_structure(bufp) == TS_SUCCESS);
541
 
  sdk_assert(sdk_sanity_check_iocore_structure(blockp) == TS_SUCCESS);
542
 
 
543
 
  MIOBuffer *b = (MIOBuffer *)bufp;
544
 
  IOBufferBlock *blk = (IOBufferBlock *)blockp;
545
 
 
546
 
  b->append_block(blk);
547
 
}
548
 
 
549
535
int64_t
550
536
TSIOBufferCopy(TSIOBuffer bufp, TSIOBufferReader readerp, int64_t length, int64_t offset)
551
537
{
588
574
  b->fill(nbytes);
589
575
}
590
576
 
591
 
TSIOBufferData
592
 
TSIOBufferDataCreate(void *data, int64_t size, TSIOBufferDataFlags flags)
593
 
{
594
 
  sdk_assert(sdk_sanity_check_null_ptr((void*)data) == TS_SUCCESS);
595
 
  sdk_assert(size > 0);
596
 
 
597
 
  // simply return error_ptr
598
 
  //ink_assert (size > 0);
599
 
 
600
 
  switch (flags) {
601
 
  case TS_DATA_ALLOCATE:
602
 
    ink_assert(data == NULL);
603
 
    return (TSIOBufferData)new_IOBufferData(iobuffer_size_to_index(size));
604
 
 
605
 
  case TS_DATA_MALLOCED:
606
 
    ink_assert(data != NULL);
607
 
    return (TSIOBufferData)new_xmalloc_IOBufferData(data, size);
608
 
 
609
 
  case TS_DATA_CONSTANT:
610
 
    ink_assert(data != NULL);
611
 
    return (TSIOBufferData)new_constant_IOBufferData(data, size);
612
 
  }
613
 
 
614
 
  sdk_assert(!"Invalid flag");
615
 
  return NULL;
616
 
}
617
 
 
618
 
TSIOBufferBlock
619
 
TSIOBufferBlockCreate(TSIOBufferData datap, int64_t size, int64_t offset)
620
 
{
621
 
  sdk_assert(sdk_sanity_check_iocore_structure(datap) == TS_SUCCESS);
622
 
  sdk_assert((size >= 0) && (offset > 0));
623
 
 
624
 
  IOBufferData *d = (IOBufferData *)datap;
625
 
  return (TSIOBufferBlock)new_IOBufferBlock(d, size, offset);
626
 
}
627
 
 
628
577
// dev API, not exposed
629
578
void
630
579
TSIOBufferBlockDestroy(TSIOBufferBlock blockp)